取消
顯示的結果
而不是尋找
你的意思是:

三角洲時並入插入支持表有一個標識列?

瓦迪姆
新的貢獻者三世

我似乎不能使它工作,我繼續:

DeltaInvariantViolationException: NOT NULL約束違反列:dl_id。

8回答說8

werners1
尊敬的貢獻者三世

我認為這是這個問題。加州大學包含一列應該是一個id,但你不能把它合並生成。

如果你合並對自然鑰匙嗎?

瓦迪姆
新的貢獻者三世

我沒有試過,但我懷疑它會失敗插入相同的消息,因為加州大學。dl_id是一些空行和“whenNotMatchedInsertAll”將試圖插入dl_id字段的值,而不是生成一個(如果它被用戶提供)。

同時我發現了一個解決方案:顯式地設置列映射和不包括一個用於“dl_id”。

除了dl_id cols2update dict和列映射,它的工作原理。

t.alias (ec) .merge (df.alias(加州大學),“電子商務。dl_id = uc.dl_id ") \ .whenMatchedUpdate(設置= cols2update) \ .whenNotMatchedInsert(值= cols2update) \ . execute ()

werners1
尊敬的貢獻者三世

我隻是打字這個解決方案:slightly_smiling_face:因為生成的id被定義為上校總是身份永遠不會被更新。如果你使用UpdateAll將生成一個錯誤。

從列中刪除Id坳被更新。

就是這樣。

byrdman
新的貢獻者三世

如果您使用的是“delta.columnMapping。模式”=“名字”表上我不能讓它工作,沒有這條線. .的不匹配。當不匹配

然後插入(columnname columnName2)值(columnname columnName2)

當匹配

然後更新設置(目標。columnname = source.columnname目標。columnname2 = source.columnname2)為我工作。離開這些id列

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map