во втором окне см. обновление

ужно выполнить описанную ниже операцию с кадрами данных, используя оконную функцию Lag and Lead.

Для каждого ключа мне нужно выполнить приведенную ниже вставку и обновить в окончательном выводе

Введите условие:
1. По умолчанию LAYER_NO = 0 необходимо записать в вывод.
2. Если есть какие-либо изменения в значениях COL1, COL2, COL3, в соответствии с их ценной записью, то эти записи должны быть записаны в выводе.

Пример: key_1 с layer_no = 2, в COL3 происходит изменение значения с 400 на 600

Обновление Условия:
1. Если в значениях COL1, COL2, COL3 НЕТ изменений по сравнению с предыдущей записью, но есть изменения в «столбце DEPART», это значение необходимо обновить в выходных данных.

Пример: key_1 с layer_no = 3, в COL1, COL2, COL3 не было никаких изменений, но в столбце DEPART есть изменение значения как "xyz", поэтому его необходимо обновить в выходных данных.
2. Даже LAYER_NO должен обновляться последовательно, после вставки записи с layer_no = 0

    val inputDF = values.toDF("KEY","LAYER_NO","COl1","COl2","COl3","DEPART")

    inputDF.show()   
    +-----+--------+----+----+----+------+
    |  KEY|LAYER_NO|COL1|COL2|COL3|DEPART|
    +-----+--------+----+----+----+------+
    |key_1|       0| 200| 300| 400|   abc|->default write
    |key_1|       1| 200| 300| 400|   abc|
    |key_1|       2| 200| 300| 600|   uil|--->change in col3,so write
    |key_1|       2| 200| 300| 600|   uil|
    |key_1|       3| 200| 300| 600|   xyz|--->change in col4,so update
    |key_2|       0| 500| 700| 900|   prq|->default write
    |key_2|       1| 888| 555| 900|   tep|--->change in col1 & col 2,so write
    |key_3|       0| 111| 222| 333|   lgh|->default write
    |key_3|       1| 084| 222| 333|   lgh|--->change in col1,so write
    |key_3|       2| 084| 222| 333|   rrr|--->change in col4,so update
    +-----+--------+----+----+----+------+

Ожидаемый результат:

outputDF.show()
+-----+--------+----+----+----+------+
|  KEY|LAYER_NO|COl1|COl2|COl3|DEPART|
+-----+--------+----+----+----+------+
|key_1|       0| 200| 300| 400|   abc|
|key_1|       1| 200| 300| 600|   xyz|
|key_2|       0| 500| 700| 900|   prq|
|key_2|       1| 888| 555| 900|   tep|
|key_3|       0| 111| 222| 333|   lgh|
|key_3|       1| 084| 222| 333|   rrr|
+-----+--------+----+----+----+------+

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

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