嗨@Mike K。,
火花是不同的分布式體係結構比傳統的RDBMS,你肯定會發現一些功能不支持1:1。為您的特定問題,我建議執行條件邏輯和過濾到一個臨時結構,然後使用
合並成
聲明https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/merge-into.html。這假定您正在使用(棒)三角洲體係結構和存儲格式,符合acid類型將事務處理。肯定有其他方式來完成,但是這是一個這樣的方法:
創建臨時視圖選擇dt₁加入。可樂,當dt2.colB > dt₁。colB然後dt2。其他colB dt₁。colB + dt2。colB結束從dt₁colB內連接dt2 dt1.colA = dt2。可樂,dt2.colC =“XYZ”;並入dt₁使用加入dt1.colA =加入。可樂當匹配更新設置colB = joined.colB;
工作這是我的筆記本,它顯示了繁殖的失敗和步驟到最後的答案:
或在github:https://github.com/leedabee/databricks -論壇-支持- notebooks/tree/master/db -論壇- 29380
希望這能給你一些幫助!
嗨@Mike K。,
火花是不同的分布式體係結構比傳統的RDBMS,你肯定會發現一些功能不支持1:1。為您的特定問題,我建議執行條件邏輯和過濾到一個臨時結構,然後使用
合並成
聲明https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/merge-into.html。這假定您正在使用(棒)三角洲體係結構和存儲格式,符合acid類型將事務處理。肯定有其他方式來完成,但是這是一個這樣的方法:
創建臨時視圖選擇dt₁加入。可樂,當dt2.colB > dt₁。colB然後dt2。其他colB dt₁。colB + dt2。colB結束從dt₁colB內連接dt2 dt1.colA = dt2。可樂,dt2.colC =“XYZ”;並入dt₁使用加入dt1.colA =加入。可樂當匹配更新設置colB = joined.colB;
工作這是我的筆記本,它顯示了繁殖的失敗和步驟到最後的答案:
或在github:https://github.com/leedabee/databricks -論壇-支持- notebooks/tree/master/db -論壇- 29380
希望這能給你一些幫助!
@Mike k .沒有使用視圖,我添加了一個解決方案。
temp_df = df2。加入(df1,“可樂”=“左”)。選擇(“*”,df1.colB.alias (“df1_colB”)) .drop (df1.colB)
df2 = temp_df。withColumn (“colB”(卡紮菲(col (colB) < = (“df1_colB”)) \ & (temp_df.df1_colB.isNotNull ()) \ & (temp_df。colC = =“XYZ”),坳(“colB”) +坳(“df1_colB”)) .otherwise (col (“colB”))) \ .drop (“df1_colB”)
鏈接的完整代碼在筆記本w /說明:
https://github.com/bsthapit/Databricks_Solutions/blob/master/db_29380.ipynb