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

时间:2018-04-27 15:23:08

标签: google-bigquery

我在BigQuery中有以下架构:

Schema:

整个表格如下:

SELECT * FROM `...nested`

enter image description here

我现在只想查询所有标题为“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,所以我想知道它的等价物是什么。

1 个答案:

答案 0 :(得分:2)

试试这个:

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

这将返回至少一个注释的标题为Hello的所有行。例如,您也可以使用LIKE代替相等来查找子字符串。有关使用数组的更多信息,请参阅relevant documentation