Как применить предложение WHERE к ПОВТОРЯЮЩЕЙСЯ ЗАПИСИ

# #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"