繁体   English   中英

如何从 BigQuery 嵌套记录类型中获取值

[英]How to get values from BigQuery nested Record type

我有一个 BQ 表,其中有一列RECORD类型,如下所示:

tags
 |_ sub_tags

当我做:

SELECT tags.sub_tags FROM `MY_TABLE`

我明白了:

sub_tags.array_element
1个 :某物
:something_else
搞什么鬼
2个 更多东西
3个 and_more_stuff

如何获取值或检查:something是否存在于STRUCT中?

看看这些解决方案是否有帮助:假定您的源表中有一个带有 tags.sub_tags 的结构。

WITH yourTable AS (
  SELECT struct(['one', 'two','three'] AS sub_tags) as tags 
  union all 
  SELECT struct(['one', 'four','three'] AS sub_tags) as tags 

) 
SELECT * FROM `yourTable` 
where 'two' in unnest(tags.sub_tags) 

SELECT * except(value) FROM `yourTable`, unnest(tags.sub_tags) as value 
where value = 'two'

这些是 arrays 的一些很好的参考: https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays

使用下面的简单方法

select *
from your_table
where contains_substr(tags.sub_tags, ':something')            

如果应用于您问题中的示例数据 - output 是

在此处输入图像描述

虽然此解决方案适用于您的特定简单案例 - Pratik 提供的解决方案可以涵盖更复杂的场景

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM