Я в настоящее время пытается извлечь ряд последовательных вхождений в dataframe Pyspark и порядка/ранжировать их, как показано ниже (для удобства я заказал первоначальный dataframe по user_id и метки времени):Pyspark: Пользовательская функция окна
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, прежде чем я был бы рад получить намек!
Приветствия
зачем вам coalesce()? – mathopt