Как ссылаться на тот же столбец с помощью функции Databricks Spark Lead Windows - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть фрейм данных со столбцом, который заполняется только для первого в последовательности строк:

+----------------+----------+----------+
|       Activity |      date|   StartID|
+----------------+----------+----------+
|           prime|2018-08-12|    466750|
|      data check|2018-08-12|         0|
|      data check|2018-08-12|         0|
|      part check|2018-08-12|         0|
|  initialization|2018-08-12|         0|
|      part check|2018-08-12|    834730|
|  initialization|2018-08-13|         0|
|      processing|2018-08-13|         0|
|      processing|2018-08-13|         0|
+----------------+----------+----------+

Мне нужно найти способ заполнить StartID значением изпредыдущая строка с ненулевым значением.Насколько я понимаю, данные не могут быть изменены, поэтому я ищу способ создать что-то вроде этого:

+----------------+----------+--------+--------+
|       Activity |      Date| StartID|   TxnID|
+----------------+----------+--------+--------+
|           prime|2018-08-12|  466750|  466750|
|      data check|2018-08-12|       0|  466750|
|      data check|2018-08-12|       0|  466750|
|      part check|2018-08-12|       0|  466750|
|  initialization|2018-08-12|       0|  466750|
|      part check|2018-08-12|  834730|  834730|
|  initialization|2018-08-13|       0|  834730|
|      processing|2018-08-13|       0|  834730|
|      processing|2018-08-13|       0|  834730|
+----------------+----------+--------+--------+

Я пытался сделать что-то вроде:

SELECT * ,
       CASE WHEN 
           StartID > 0
       THEN 
           StartID 
       ELSE 
           Lead(TxnID) OVER (ORDER BY date)  -- This seems to have caused an issue, as it is trying to reference itself.
       END as TxnID
FROM stateData ORDER BY date

Это даетошибка

«не может разрешить» TransID «заданные входные столбцы», что имеет смысл, поскольку оно ссылается на исходный кадр данных, а не на результирующий кадр данных.

Есть ли способ выполнить этот тип операции и получить требуемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...