我想知道 BigQuery 中 Array_contains 的类似功能。我正在尝试获取 Array of Struct 字段中存在的多个值的结果

Posted

技术标签:

【中文标题】我想知道 BigQuery 中 Array_contains 的类似功能。我正在尝试获取 Array of Struct 字段中存在的多个值的结果【英文标题】:I want to know a similar function for Array_contains in BigQuery. I am trying to get results for multiple values present in Array of Struct field 【发布时间】:2021-12-21 11:31:37 【问题描述】:

我有一个 Struct 字段数组,其中包含以下值 - field_name= [1,2,3,4] 我想识别 BigQuery 中 field_name 不包含值 2 或 3 的行

示例数据:假设我有 4 行数据: row_id = 1 , field_name = [1,2,3,4] row_id = 2 , field_name = [1,2] row_id = 3 , field_name = [3,4] row_id = 4 , field_name = [4]

我想要什么 - 预期结果:row_id = 4 , field_name = [4] 我尝试使用 UNNEST 和 EXISTS,UNNEST 给出的输出为 row_id = 1、row_id = 2、row_id = 3 & row_id = 4

【问题讨论】:

【参考方案1】:

考虑以下方法

select * from your_table t 
where not exists (
  select value 
  from t.field_name as value
  where value in (2,3)
)           

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

如果你会使用where value in (1,2) - 输出是

【讨论】:

以上是关于我想知道 BigQuery 中 Array_contains 的类似功能。我正在尝试获取 Array of Struct 字段中存在的多个值的结果的主要内容,如果未能解决你的问题,请参考以下文章

在 Cloud SQL 中插入 bigquery 结果

如何授权 Lambda 函数发布到 BigQuery?

用于将数据从谷歌电子表格加载到 bigquery 的独立脚本

BigQuery 中是不是有自动增量功能?

如何在 BigQuery 中手动强制报告运行?

获取 BigQuery 中最新行的属性?