首先,你要计算一个
name + surname
的分数是否超过5。这可以通过计算该
name + surname
的最大分数来完成。利用这些信息,根据条件对记录进行标记。
data_sdf. \
withColumn('name_max_mark', func.max('mark').over(wd.partitionBy('name', 'surname'))). \
withColumn('dup_name', (func.col('name_max_mark') >= 5)). \
show()
# +----+-------+----+-------------+--------+
# |name|surname|mark|name_max_mark|dup_name|
# +----+-------+----+-------------+--------+
# |Mark| Doe| 3| 3| false|
# |Mark| Doe| 1| 3| false|
# | Tom| Doe| 6| 6| true|
# | Tom| Doe| 2| 6| true|
# +----+-------+----+-------------+--------+
select()
只有你需要的列,即放弃name_max_mark
而存储到一个变量。