BigQuery SQL如何提取结构体数组中指定字段的全量唯一值
BigQuery 提取数组结构体指定字段去重实现方案
核心实现SQL
将下面语句中的项目、数据集、表名替换为你自己的实际资源即可:
SELECT DISTINCT struct_item.a AS a FROM `your_project.your_dataset.your_table_name`, UNNEST(Data) AS struct_item -- 可选:如果需要过滤a为NULL的情况可以打开下面注释 -- WHERE struct_item.a IS NOT NULL ORDER BY a
逻辑说明
- 用
UNNEST(Data)将每行的结构体数组拆分为多行,每行对应原数组里的单个结构体,别名设为struct_item - 直接提取
struct_item.a即可拿到所有结构体中的a字段值 - 通过
DISTINCT关键字对所有a值全局去重 - 末尾的
ORDER BY a可以让输出结果按升序排列,不需要可直接删除
效果验证
用你给出的示例测试:
原表共2行数据,第一行Data数组拆分为2个结构体,提取a值为1、3;第二行Data数组拆分后提取a值为5、6,去重后最终输出结果为1、3、5、6,完全匹配预期。
内容的提问来源于stack exchange,提问作者kaashmonee
相关产品推荐
相关产品推荐

