Я пытаюсь ранжировать столбец, когда нумерация столбцов «ID» начинается с 1 до максимума, а затем сбрасывается с 1.
Итак, первые три строки имеют непрерывную нумерацию на «ID»; следовательно, они должны быть сгруппированы с группой rank = 1. Строки четыре и пять находятся в другой группе, ранг группы = 2.
Строки отсортированы по столбцу «rownum». Мне известна оконная функция row_number, но я не думаю, что могу подать заявку на этот вариант использования, так как нет постоянного окна. Я могу думать только о циклическом просмотре каждой строки в кадре данных, но не уверен, как мне обновить столбец, когда число сбрасывается до 1.
val df = Seq ((1, 1), (2, 2), (3, 3), (4, 1), (5, 2), (6, 1), (7, 1), (8, 2)) .toDF («rownum», «ID») df.show ()
![enter image description here](https://i.stack.imgur.com/tkec5.png)
Ожидаемый результат ниже: ![enter image description here](https://i.stack.imgur.com/qS5Up.png)