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

代理鍵與δ

bgerhardi
新的貢獻者三世

我們正在考慮搬到三角洲生活表從一個傳統的基於sql的數據倉庫。

擔心我這FAQ標識列三角洲生活表常見問題|磚在AWS上這似乎表明,我們基本上無法創建惟一id行除非流當然SCD 1維金表似乎將永遠無法成為一個流表,因為它不是一個擴展(它需要合並)

磚談判要求這裏. .如何標識列生成代理鍵的磚Lakehouse -磚博客所以很明顯這是多麼重要。

我失蹤嗎?

11日回複11

Kaniz
社區經理
社區經理

嗨@Brett Gerhardi,你能解釋一下關於你究竟是什麼?

這是這個問題,還是你所尋找的是一個特定的解決方案嗎?

模式定義的身份列可以指定創建TABLE語句生活在一樣的標準創建表的語法。然而,對於生活的表不是定義為流,每個刷新可以完全重新生成表,導致一個新的標識值分配給每一行。不支持標識列申請更改表。

bgerhardi
新的貢獻者三世

謝謝你的回複

是的,是關於我。最終代理鍵應該是穩定的,這種說法似乎表明他們不會失敗的。

三角洲生活之外的其他數據產品(管道)可能是指CustomerKey 12 (CustomerCode: BOB1)。如果由於刷新(不確定這將是必要的,但感覺會發生)BOB1 23的關鍵變化相反,我們剛剛默默地破碎的所有外部表引用我們的鑰匙。這不會是一個美好的一天。

還要考慮SCD2情況。SCD2表越來越受益於有一個代理鍵從一個毫無意義的標識列。然而如果身份與應用不支持和應用變化是磚的方式實現SCD2那麼磚怎麼建議SCD2表的外觀和可靠地從其他表引用嗎?

我們需要保持我們BusinessCode映射在一個分離的關鍵,non-delta-live表,以確保他們是穩定的嗎?如果這是推薦那麼我建議要將這些信息添加到FAQ(最小也是偉大的例子)

TomRenish
新的貢獻者三世

你有沒有得到一個答案嗎?看起來像一個巨大的洞DLT特性集。我現在的DLT管道停在輸出的數據是不同的下降和刪除記錄。從那裏,我用一個正常三角洲管道對表進行掃描,兩次

  1. 創建一個表與源數據的專有的字母數字ID和一個標識列(我的新代理鍵,即SK)作為表的DDL的一部分,我從哪裏添加新的αIDs的DLTαID這個目標表中不存在。這確保了skαID的關係是不滅的
  2. 創建一個表來倉庫的所有數據,加入上表,輸出SK。問題是,它不是一個read_stream()操作所以我做一個完整的覆蓋。非常非常不佳……

你想出一個更好的解決這個問題嗎?

另一個挑戰是輸出表中有一些維度數據本身沒有id。我被迫創建自己的維度表與自己的SKs,然後追溯寫尺寸的SK回目標表。我不介意這樣做,但是DLT似乎不具備支持這個。

TomRenish
新的貢獻者三世

令人驚訝的是治療可以寫出你的問題。回複後,解決方案來找我。秘密武器在之前完成所有* *運行dlt.apply_changes()引擎。之後,所有的賭注都關閉,因為發動機似乎停止擔心跟蹤疾病預防控製中心。所以在你跑之前應用變化……

做一個簡單的表,隻需要在你的源數據的主鍵,或使人通過concat是必要的。然後這樣做:

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

# #定義目標表的id

@dlt。表(評論=“CDC攝入的目標。”

模式= " "

sk_workorder長整型數字生成的總是作為身份(從1增加1),

workorder_id字符串

”“”

)

def stg_workorder_ids ():

返回(dlt.read_stream (“stg_workorders_hist_bronze”)

.select (“workorder_id”)

.distinct ()

)

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

這讓你一個1:1的關係您的專有密鑰和SK(代理鍵)。一旦我做了這個,我加入它回到我history_silver表,然後* *,穿過apply_changes引擎。似乎工作。GL !

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

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

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

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

Baidu
map