BigQuery REPEATED 字段包含

Posted

技术标签:

【中文标题】BigQuery REPEATED 字段包含【英文标题】:BigQuery REPEATED field contains 【发布时间】:2016-07-09 00:31:22 【问题描述】:

有没有办法检查 BigQuery REPEATED 字段是否包含特定值?

我正在尝试做类似的事情:

SELECT CASE WHEN column1 CONTAINS ("Test Value") THEN 1 ELSE 0 END FROM testdata

当 column1 是 REPEATED 模式的 STRING 类型字段时。 我有多个相同性质的 REPEATED 列,因此必须将它们全部展平似乎很乏味。

【问题讨论】:

【参考方案1】:

下面试试

SELECT 
  id_or_whatever_key_column_you_have, 
  SUM(CASE 
        WHEN column1 CONTAINS ("Test Value") THEN 1 
        ELSE 0 END
     ) WITHIN RECORD AS matches
FROM testdata

我意识到-从您的示例中复制/粘贴时,我留下了一些可以删除而不会丢失结果的额外内容-因此它不仅可以告诉您是否有匹配项(真/假),而且还可以为您提供匹配项的计数每条记录:

SELECT 
  id_or_whatever_key_column_you_have, 
  SUM(column1 CONTAINS ("Test Value")) WITHIN RECORD AS matches
FROM testdata

我认为丹尼的回答在我的脑海中引发了这一点:o)

【讨论】:

【参考方案2】:

您可以使用SOME 来完成此操作,例如

SELECT SOME(column1 CONTAINS ("Test Value")) WITHIN RECORD FROM testdata

【讨论】:

以上是关于BigQuery REPEATED 字段包含的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中的字段可以具有 NULLABLE 和 REPEATED 模式吗?

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

在 BigQuery 中嵌套多个重复字段

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

按 bigquery 中的 REPEATED 值过滤

Python 列表到 BigQuery 重复字符串