У меня есть требование предоставить консолидированный вывод на основе приоритета столбцов из разных файлов в pyspark. У меня ниже таблица приоритетов:
object|Element |Master |Df1|Df2|Df3
----------------------------------------
xyz |col1 |1 |2 |4 |3
xyz |col2 |1 | | |
xyz |col3 | |1 | |
xyz |col4 |1 | | |
xyz |col5 |1 | | |
xyz |col6 | |3 |1 |2
мой консолидированный вывод должен содержать все столбцы, упомянутые в «Элементах», с выбором из столбцов Master, если столбец не в Master, найдите их в других файлах / DF. Также, если значение в файле для какого-либо столбца равно Null / Empty, выберите значение из файла второго приоритета / DF.
Я могу добиться того же с помощью функции coalesce в pyspark, но не понимаю, как мне написать функция объединения динамически основана на приведенной выше таблице приоритетов.
RESULT_REC = MasterDF.join(Df1, MasterDF.ID==Df1.ID, "left_outer").join(Df2, MasterDF.ID==Df2.UUID, "left_outer").join(Df3, MasterDF.Id==Df3.UUID, "left_outer").join(Df4, MasterDF.ID==Df4.UUID, "left_outer").
select(coalesce(MasterDF.col1,Df1.col1,Df3.col1,Df2.col1),
coalesce(MasterDF.col2),
coalesce(Df1.col3),
coalesce(MasterDF.col4),
coalesce(MasterDF.col5),
coalesce(Df2.col6,Df3.col6,Df1.col6))
```
how can we generate the above code dynamically based on priority table in pyspark.