我创建了两个数据框。 df_stg_raw
数据框正在保存重复记录。 df_qualify
数据帧保持meta-information
,例如partition
和order
基于哪一列。我想使用PySpark中提供的window
函数删除重复的记录。
df_stg_raw
==================================================
ACCNT_ID NAME SomeRandomID TABLE_NM
==================================================
1 A 123 TblA
1 A 123 TblA
2 B 124 TblA
2 B 124 TblA
3 C 125 TblA
3 C 125 TblA
df_qualify
==================================================
TABLE_NM QUALIFY_TXT ODER_BY
==================================================
TblA 'ACCNT_ID' 'SomeRandomID'
为了解决这个问题,我将两个数据框交叉连接。但是,我无法动态传递paritionBy
数据框中存在的orderBy
和df_qualify
列。
df_final = df_stg_raw.join(df_qualify, df_stg_raw.TABLE_NM == df_qualify.TABLE_NM, how = "cross") \
.withColumn("row_num", row_number().over(window.partitionBy('**dynamic_part_col**').orderBy('**dynamic_order_col**')))