【问题标题】:How to extract record using multiple filter to Array如何使用多个过滤器将记录提取到数组
【发布时间】:2019-02-01 13:58:28
【问题描述】:

GoogleCloudBigquery 上有一个如下表。

id:1, arr_val: [{"a":"111"},{"a":"222"},{"a":"333"}]
id:2, arr_val: [{"a":"000"},{"a":"222"},{"a":"333"}]
id:2, arr_val: [{"a":"111"},{"a":"444"},{"a":"555"}]
...

我想搜索具有 {"a":111} 和 {"a":222} 的记录。

在上面的示例中,我希望提取 id1。

我在下面尝试过

SELECT
  arr_val
FROM
  "TableName",
  UNNEST(arr_val) AS line
WHERE
  REGEXP_CONTAINS(line.a, r"....") )
and
  REGEXP_CONTAINS(line.a, r"....") )

如果 WHERE 条件是一个条件,则查询是每个条件。

但是,当 WHERE 条件为 2 时,效果不好。

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    以下是 BigQuery 标准 SQL

    #standardSQL
    SELECT id, arr_val
    FROM `project.dataset.table` t
    WHERE 2 = (SELECT COUNT(DISTINCT a) FROM t.arr_val line WHERE a IN (111, 222))
    

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 2021-08-25
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2021-03-07
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多