У меня есть некоторые данные в озере данных:
Person | Date | Time | Number of Friends |
Bob | 02/01 | unix_ts1 | 5 |
Kate | 02/01 | unix_ts2 | 2 |
Jill | 02/01 | unix_ts3 | 3 |
Bob | 02/01 | unix_ts3 | 7 |
Kate | 02/02 | unix_ts4 | 10 |
Jill | 01/29 | unix_ts0 | 1 |
Я хотел бы создать такую таблицу:
Person | Date | Time | Number of Friends DELTA | Found Diff Between
Bob | 02/01 | unix_ts1 | NaN | (5, NaN)
Kate | 02/01 | unix_ts2 | NaN | (2, NaN)
Jill | 02/01 | unix_ts3 | 2 | (3, 1)
Bob | 02/01 | unix_ts3 | 2 | (7, 5)
Kate | 02/02 | unix_ts4 | 8 | (10, 2)
Итак, у меня есть таблица, в которой идентифицируется каждая строкапо имени человека и времени, когда данные были записаны.Я хотел бы запрос, который будет искать экземпляры «Боб» и находить дельты для последовательных меток времени, а затем дать дельту, а также два значения, которые он нашел разницу между.Я бы хотел, чтобы это произошло с каждым человеком.
Я нашел способ сделать это, когда есть только одно значение, с помощью команды lag (), но это не будет соответствовать Person.Я также знаю, как сделать это в Pandas, если я скачал данные, но мне интересно, есть ли способ сделать это в Hive.
Есть ли способ сделать это?Спасибо!