Pyspark: пользовательская функция окна
В настоящее время я пытаюсь извлечь серии последовательных вхождений в фрейме данных PySpark и упорядочить / упорядочить их, как показано ниже (для удобства я упорядочил начальный фрейм данных поuser_id
а такжеtimestamp
):
df_ini
+-------+--------------------+------------+
|user_id| timestamp | actions |
+-------+--------------------+------------+
| 217498| 100000001| 'A' |
| 217498| 100000025| 'A' |
| 217498| 100000124| 'A' |
| 217498| 100000152| 'B' |
| 217498| 100000165| 'C' |
| 217498| 100000177| 'C' |
| 217498| 100000182| 'A' |
| 217498| 100000197| 'B' |
| 217498| 100000210| 'B' |
| 854123| 100000005| 'A' |
| 854123| 100000007| 'A' |
| etc.
к:
expected df_transformed
+-------+------------+------------+------------+
|user_id| actions | nb_of_occ | order |
+-------+------------+------------+------------+
| 217498| 'A' | 3 | 1 |
| 217498| 'B' | 1 | 2 |
| 217498| 'C' | 2 | 3 |
| 217498| 'A' | 1 | 4 |
| 217498| 'B' | 2 | 5 |
| 854123| 'A' | 2 | 1 |
| etc.
Я предполагаю, что я должен использовать умную оконную функцию, которая разделяет таблицу по user_id и действиямно только когда эти действия последовательны во времени ! Что я не могу понять, как это сделать ...
Если кто-то сталкивался с подобным преобразованием в PySpark раньше, я был бы рад получить подсказку!
ура