BigQuery - 在标准 SQL 中查询嵌套字段

use*_*945 7 google-bigquery

我在 BigQuery 中有以下架构:

架构:

整个表格如下所示:

SELECT * FROM `...nested`
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我现在只想查询所有带有标题为“你好”的评论的行,我正在思考如何做到这一点。

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]
Run Code Online (Sandbox Code Playgroud)

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

Ell*_*ard 6

尝试这个:

SELECT *
FROM dataset.nested
WHERE EXISTS (
  SELECT 1 FROM UNNEST(comments)
  WHERE title = 'Hello'
)
Run Code Online (Sandbox Code Playgroud)

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