Pyspark: função de janela personalizada

Atualmente, estou tentando extrair séries de ocorrências consecutivas em um quadro de dados PySpark e ordená-las / classificá-las conforme mostrado abaixo (por conveniência, solicitei o quadro de dados inicial poruser_id etimestamp):

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.

para :

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.

Meu palpite é que eu tenho que usar uma função de janela inteligente que particione a tabela por user_id e açõesmas somente quando essas ações são consecutivas no tempo ! Que eu não consigo imaginar como fazer ...

Se alguém encontrou esse tipo de transformação no PySpark antes, ficaria feliz em receber uma dica!

Felicidades

questionAnswers(2)

yourAnswerToTheQuestion