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 раньше, я был бы рад получить подсказку!

ура

Ответы на вопрос(2)

Ваш ответ на вопрос