У меня есть данные таким образом в sample_table
user_id accesses_type table start_time
User1 READ Table1 2019-12-18 00:00:00.090 UTC
User2 READ Table1 2019-12-18 00:00:01.100 UTC
User2 WRITE Table1 2019-12-18 00:00:01.520 UTC
User1 READ Table2 2019-12-18 00:00:04.420 UTC
User1 READ Table1 2019-12-18 00:00:10.460 UTC
.
.
.
Я пытаюсь найти скользящее окно из текущего start_time плюс 5 секунд от себя, а затем пытаюсь захватить отдельный идентификатор user_id для каждой таблицы в соответствии с типом доступа , Я также хочу напечатать всех пользователей, обращающихся к этой таблице, в виде списка
. В приведенном выше примере ожидаемый результат для первых 4 строк, поскольку они попадают в окно 5 секунд, начиная с 1-й строки, будет следующим:
count_distinct_user_id table accesses_type user_id_list
2 Table1 READ [User1,User2]
1 Table1 WRITE [User2]
1 Table2 READ [User1]
Мой запрос выглядит примерно так: select count(distinct user_id) over (PARTITION BY table,accesses_type ORDER BY start_time ROWS BETWEEN CURRENT ROW AND TIMESTAMP_ADD(start_time, INTERVAL 5 SECOND) FOLLOWING) count_distinct_user_id,table, accesses_type, /*array_logic for arranging the user_id*/ from sample_table