У меня есть таблица транзакционных данных со структурой, подобной этой:
User Event TimeStamp
u1 listen_music 2017-10-18 13:28:43
u1 click_btn 2017-10-18 13:28:53
u1 logout 2017-10-18 13:29:55
u2 login 2017-10-19 13:30:20
u2 listen_music 2017-10-19 13:33:25
u2 visit_home 2017-10-19 13:34:10
u2 listen_music 2017-10-19 13:36:15
u2 listen_music 2017-10-19 13:37:35
u2 visit_profile 2017-10-19 13:40:35
Я хотел бы знать, как долго пользователь слушал музыку c. Таким образом, вывод будет выглядеть примерно так:
User No Delta
u1 1 10 sec
u2 1 45 sec
u2 2 80 sec
u2 3 180 sec
Я не хочу вычислять все дельты времени, а затем фильтровать события 'listen_musi c', так как есть много других (не относящихся к делу) событий.
Так что на самом деле я хочу вычислить дельту времени между строкой, которая удовлетворяет условию, и следующей строкой для всех пользователей.
Я использую Impala, но приветствуются и другие решения.