Скользящее окно подсчета отдельных пользователей за 12 месяцев - PullRequest
0 голосов
/ 29 апреля 2020

У меня довольно базовый набор данных c, где у меня есть таблица, содержащая отметку времени каждого взаимодействия пользователя с приложением. Активный пользователь классифицируется как человек, который хотя бы раз взаимодействовал с приложением в течение последних 12 месяцев.

Мне нужно составить таблицу, в которой изо дня в день сообщается (сколько дней назад) сколько " Активные "пользователи были в предыдущие 12 месяцев. Мне нужно выполнить запрос в Amazon Athena

. Возможная сложность заключается в том, что один пользователь может взаимодействовать с приложением каждый день. Мне было интересно, что может быть лучшей оконной функцией, чтобы захватить это.

Данные в формате;

A   Opened App  10/04/2020
A   Opened App  10/02/2020
A   Opened App  05/01/2020
B   Opened App  12/03/2020
B   Opened App  02/01/2019
B   Opened App  20/07/2018
C   Opened App  19/04/2019

Мне нужна результирующая таблица

20/04/2020  2 (A and B)
19/04/2020  2 (A and B)
18/04/2020  3 (all three)
... 
04/01/2020  1 (Only C)
... 

1 Ответ

0 голосов
/ 29 апреля 2020

Один метод заключается в использовании count(distinct) с оконной функцией range:

select distinct date,
       count(distinct user) over (order by date range between interval '1 year' preceding and current row) as num_active_users
from t;

Не все базы данных поддерживают этот синтаксис.

...