У меня есть Spark DataFrame
с идентификатором и набором числовых столбцов, и для каждого столбца, кроме идентификатора, я пытаюсь сгенерировать столбец лаговых различий, сгруппированных по идентификатору.
Например, если у меня есть это DataFrame
+---+-----+-----+-----+
| ID| var1| var2| var3|
+---+-----+-----+-----+
| 1| 1| 3| 2|
| 1| 2| 4| 2|
| 1| 3| 1| 3|
| 2| 1| 3| 4|
| 2| 1| 2| 1|
| 2| 1| 1| 1|
| 2| 3| 3| 1|
| 3| -1| 0| 0|
| 3| 2| -1| 2|
| 3| 0| 4| 0|
+---+-----+-----+-----+
Я ожидаю, что результат будет примерно таким:
+---+-----+-----+-----+----------+----------+----------+
| ID| var1| var2| var3| var1_diff| var2_diff| var3_diff|
+---+-----+-----+-----+----------+----------+----------+
| 1| 1| 3| 2| null| null| null|
| 1| 2| 4| 2| 1| 1| 0|
| 1| 3| 1| 3| 1| -3| 1|
| 2| 1| 3| 4| null| null| null|
| 2| 1| 2| 1| 0| -1| -3|
| 2| 1| 1| 1| 0| -1| 0|
| 2| 3| 3| 1| 2| 2| 0|
| 3| -1| 0| 0| null| null| null|
| 3| 2| -1| 2| 3| -1| 2|
| 3| 0| 4| 0| -2| 3| -2|
+---+-----+-----+-----+----------+----------+----------+
Где столбцы _diff
исходные столбцы, вычитающие их лагиМой DataFrame
имеет более 3 переменных, поэтому я хотел бы иметь возможность генерировать лаговые различия для произвольно большого числа столбцов.то есть я не хочу создавать столбцы _diff
по одному.
Есть идеи, как мне этого добиться?