Google bigquery 查询嵌套的可重复记录

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

如果我有一个模式,其中一个表有一个可重复记录“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  
     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