BigQuery - запрос вложенных полей в стандартном SQL - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть следующая схема в 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 СОДЕРЖИТ "Hello", кажется, доступен устаревший SQL, поэтому мне интересно, каков его эквивалент.

1 Ответ

0 голосов
/ 27 апреля 2018

Попробуйте это:

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

Возвращает все строки, где заголовком хотя бы одного комментария является Hello. Вы также можете использовать LIKE вместо равенства, например, для поиска подстрок. Для получения дополнительной информации о работе с массивами см. соответствующую документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...