Я создал два фрейма данных. df_stg_raw
фрейм данных содержит повторяющиеся записи. df_qualify
фрейм данных содержит meta-information
, например, partition
& order
зависит от того, какой столбец. Я хочу удалить дубликаты записей с помощью функции window
, доступной в PySpark.
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**')))