BigQuery SQL 中未嵌套数组的字符串函数

Posted

技术标签:

【中文标题】BigQuery SQL 中未嵌套数组的字符串函数【英文标题】:String Functions on Unnested Arrays in BigQuery SQL 【发布时间】:2021-12-29 15:13:42 【问题描述】:

我正在尝试查找其中一个数组项包含值的所有行实例,忽略 Google BigQuery 中的大小写。

我能做到:

SELECT
  COUNT(*)
FROM
  `my_bq_project.my_bq_dataset.my_table`
WHERE
  (
      'AAA' IN UNNEST(array_1.array_2.some_text)
  )

这适用于在array_1.array_2.some_text 中查找'AAA'。但是我也想找到'aaa''Aaa'等等。

但这不起作用:

SELECT
  COUNT(*)
FROM
  `my_bq_project.my_bq_dataset.my_table`
WHERE
  (
      'AAA' IN UNNEST(LOWER(array_1.array_2.some_text))
  )

我想避免重复 where 语句(为'AaA''aaa' 等添加 where 条件)。

有没有办法在 BigQuery SQL 的数组中的结构字段上应用 LOWER 之类的字符串函数?

谢谢

【问题讨论】:

【参考方案1】:

试试下面的方法

SELECT
  COUNT(*)
FROM
  `my_bq_project.my_bq_dataset.my_table`
WHERE LOWER('AAA') IN (
  SELECT LOWER(some_text)
  FROM UNNEST(array_1) a, UNNEST(a.array_2)
)

【讨论】:

很高兴它对你有用。然后考虑投票赞成答案:o)

以上是关于BigQuery SQL 中未嵌套数组的字符串函数的主要内容,如果未能解决你的问题,请参考以下文章

处理 BigQuery 中未嵌套记录导致的重复行的最佳做法?

如何在 BigQuery 标准 SQL 中取消嵌套多个数组

将数组保存到 BigQuery

Athena 在另一个 json 结构数组中未嵌套 json 字符串数组

如何在存储为字符串的 bigquery 字段中取消嵌套多个数组?

在 BigQuery 中取消嵌套 JSON 字符串化数组