Pyspark中的动态window.partitionBy列

时间:2019-11-07 10:16:06

标签: dataframe apache-spark pyspark databricks

我创建了两个数据框。 df_stg_raw数据框正在保存重复记录。 df_qualify数据帧保持meta-information,例如partitionorder基于哪一列。我想使用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数据框中存在的orderBydf_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**')))

0 个答案:

没有答案