Фрагмент моего кода:
val scoreDateByAccount = Window
.partitionBy($"partition_column")
.orderBy($"ordering_column")
.rowsBetween(Window.unboundedPreceding, Window.unboundedFollowing)
dataFrame
.withColumn("new_column", lead($"ordering_column", 1).over(scoreDateByAccount))
Это выдает мне ошибку:
Указан фрейм окна. обязательный кадр указан в windowframe (RowFrame, 1, 1);
Если я затем удаляю часть rowsBetween
моего фрагмента, ошибки не возникает. Если я выберу любую другую функцию, кроме lead
/ lag
, кажется, что все работает отлично. Мне нужно указать диапазон окна, потому что я намерен использовать то же самое окно для генерации других столбцов (здесь опущено - считается неуместным), и, согласно этому ответу , среди прочего, если я этого не сделаю укажите предел строк, по умолчанию он будет rowsBetween(Window.unboundedPreceding, Window.currentRow
, что для меня неприемлемо.
Я также обнаружил отчет об ошибке на Jira Spark, примерно за 3 года до go, утверждая, что функция lag
была нарушена (хотя функция lead
работала должным образом для OP), и сгенерированная ошибка была очень похожа на мою, но, тем не менее, помечена как Resolved.
Я также не могу найти документацию о том, какой windows может применяться lead
/ lag
.
Что мне здесь не хватает?