Разделение оконных функций по списку - PullRequest
0 голосов
/ 06 октября 2018

У меня есть таблица dataframeDS. В scala я могу удалить дубликаты по первичным ключам, используя следующую команду:

import org.apache.spark.sql.expressions.Window.partitionBy
import org.apache.spark.sql.functions.row_number

val window = partitionBy(primaryKeySeq.map(k => tableDS(k)): _*).orderBy(tableDS(mergeCol).desc)
tableDS.withColumn("rn", row_number.over(window)).where($"rn" === 1).drop("rn")

Мне нужно написать аналогичную вещь в python.primaryKeySeq - это список в Python.Я попробовал первое утверждение, как это -

from pyspark.sql.window import Window
import pyspark.sql.functions as func

window = Window.partitionBy(primaryKeySeq).orderBy(tableDS[bdtVersionColumnName].desc())
tableDS1=tableDS.withColumn("rn",rank().over(window))

Это не дает мне правильный результат.

1 Ответ

0 голосов
/ 06 октября 2018

Это решено - вот окончательное преобразование.

from pyspark.sql.window import Window
from pyspark.sql.functions import row_number

window = Window.partitionBy(primaryKeySeq).orderBy(tableDS[bdtVersionColumnName].desc())
tableDS1=tableDS.withColumn("rn", row_number.over(window)).where(tableDS["rn"] == 1).drop("rn")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...