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

使用DeltaTable.merge()和生成代理鍵插入嗎?

Dekova
新的貢獻者二世

我用插入的數據合並到一個表:

DeltaTable
.forName ( DESTINATION_TABLE )
作為 ( “目標” )
.merge (merge_df。 作為 ( “源” ), ”源。主題=目標。主題和源。關鍵= target.key” )
.whenMatched ()
.updateAll ()
.whenNotMatched ()
.insertAll ()
. execute ()

下麵我想用一個生成的列上創建代理鍵插入:

  1. surrogate_guid字符串生成總是像(uuid ())
  2. surrogate_id bigint生成總是像身份

# 1不工作,我得到的錯誤“生成的列不能使用非確定性表達式”。
# 2不工作,我得到了錯誤“無法解決surrogate_id更新條款”

最佳實踐的合並和獲得一個惟一的標識符(最好是uuid)分配?

1接受解決方案

接受的解決方案

daniel_sahal
尊敬的貢獻者三世

@Dekova
1)uuid()是不確定的意義,它會給你不同的結果每次運行這個函數
2)每文檔“磚運行時的9.1及以上,合並操作支持spark.databricks.delta.schema.autoMerge.enabled設置為true時生成的列。”

這個情形是:我要做什麼
——創建一個列surrogate_id長整型數字生成的總是作為身份,
——創建一個基於surrogate_id列列surrogate_guid和散列。例如surrogate_guid字符串生成的總是作為用戶(sha2 ((surrogate_id字符串),512))

在原帖子查看解決方案

1回複1

daniel_sahal
尊敬的貢獻者三世

@Dekova
1)uuid()是不確定的意義,它會給你不同的結果每次運行這個函數
2)每文檔“磚運行時的9.1及以上,合並操作支持spark.databricks.delta.schema.autoMerge.enabled設置為true時生成的列。”

這個情形是:我要做什麼
——創建一個列surrogate_id長整型數字生成的總是作為身份,
——創建一個基於surrogate_id列列surrogate_guid和散列。例如surrogate_guid字符串生成的總是作為用戶(sha2 ((surrogate_id字符串),512))

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

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

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

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

Baidu
map