架構設計:
源:Miltiple CSV文件(SourceFile1 SourceFile2)
目標:三角洲表像(Target_Table)
Excel文件:ETL_Mapping_Sheet
TargetTable,文件列:SourceTable, SourceColumn TargetColum MappingLogic
從表或MappingLogic列包含(SELECT *
SELECT * FROM SourceFile1左加入SourceFile2 B
什麼:我怎麼能使用MappingLogic cloumns dataframe構建映射邏輯值? ?
我可以直接執行SQL語句使用列值? ?
我的方法:
從一個ETL映射表更新樣本行:
我認為你可以構造SQL查詢和使用循環來填補你的代碼。
火花。sql (f”插入目標}{....
或者更好的是,使用合並
繼@Werner Stinckens回應,如果你可以給一個例子,那麼它將會很好。
理想情況下你可以閱讀python和excel文件的每一行每一列作為參數傳遞給一個函數。
如;TargetTable, def apply_mapping_logic (SourceTable SourceColumn TargetColum, MappingLogic)
在這個函數可以定義您希望怎麼處理映射邏輯。
再次,要做到這一點,你需要想出一個邏輯基於不同類型的映射邏輯你excel文件。
@Aman Sehgal
謝謝你的回應,我更新樣本映射的例子
我已經映射邏輯mappingsheet所以我現在仍然需要這個額外的函數…我可以直接這個SQL邏輯存儲在一個變量和直接exeute像下麵。
Pyspark代碼:
變量= df.select (mappinglogic) .collect () [0]
df_spark_sql =火花。sql(變量)
之後,如果我想執行任何進一步的操作,我可以很容易地df_spark_sql dataframe