# #sql #google-bigquery
Вопрос:
У меня есть таблица, составленная таким образом:
-header
-data
-----createdAt
-----attributes
---------------key
---------------value
где data
тип RECORD
в режиме NULLABLE
и attributes
тип RECORD
в режиме REPEATED
.
Я хотел бы сделать запрос:
SELECT *
FROM `tablename`
WHERE data.createdAt >= "2021-08-13 10:44:00.000 UTC"
AND data.attributes.key = "key name"
AND data.attributes.value IS null
Это ясно, что я не могу.
Как я могу этого достичь?
Комментарии:
1. Проверьте документы — cloud.google.com/bigquery/docs/reference/standard-sql/…
2. Спасибо, это то, что я искал
Ответ №1:
Для записей это должно сработать:
SELECT *
FROM `table`
CROSS JOIN UNNEST (data.attributes) as attributes
WHERE EXISTS (
SELECT *
FROM UNNEST(data.attributes) AS attributes
WHERE attributes.attributeKey = "key name"
AND attributes.attributeValue IS NULL
)
AND data.createdAt >= "2021-08-13 10:44:00.000 UTC"
или также
SELECT *
FROM `table`
CROSS JOIN UNNEST (data.attributes) as attributes
WHERE attributes.attributeKey = "key name"
AND attributes.attributeValue IS NULL
AND data.createDateTime >= "2021-08-13 10:44:00.000 UTC"