狀態類無刪除表的拉鍊演算法原理及退鏈操作

2022-07-15 05:18:11 字數 1371 閱讀 6296

2211演算法,是從技術緩衝層向近源模型層載入狀態類無刪除表的常規拉鍊演算法。

以下面這兩條資料為例,第二個欄位acct_num(賬號)是主鍵,假設現在跑批進行到2020/10/16了(即tx_date為2020/10/16)

可以看出主鍵acct_num為612401395資料的歷史變化:

1.

2020/09/30——誕生第一條資料,這時我們還不知道它的狀態持續到什麼時候,於是假設持續到3000/12/31,這條資料處於開鏈狀態

2.

2020/10/10——資料發生變動了,於是把這條資料「閉鏈」,end_dt更新為2020/10/10,表示2020/09/30-2020/10/10期間,資料是穩定不變的狀態。

3

因為資料在2020/10/10發生了變化,有了新的狀態,所以新增一條狀態,開始時間就是資料發生變動的時間2020/10/10,而且持續到現在2020/10/16還是這種狀態,我們也不知道它什麼時候還會變動,於是同樣假設了乙個無限久遠的日期(3000/12/31)

現在,我們要把這個表退鏈到2020/10/09未載入狀態(也就是2020/10/08載入完成後的狀態),要把從2020/10/09開始新增的資料刪掉,操作流程如下:

1.刪掉2020/10/08之後新增的資料

delete

from odb. sco zdm dtextr mdmds info bak where start_dt>date'

2020-10-08

';

刪掉後可以查一下表:

確實刪掉了start_dt>date'2020-10-08』的資料

2.

把截止到2020/10/08最後一條資料「開鏈」

update odb. sco_zdm_dtextr_mdmds_info_bak set end_dt=date'

3000-12-31

'where end_dt>date'

2020-10-08

';

操作後查下表:

end_dt已經變為3000/12/31

這時,資料就退鏈到了tx_date等於2020/10/09未載入狀態(也就是odb已經載入到tx_date=2020/10/08),由於這條資料是tx_date=2020/10/10才發生變化的,所以,資料狀態實際和它剛誕生時是一樣的。

資料庫拉鍊算後記 不帶刪除的拉鍊演算法

之前的拉鍊演算法中 該演算法流水表中標識需要刪除的資料時,是通過修改表記錄中帳號狀態來表示資料刪除的,實際上在向近源模型層載入時只發生了增 改兩種狀態。當在近源模型層搜尋所有有效賬戶時候,被 刪除 的記錄的end date也是3000 12 31,所以搜尋到的有效記錄中包含了標識為被刪除的記錄。故該...

演算法 刪除鍊錶中的節點

題目 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點。傳入函式的唯一引數為 要被刪除的節點 現有乙個鍊錶 head 4,5,1,9 它可以表示為 示例 1 輸入 head 4,5,1,9 node 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,...

K Means聚類演算法的原理及實現

1 如何理解k means演算法?2 如何尋找k值及初始質心?3 如何應用k means演算法處理資料?k means是聚類演算法中的一種,其中k表示類別數,means表示均值。顧名思義k means是一種通過均值對資料點進行聚類的演算法。k means演算法通過預先設定的k值及每個類別的初始質心對...