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

改變數據提要磚

Mihai_Cog
新的因素

你好,

我正在做一些測試與這個特性變化數據提要使用磚和Pyspark,當然三角洲格式和我不明白一些事情:

  1. 我創建了一個表
  2. 裏麵保存一些數據
  3. 改變數據提要功能啟用
  4. 應用一個合並的dataframe包括插入、刪除、更新
    火花。sql(“合並到測試使用src在年代t。Id = t。Id和年代。date_field = t。date_field當匹配不匹配時更新設置*然後插入*當不匹配源刪除”)
  5. 檢查數據

SELECT * FROM table_changes(‘表’,2);版本是2

我觀察到的行ID(例如234123)出現兩次。_change_type列我第一occurernce update_preimage,第二喘振update_postimage。

我會說這是正常的事情,因為可能出現兩次改變了ID,但是如果我檢查每個值都出現我明白了沒有變化。

這是正常嗎?

5回複5

Kaniz
社區經理
社區經理

@Mihai_Cog,是的,這是正常的行為。當你啟用數據提要變化特性和應用合並操作,係統記錄所有數據寫入表更改事件。這包括數據和元數據的行顯示指定的行是否插入、刪除或更新。在你的案例中,_change_type列顯示update_preimageupdate_postimage對於相同的ID。這意味著這個ID的行是參與一個更新操作。update_preimage代表行更新前的狀態update_postimage表示更新後的狀態行。即使沒有實際行中的值發生了改變在更新操作,更改數據提要功能仍然記錄作為一個更新事件。因此連續出現兩次update_preimageupdate_postimage_change_type列。

來源:

(δ改變數據提要)(https://docs.m.eheci.com/delta/delta-change-data-feed.html)
(δ合並)(https://docs.m.eheci.com/delta/merge.html)

謝謝你!@Kaniz答案,但這種行為不是它是什麼。

我將解釋:

1。對於這種行為我不能確定哪一行是真正更新。

2。我不能找到計數的更新。

3所示。不僅存儲所有數據並更新/插入/刪除將結束在一個巨大的tabel . .在幾個月。

4所示。將更改合並到基表,這將意味著更多的時間,比合並真正的變化。

我們如何能涵蓋所有的這些不便嗎?

Tharun-Kumar
尊敬的貢獻者
尊敬的貢獻者

@Mihai_Cog當你發現一個條目在pre_image和post_image相同的值,這意味著確實更新記錄。但是沒有改變值。這個記錄經過merge語句,更新的列值。我們不會知道它確實改變了價值或它將更新相同的值。所有的update語句是合並,確定資格記錄更新和它對源表更新任何價值。

如果您隻希望有真正的更新,我建議在merge語句中使用一個過濾器來消除記錄相同的值的列有興趣。

@Tharun-Kumar謝謝你的回答。

更好地理解,你的意思是添加一個過濾器,意思是這樣的嗎?

.whenMatchedUpdate(設置=
{
“id”:“updates.id”,
“firstName”:“updates.firstName”,
:“middleName updates.middleName”,
“姓”:“updates.lastName”,
“性別”:“updates.gender”,
“生日”:“updates.birthDate”,
:“ssn updates.ssn”,
“工資”:“updates.salary”
}
)

把所有我感興趣的列,這樣我會得到真正的變化,我能做的我在上層的合並,隻有真正的改變?

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

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

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

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

Baidu
map