Агрегат PySpark и условия

В первом подходе код итерации должен дублироваться во всех функциях, которые хотят что-то сделать с коллекцией. Второй подход скрывает детали итерации.

0
задан Keerikkattu Chellappan 18 March 2019 в 16:04
поделиться

1 ответ

Ваш код почти близок к лучшему подходу, но я все же попытался добавить несколько вещей -

1. Рассчитать «top» один раз и использовать его для сравнения.

2.Используйте отдельное определение столбца, это поможет улучшить удобочитаемость и удобство обслуживания.

 from pyspark.sql.window import Window

windowSpec = Window.partitionBy('Day')
top = max('sensitive_id').over(windowSpec).alias('top')

df.select('Day','Num','sensitive_id',top).withColumn('top_sensitive_id', expr("CASE WHEN sensitive_id = top THEN top END")).show()
0
ответ дан Shan 18 March 2019 в 16:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: