Google bigquery 在BigQuery中查询重复的键值字段

Google bigquery 在BigQuery中查询重复的键值字段,google-bigquery,Google Bigquery,也许我没有得到明显的答案,但我没有得到正确的答案 我有多个键值对,每个数据行重复数据,例如: {row1:data1,row2:data2,row3:{key1:value1,key2:value2},row4:{key1A:value1A,key2A:value2A} 我尝试获取第3行中设置了key1的所有记录的值1。与第4行相同,因此如果设置了key2A,则获取相应的值 我希望我正确地描述了我的问题 编辑: 为了更好地理解,以下是一个数据行的示例模式: { exrow:示例数据, 日期:20

也许我没有得到明显的答案,但我没有得到正确的答案

我有多个键值对,每个数据行重复数据,例如: {row1:data1,row2:data2,row3:{key1:value1,key2:value2},row4:{key1A:value1A,key2A:value2A}

我尝试获取第3行中设置了key1的所有记录的值1。与第4行相同,因此如果设置了key2A,则获取相应的值

我希望我正确地描述了我的问题

编辑: 为了更好地理解,以下是一个数据行的示例模式:

{ exrow:示例数据, 日期:2017-08-07, 你好:[ 光盘:[ {索引:1,值:car}, {索引:2,值:boat}, {索引:3,值:绿色}, {索引:4,值:蓝色} ], [...] ], [...] }

因此,“hi”和“cd”被记录、重复

因此,我尝试得到以下结果行: 示例数据| 2017-08-07 |船|蓝

该查询(仅用于理解)将是:

挑选 埃克斯罗, 日期 选择hi.cd.value,其中hi.cd.index=2, 选择hi.cd.value,其中hi.cd.index=4 从…起 桌子

所以我试图查询两个重复的嵌套?具有相应条件的数据行


我希望我现在能解释得更好。

根据提供的数据,我的最佳猜测是:

#standardSQL
WITH table AS (
 SELECT [STRUCT('key1' AS key,2 AS value), ('key2', 3), ('key3', 8)] arr
)

SELECT (SELECT value FROM UNNEST(arr) WHERE key='key2') result
FROM `table`
WHERE EXISTS(SELECT value FROM UNNEST(arr) WHERE key='key3' AND value=8)

您可以查看以下一个:

SELECT
address.emailAddress, address.options.changeSource, address.options.type
from addresses.address
where address.options.type="main" or address.options.type="second"
group by address.emailAddress, address.options.changeSource, address.options.type
地址、电子邮件地址和选项是重复的字段

所以,我们处理重复字段的第一个选择就是分组

您可以使用的第二个选项是展平

有关更多信息,我推荐大查询参考-非常有用


不清楚-您的表的模式是什么?我编辑了我的帖子,并试图更好地解释它。您提供的模式很可能不正确,因为BigQuery中的数组类型不支持嵌套数组-我还不太了解它,因此,我编辑了我的文章,并试图更好地解释它。我设法通过连接和展平的组合解决了我的问题。但你的评论是我走上正轨的原因。谢谢谢谢,我通过连接和展平的组合解决了我的问题。