按 bigquery 中的 REPEATED 值过滤

Posted

技术标签:

【中文标题】按 bigquery 中的 REPEATED 值过滤【英文标题】:Filter by REPEATED values in bigquery 【发布时间】:2021-11-17 12:54:56 【问题描述】:

如何使用 AND 条件过滤 bigquery 中的重复值 例如

当 B 列同时包含 11 和 22 时,我想从 A 列中选择值

如果 11 或 22 存在,下面的查询会告诉我,但我需要 AND 所以我应该得到测试 1 和测试 2,而不是测试 3

SELECT columnA, columnB
FROM table CROSS JOIN UNNEST (columnB) as b
Where B in (11,22)

【问题讨论】:

【参考方案1】:

查看Scanning for values that satisfy a condition:

SELECT columnA, columnB
FROM table
WHERE EXISTS(SELECT * FROM UNNEST(columnB) AS b WHERE b = 11)
    AND EXISTS(SELECT * FROM UNNEST(columnB) AS b WHERE b = 22)

【讨论】:

【参考方案2】:

另一种选择

select * 
from table t
where 2 = (
  select count(distinct val) 
  from t.ColumnB val 
  where val in (11,22)
)       

如果应用于您问题中的样本数据 - 输出是

【讨论】:

以上是关于按 bigquery 中的 REPEATED 值过滤的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:如何将字段添加到 REPEATED 记录?

BigQuery REPEATED 字段包含

BigQuery MERGE 查询不适用于空的 REPEATED 字段

使用 Flatten 从包含多个嵌套变量的 bigquery 表中选择 where var1 (non-repeated) = "abc"?

对 BigQuery 中的重复字段求和

在 BigQuery 中嵌套多个重复字段