麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > 綜合 > 正文

緩慢漸變維度 (Slowly Changing Dimension) 常見的三種類型及原型設(shè)計(jì)

2024-07-21 02:52:49
字體:
供稿:網(wǎng)友

目錄(?)[+]

在從 OLTP 業(yè)務(wù)數(shù)據(jù)庫向 DW 數(shù)據(jù)倉庫抽取數(shù)據(jù)的過程中,特別是第一次導(dǎo)入之后的每一次增量抽取往往會遇到這樣的問題:業(yè)務(wù)數(shù)據(jù)庫中的一些數(shù)據(jù)發(fā)生了更改,到底要不要將這些變化也反映到數(shù)據(jù)倉庫中?在數(shù)據(jù)倉庫中,哪些數(shù)據(jù)應(yīng)該隨之變化,哪些可以不用變化?考慮到這些變化,在數(shù)據(jù)倉庫中的維度表又應(yīng)該如何設(shè)計(jì)以滿足這些需要。

很顯然在業(yè)務(wù)數(shù)據(jù)庫中數(shù)據(jù)的變化是非常自然和正常的,比如顧客的聯(lián)系方式,手機(jī)號碼等信息可能隨著顧客的所在地的更改發(fā)生變化,比如商品的價格在不同時期有上漲和下降的變化。那么在業(yè)務(wù)數(shù)據(jù)庫中,很自然的就會修改并馬上反映到實(shí)際業(yè)務(wù)當(dāng)中去。但是在數(shù)據(jù)倉庫中,其數(shù)據(jù)主要的特征一是靜態(tài)歷史數(shù)據(jù),二是少改變不刪除,三是定期增長,其作用主要用來數(shù)據(jù)分析。因此分析的過程中對歷史數(shù)據(jù)就提出了要求,有一些數(shù)據(jù)是需要能夠反映出在周期內(nèi)的變化歷史,有一些數(shù)據(jù)缺不需要,那么這些數(shù)據(jù)應(yīng)該如何來控制。

假設(shè)在第一次從業(yè)務(wù)數(shù)據(jù)庫中加載了一批數(shù)據(jù)到數(shù)據(jù)倉庫中,當(dāng)時業(yè)務(wù)數(shù)據(jù)庫有這樣的一條顧客的信息。

顧客 BIWORK ,居住在北京,目前是一名 BI 的開發(fā)工程師。假設(shè) BIWORK 因?yàn)楸本┛諝赓|(zhì)量 PM2.5 等原因從北京搬到了三亞。那么這條信息在業(yè)務(wù)數(shù)據(jù)庫中應(yīng)該被更新了 -

 

那么當(dāng)下次從業(yè)務(wù)數(shù)據(jù)庫中抽取這類信息的時候,數(shù)據(jù)倉庫又應(yīng)該如何處理呢?我們假設(shè)在數(shù)據(jù)倉庫中實(shí)現(xiàn)了與業(yè)務(wù)數(shù)據(jù)庫之間的同步,數(shù)據(jù)倉庫中也直接將詞條數(shù)據(jù)修改更新。后來我們創(chuàng)建報(bào)表做一些簡單的數(shù)據(jù)統(tǒng)計(jì)分析,這時在數(shù)據(jù)倉庫中所有對顧客 BIWORK 的銷售都指向了 BIWORK 新的所在地 - 城市三亞,但是實(shí)際上 BIWORK 在之前所有的購買都發(fā)生在 BIWORK 居住在北京的時候。這是一個非常簡單的例子,它描述了因一些基本信息的更改可能會引起數(shù)據(jù)歸納和分析出現(xiàn)的問題。但是有時,這種場景的的確確可能是存在的。

為了解決類似于這樣的問題需要了解數(shù)據(jù)倉庫中的一個非常重要的概念 - 緩慢漸變維度。

緩慢漸變類型一 (Type 1 SCD)

在數(shù)據(jù)倉庫中,我們可以保持業(yè)務(wù)數(shù)據(jù)和數(shù)據(jù)倉庫中的數(shù)據(jù)始終處于一致。可以在 Customer 維度中使用來自業(yè)務(wù)數(shù)據(jù)庫中的 Business Key - CustomerID 來追蹤業(yè)務(wù)數(shù)據(jù)的變化,一旦發(fā)生變化那么就將舊的業(yè)務(wù)數(shù)據(jù)覆蓋重寫。

DW 中的記錄根據(jù)業(yè)務(wù)數(shù)據(jù)庫中的 CustomerID 獲取了最新的 City 信息,直接更新到 DW 中。

緩慢漸變類型二 (Type 2 SCD)

當(dāng)然在數(shù)據(jù)倉庫中更多是對相對靜態(tài)的歷史數(shù)據(jù)進(jìn)行數(shù)據(jù)的匯總和分析,因此會盡可能的維護(hù)來自業(yè)務(wù)系統(tǒng)中的歷史數(shù)據(jù),能夠真正捕獲到這種歷史數(shù)據(jù)的變化。以上面的例子來說,可能需要分析的結(jié)果是 BIWORK 在 2012年的時候購買額度整體平穩(wěn),但是從2013年開始購買額度減少了,出現(xiàn)的原因可能與所在的城市有關(guān)系,在北京的門店可能比在三亞的門店相對要多一些。像這種情況,就不能很簡單在數(shù)據(jù)倉庫中將 BIWORK 當(dāng)前所在城市直接更新,而應(yīng)該新增加一條數(shù)據(jù)來說明現(xiàn)在 BIWORK 所在地是在 Sanya。

但是如果僅僅在 DW 中新增一條新的數(shù)據(jù)仍然會出現(xiàn)新的問題,因?yàn)樵?nbsp;DW 中標(biāo)識這個顧客是通過 CustomerID 來實(shí)現(xiàn)的,這條 CustomerID 來源于業(yè)務(wù)數(shù)據(jù)庫,它是唯一的。然而在 DW 中新增一條數(shù)據(jù)來保存業(yè)務(wù)數(shù)據(jù)庫中歷史信息,就無法保證這條數(shù)據(jù)在 DW 中的唯一性了,其它的 DW 數(shù)據(jù)表關(guān)聯(lián)到這張表就無法知道應(yīng)該如何引用這個 Customer 的信息。實(shí)際上,如果 CustomerID 在 DW 中也作為主鍵來唯一標(biāo)識 Customer 的話,在插入新數(shù)據(jù)的時候就會發(fā)生失敗。

因此我們需要繼續(xù)保持 Business Key 業(yè)務(wù)鍵,因?yàn)樗顷P(guān)聯(lián)到業(yè)務(wù)數(shù)據(jù)庫的唯一紐帶。做出改變的部分就是新增加一個 Key,一個數(shù)據(jù)倉庫的鍵。在數(shù)據(jù)倉庫的術(shù)語里面,這個唯一標(biāo)識數(shù)據(jù)倉庫表記錄的鍵我們稱之為 Surrogate Key 代理鍵,通常設(shè)置為DW表的主鍵。

在上面這張表中,其中 -

CustomerID - Business Key 業(yè)務(wù)鍵,用來連接業(yè)務(wù)數(shù)據(jù)庫和數(shù)據(jù)倉庫的鍵,注意無論在業(yè)務(wù)數(shù)據(jù)庫還是數(shù)據(jù)倉庫無論任何時候都不應(yīng)該發(fā)生改變。DWID - Surrogate Key 代理鍵,一般設(shè)置為 DW 維度表的主鍵,用來在數(shù)據(jù)倉庫內(nèi)部中的維度表和事實(shí)表建立關(guān)聯(lián)。

為什么使用代理鍵,有什么好處?

假設(shè)我們的業(yè)務(wù)數(shù)據(jù)庫來自于不同的系統(tǒng),對這些數(shù)據(jù)進(jìn)行整合的時候有可能出現(xiàn)相同的 Business Key,這時通過 Surrogate Key 就可以解決這個問題。一般來自業(yè)務(wù)數(shù)據(jù)庫中的 Business Key 可能字段較長,比如 GUID,長字符串標(biāo)識等,使用Surrogate Key 可以直接設(shè)置成整形的。事實(shí)表本身體積就很大,關(guān)聯(lián) Surrogate Key 與關(guān)聯(lián) Business Key 相比,Surrogate Key 效率更高,并且節(jié)省事實(shí)表體積。最重要的一點(diǎn)就是上面舉到的這個例子,使用 Surrogate Key 可以更好的解決這種緩慢漸變維度,維護(hù)歷史信息記錄。

什么時候可以不用代理鍵?我覺得可以結(jié)合我們的實(shí)際業(yè)務(wù),比如像有些業(yè)務(wù)表本身的 Business Key 就已經(jīng)是整形的了,并且表中的屬性基本上不隨著時間或地理發(fā)生改變。比如像某些國家名稱,地區(qū)編號編碼等等基本上不會怎么發(fā)生改變,即使改變了也不需要維護(hù)歷史記錄這樣的情況下可以直接使用業(yè)務(wù)數(shù)據(jù)庫中的 Business Key 而不需要設(shè)置新的 Surrogate Key。

接著上面的表結(jié)構(gòu)講,光這樣設(shè)置了新的 Surrogate Key - DWID 是不夠的,因?yàn)檫€需要告訴數(shù)據(jù)倉庫哪一條信息是現(xiàn)在正在使用的。當(dāng)然可以根據(jù) DWID 的順序來查出最新的記錄,但是每次都要比較 CustomerID 然后找出最大的 DWID 這樣的查詢比較麻煩。

因此可以額外一個標(biāo)志表示這條數(shù)據(jù)是最新更改的。

另外的一種方式就是通過起始時間來標(biāo)識,Valid To 為 NULL 的標(biāo)識當(dāng)前數(shù)據(jù)。

 

當(dāng)然,也有將兩者都綜合的。

還有一種情況就是混合使用 Type 1 和 Type 2 的,比如說 Occupation 這個字段在業(yè)務(wù)數(shù)據(jù)庫中發(fā)生了變化,但是可以不用維護(hù)這個歷史信息,因此可能的做法是直接將最新的 Occupation 在數(shù)據(jù)倉庫中覆蓋掉。

根據(jù)實(shí)際情況,還有一種做法就是全部覆蓋掉。

緩慢漸變類型三 (Type 3 SCD)

實(shí)際上 Type 1 and 2 可以滿足大多數(shù)需求了,但是仍然有其它的解決方案,比如說 Type 3 SCD。 Type 3 SCD 希望只維護(hù)更少的歷史記錄,

比如說把要維護(hù)的歷史字段新增一列,然后每次只更新 Current Column 和 PRevious Column。這樣,只保存了最近兩次的歷史記錄。但是如果要維護(hù)的字段比較多,就比較麻煩,因?yàn)橐嗟?nbsp;Current 和 Previous 字段。所以 Type 3 SCD 用的還是沒有 Type 1 和 Type 2 那么普遍。

 

總結(jié)

Type 1 SCD - 不記錄歷史數(shù)據(jù)。一切不需要維護(hù)的歷史數(shù)據(jù)都可以選擇 Type 1 ,假設(shè)地理信息中的國家名稱發(fā)生更改,像這種數(shù)據(jù)基本上不需要維護(hù)的話,那么就直接使用 Type 1 SCD 覆蓋舊的國家名稱。Type 2 SCD - 添加新的數(shù)據(jù)。使用的比較常見,基本上除了 Type 1 SCD 之外的情形都會優(yōu)先考慮 Type 2 SCD。Type 3 SCD - 添加歷史列。不會追蹤所有的歷史記錄,只會追蹤上一次的歷史信息。這種情況往往介于 Type 1 和 Type 2 的時候會考慮,需要記錄歷史數(shù)據(jù),但是又不需要記錄那么多。

其它的相關(guān)文章

關(guān)于在 SSIS 中如何實(shí)現(xiàn) SCD 請參看 微軟BI SSIS 系列 - 數(shù)據(jù)倉庫中實(shí)現(xiàn) Slowly Changing Dimension 緩慢漸變維度的三種方式

PS 說明

在不同的工具中對 SCD 的實(shí)現(xiàn)是不一樣的,比如在微軟 SSIS SCD 控件的設(shè)計(jì)當(dāng)中對 SCD 的實(shí)現(xiàn)包括 Kimball 的書等等 :

Type 0 - Fixed Attribute 不變化的屬性。Type 1 - Changing Attribute 可變化的屬性,會重寫數(shù)據(jù)。Type 2 - Historical Attribute 歷史屬性。

所以和我這里介紹到的三種 Type SCD 基本類型在原型和概念實(shí)現(xiàn)上有一些區(qū)別,這一點(diǎn)希望大家不要混淆,關(guān)注的重點(diǎn)應(yīng)該是具體的實(shí)現(xiàn)方式和解決思路的原型。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产无遮挡一级毛片 | 91久久国产综合精品女同国语 | 日本一道aⅴ不卡免费播放 视屏一区 | 久草在线手机视频 | 久久97视频 | 欧美亚洲综合网 | 在线免费黄色网 | 九一免费版在线观看 | 一区二区免费看 | 免费一区二区三区 | 中国免费一级毛片 | 亚洲综人网 | jizzjizzjizz少妇 | 亚洲精品动漫在线观看 | 久久久久久久久国产精品 | 国产精品一区二区视频 | 爱福利视频网 | 一级免费观看 | 一区二区三区在线观看免费视频 | 羞羞视频免费网站入口 | 91短视频版高清在线观看www | 成人黄色小视频在线观看 | 日本在线观看视频网站 | 石原莉奈日韩一区二区三区 | 亚洲午夜视频 | 午夜影视一区二区 | av在线更新 | 国产高清美女一级毛片久久 | 今井夏帆av一区二区 | 在线亚洲欧美日韩 | 欧美囗交 | 久艹在线视频 | 精品国产九九九 | 斗破苍穹在线观看免费完整观看 | 久久午夜免费视频 | 欧美淫视频 | 一区二区三区黄色 | 视频一区二区三区在线 | 56av国产精品久久久久久久 | 黄在线看 | 中文字幕视频在线播放 |