【发布时间】:2020-02-23 03:21:23
【问题描述】:
以下是我的源和预期输出数据帧
我需要应用以下逻辑并计算最终排名值
如果上一行(hdr) == 当前行(hdr) & 上一行(dtl) == 当前行(dtl),
然后分配上一行排名,否则上一行排名+ 1
我无法在密集排名后继续前进。你能分享你的意见吗?考虑到潜在的性能开销,我试图避免没有 partitionBy 列的 Window
sample = [(100,1000),(100, 1000), (100, 2000), (200, 1000), (200,1000), (300,1000), (300,2000)]
test = spark.createDataFrame(sample,['hdr','dtl'])
spec = Window.partitionBy('hdr').orderBy('hdr','dtl')
test.withColumn('dense', func.dense_rank().over(spec)).show()
【问题讨论】:
标签: pyspark