Выбор столбца из нескольких фреймов данных на основе приоритетного фрейма данных - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть требование предоставить консолидированный вывод на основе приоритета столбцов из разных файлов в 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.
...