首页 > 解决方案 > BigQuery - 在标准 SQL 中查询嵌套字段

问题描述

我在 BigQuery 中有以下架构:

架构:

整个表格如下所示:

SELECT * FROM `...nested`

在此处输入图像描述

我现在只想查询所有带有标题为“Hello”的注释的行,而我正在想如何做到这一点。

SELECT * FROM `...nested` WHERE comments.title = 'Hello'
# Error: Cannot access field title on a value with type ARRAY<STRUCT<title STRING, message STRING>> at [1:69]

SELECT * FROM `...nested` WHERE comments.title IN ('Hello')
# Error: Cannot access field title on a value with type ARRAY<STRUCT<title STRING, message STRING>> at [1:69]

comments.title CONTAINS "Hello" 似乎是可用的旧版 SQL,所以我想知道等价物是什么。

标签: google-bigquery

解决方案


试试这个:

SELECT *
FROM dataset.nested
WHERE EXISTS (
  SELECT 1 FROM UNNEST(comments)
  WHERE title = 'Hello'
)

这将返回至少一条评论的标题为 Hello 的所有行。例如,您还可以使用LIKE代替相等来查找子字符串。有关使用数组的更多信息,请参阅相关文档


推荐阅读