Я хочу узнать количество уникальных пользователей, активных за последние 30 дней. Я хочу рассчитать это на сегодня, но также и на дни в прошлом. Набор данных содержит идентификаторы пользователей, даты и события, инициированные пользователем, сохраненные в BigQuery. Пользователь становится активным, открывая мобильное приложение, вызывающее событие session_start. Пример невложенного набора данных.
| resettable_device_id | date | event |
------------------------------------------------------
| xx | 2017-06-09 | session_start |
| yy | 2017-06-09 | session_start |
| xx | 2017-06-11 | session_start |
| zz | 2017-06-11 | session_start |
Я нашел решение, соответствующее моей проблеме: BigQuery : как сгруппировать и подсчитать строки в скользящем временном окне?
Мой сценарий BigQuery на данный момент:
#standardSQL
WITH daily_aggregation AS (
SELECT
PARSE_DATE("%Y%m%d", event_dim.date) AS day,
COUNT(DISTINCT user_dim.device_info.resettable_device_id) AS unique_resettable_device_ids
FROM `ANDROID.app_events_*`,
UNNEST(event_dim) AS event_dim
WHERE event_dim.name = "session_start"
GROUP BY day
)
SELECT
day,
unique_resettable_device_ids,
SUM(unique_resettable_device_ids)
OVER(ORDER BY UNIX_SECONDS(TIMESTAMP(day)) DESC ROWS BETWEEN 2592000 PRECEDING AND CURRENT ROW) AS unique_ids_rolling_30_days
FROM daily_aggregation
ORDER BY day
Результатом этого сценария является следующая таблица:
| day | unique_resettable_device_ids | unique_ids_rolling_30_days |
------------------------------------------------------------------------
| 2018-06-05 | 1807 | 2614 |
| 2018-06-06 | 711 | 807 |
| 2018-06-07 | 96 | 96 |
Проблема в том, что столбец unique_ids_rolling_30_days - это просто совокупная сумма столбца unique_resettable_device_ids. Как я могу исправить функцию скользящего окна в моем скрипте?