Я хочу узнать количество уникальных пользователей, активных за последние 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: как группировать и считать строки в окне скользящей отметки времени?
MyСкрипт 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.Как я могу исправить функцию скользящего окна в моем скрипте?