標識列生成現在可以使用代理鍵附近的Lakehouse你!
一個標識列是什麼?
一個標識列是一個列在數據庫中自動生成一個惟一的ID號碼為每個新行數據。這個數字不是行相關的內容。
標識列的一種形式代理鍵。在數據倉庫中,通常使用一個額外的關鍵,稱為代理鍵,來唯一地標識每一行和跟蹤數據隨時間的變化。另外,建議使用代理鍵自然鍵。代理鍵是係統生成的,而不是依賴於幾個字段來標識的唯一性。
所以,標識列是用於創建代理鍵,它可以作為主鍵和外鍵維度模型的數據倉庫和數據集市。正如下麵所看到的,這些鍵彼此連接不同的表的列維度模型在傳統的像一個星型模式。
傳統方法生成代理鍵數據湖泊
大多數大數據技術使用並行性,或者能夠把任務分成更小的部分,可以在同一時間完成,以提高性能。在早期的數據湖泊,沒有簡單的方法來創建獨特的序列在一組機器。這導致了一些數據工程師使用不可靠的方法來生成代理鍵沒有適當的特性,如:
monotonically_increasing_id (),
row_number (),
排名,
ZipWithIndex (),
ZipWithUniqueIndex (),
- 散列和行
散列(),
和 - 散列和行
md5 ()
。
雖然這些功能能夠完成工作在某些情況下,它們常常充滿了許多警告和警告稀疏填充序列,在規模的性能問題,並發事務問題。
數據庫已經能夠生成序列自從早期,生成代理鍵來唯一地標識一行數據的援助集中的事務管理器。然而,典型的實現需要鎖和事務提交,這很難管理。
標識列三角洲湖上簡化生成代理鍵
標識列解決上麵提到的問題並提供一個簡單的、高性能的解決方案生成代理鍵。湖三角洲湖是第一個數據協議支持代理鍵的標識列的一代。
三角洲湖現在支持創建身份
列,可以自動生成獨特的新行加載時增加的ID數字。雖然這些ID數字可能不是連續,三角洲使盡最大努力保持盡可能小的差距。您可以使用此功能來創建代理鍵輕鬆為你的數據倉庫的工作負載。
如何創建一個代理鍵和一個標識列使用SQL和三角洲湖嗎
[推薦]產生總是身份
創建一個標識列在SQL創建三角洲湖表一樣簡單。當宣布你的列,叫添加一個列的名字id
,或任何你喜歡的數據類型長整型數字
,然後輸入生成的總是作為身份
。
現在,每次執行一個操作在這個表中插入數據,忽略這一列插入,三角洲湖將會自動生成一個惟一的值身份
為每一行插入到三角洲湖表列。
這是一個簡單的例子,如何使用標識列在三角洲湖:
創建或取代表演示(id長整型數字生成的總作為身份,product_type字符串,銷售長整型數字);
展望未來,列標題為“身份id
“將自動遞增每當你將新記錄插入到表中。然後您可以插入新的數據如下所示:
插入成演示(product_type、銷售)值(“電池”,150000年);
注意代理鍵列標題為“id
“不見了插入
聲明的一部分。三角洲湖寫表時將填充代理鍵雲對象存儲(例如AWS S3,蔚藍的湖數據存儲,或穀歌雲存儲)。學習更多的文檔。
在默認情況下生成
還有一在默認情況下生成的身份
選項,該選項允許插入身份被覆蓋,而總是
選項不能被覆蓋。
需要指出的是你應該記住當采用這個新特性。標識列不能被添加到現有表;需要重新創建的表添加新標識列。為此,隻需創建一個新表DDL標識列,和現有的列插入新表,和代理鍵將生成新表。
開始使用身份與三角洲湖列磚今天SQL
標識列現在GA(通常)在磚運行SQL 2022.17 + 10.4 +和磚。標識列,現在可以讓你所有的數據倉庫的工作負載都Lakehouse架構帶來的好處,通過光子加速。今天嚐試身份列磚SQL。