У меня возникли проблемы при использовании функции UNNEST для работы с массивами в структуре JOIN в Google BigQuery.
У меня был запрос на подсчет MAU (ежемесячно активных пользователей) для моего мобильного приложения на основе данных Firebaseв Google BigQuery.И это сработало довольно хорошо.
Затем я попытался подсчитать пользователей, которые завершили определенное событие, и это также сработало.
Однако, когда я пытаюсь отфильтровать событие по его параметрам (которые сохраняются вмассив), я столкнулся с проблемой использования функции UNNEST в структуре JOIN.
Параметры:
event_params.key = 'isCommented'
и
event_params.value.string_value = 'true'
Без функции UNNEST я обнаружил следующую ошибку:
Cannot access field key on a value with type
ARRAY<STRUCT<key STRING, value STRUCT<string_value STRING, int_value INT64, float_value FLOAT64, ...>>> at [32:20]
WITH
calendar AS (
SELECT
day
FROM
UNNEST(GENERATE_DATE_ARRAY( (
SELECT
MIN(PARSE_DATE('%Y%m%d',
event_date))
FROM
`***`.`***`.`***`), (
SELECT
MAX(PARSE_DATE('%Y%m%d',
event_date))
FROM
`***`.`***`.`***`), INTERVAL 1 DAY) ) AS day )
SELECT
c.day AS date,
COUNT(DISTINCT m.user_pseudo_id ) AS MAU
-- UNNEST(event_params) AS event_params1
FROM
calendar AS c
JOIN
`***`.`***`.`***` AS m
ON
parse_DATE('%Y%m%d',
m.event_date) BETWEEN DATE_SUB(c.day, INTERVAL 30 DAY)
AND c.day
WHERE
event_name = 'eventCreation'
AND event_params.key = 'isCommented'
AND event_params.value.string_value = 'true'
GROUP BY
date
ORDER BY
date
Как использовать UNNEST в случае его использования в структуре JOIN?
Заранее большое спасибо!