Google bigquery 查询嵌套的可重复记录
如果我有一个模式,其中一个表有一个可重复记录“age”,并且该可重复记录的结构是: {年龄:28} 是否可以发出查询以搜索行的“age”记录包含“age=28和age=56”的所有行 因此,在这些数据中: [id=1,年龄:[{age:28},{age:56},{age:62}] [id=2,年龄:[{age:28}]] [id=3,年龄:[{age:28},{age:56}] 只有第1行和第3行返回Google bigquery 查询嵌套的可重复记录,google-bigquery,Google Bigquery,如果我有一个模式,其中一个表有一个可重复记录“age”,并且该可重复记录的结构是: {年龄:28} 是否可以发出查询以搜索行的“age”记录包含“age=28和age=56”的所有行 因此,在这些数据中: [id=1,年龄:[{age:28},{age:56},{age:62}] [id=2,年龄:[{age:28}]] [id=3,年龄:[{age:28},{age:56}] 只有第1行和第3行返回 提前感谢。假设记录中没有重复的年龄 您的桌子如下所示 id age 1 28
提前感谢。假设记录中没有重复的年龄
您的桌子如下所示
id age
1 28
56
62
2 28
3 28
56
对于BigQuery遗留SQL
SELECT *
FROM YourTable
OMIT RECORD IF SUM(age=28 OR age=56) <> 2
对于BigQuery标准SQL(请参阅)
谢谢你。刚刚尝试过,它会对整个表进行完整扫描,需要很长时间,而不是从表中选择*其中age.age=28?我不确定我是否理解您的意思-您的查询也会进行完整扫描!关于这件事你没什么问题。对吗?答案反映了一个问题:o)对不起,米哈伊尔,我不确定我是否清楚。我如何查询包含年龄为28岁的记录和年龄为56岁的记录的行。即,它必须匹配两个记录(而不是OR)。
SELECT *,
SUM(age=28 OR age=56) WITHIN RECORD AS qualify
FROM YourTable
HAVING qualify = 2
SELECT *
FROM YourTable
WHERE (SELECT COUNT(1)
FROM UNNEST(age) AS a
WHERE a = 28 OR a = 56
) = 2