<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          萬字長文帶你了解ETL和數(shù)據(jù)建模~!

          共 9849字,需瀏覽 20分鐘

           ·

          2021-08-27 23:00

          什么是ETL

          ETL是數(shù)據(jù)抽取(Extract)、轉(zhuǎn)換(Transform)、加載(Load )的簡寫,它是將OLTP系統(tǒng)中的數(shù)據(jù)經(jīng)過抽取,并將不同數(shù)據(jù)源的數(shù)據(jù)進行轉(zhuǎn)換、整合,得出一致性的數(shù)據(jù),然后加載到數(shù)據(jù)倉庫中。簡而言之ETL是完成從 OLTP系統(tǒng)到OLAP系統(tǒng)的過程

          數(shù)據(jù)倉庫的架構(gòu)

          數(shù)據(jù)倉庫(Data Warehouse \ DW)是基于OLTP系統(tǒng)的數(shù)據(jù)源,為了便于多維分析和 多角度展現(xiàn)將其數(shù)據(jù)按特定的模式進行存儲而建立的關(guān)系型數(shù)據(jù)庫,它不同于多維數(shù)據(jù)庫,數(shù)據(jù)倉庫中的數(shù)據(jù)是細節(jié)的,集成的,數(shù)據(jù)倉庫是面向主題的,是以 OLAP系統(tǒng)為分析目的。它包括星型架構(gòu)與雪花型架構(gòu),其中星型架構(gòu)中間為事實表,四周為維度表, 類似星星;雪花型架構(gòu)中間為事實表,兩邊的維度表可以再有其關(guān)聯(lián)子表,而在星型中只允許一張表作為維度表與事實表關(guān)聯(lián),雪花型一維度可以有多張表,而星型 不可以。考慮到效率時,星型聚合快,效率高,不過雪花型結(jié)構(gòu)明確,便于與OLTP系統(tǒng)交互。在實際項目中,我們將綜合運用星型架構(gòu)與雪花型架構(gòu)。

          ETL構(gòu)建企業(yè)級數(shù)據(jù)倉庫五步法的流程

          1.確定主題

          即 確定數(shù)據(jù)分析或前端展現(xiàn)的某一方面的分析主題,例如我們分析某年某月某一地區(qū)的啤酒銷售情況,就是一個主題。主題要體現(xiàn)某一方面的各分析角度(維度)和統(tǒng) 計數(shù)值型數(shù)據(jù)(量度),確定主題時要綜合考慮,一個主題在數(shù)據(jù)倉庫中即為一個數(shù)據(jù)集市,數(shù)據(jù)集市體現(xiàn)了某一方面的信息,多個數(shù)據(jù)集市構(gòu)成了數(shù)據(jù)倉庫。

          2.確定量度

          在 確定了主題以后,我們將考慮要分析的技術(shù)指標(biāo),諸如年銷售額此類,一般為數(shù)值型數(shù)據(jù),或者將該數(shù)據(jù)匯總,或者將該數(shù)據(jù)取次數(shù),獨立次數(shù)或取最大最小值 等,這樣的數(shù)據(jù)稱之為量度。量度是要統(tǒng)計的指標(biāo),必須事先選擇恰當(dāng),基于不同的量度可以進行復(fù)雜關(guān)鍵性能指標(biāo)(KPI)等的計算。

          3.確定事實數(shù)據(jù)粒度

          在 確定了量度之后我們要考慮到該量度的匯總情況和不同維度下量度的聚合情況,考慮到量度的聚合程度不同,我們將采用“最小粒度原則”,即將量度的粒度設(shè)置 到最小,例如我們將按照時間對銷售額進行匯總,目前的數(shù)據(jù)最小記錄到天,即數(shù)據(jù)庫中記錄了每天的交易額,那么我們不能在ETL時將數(shù)據(jù)進行按月或年匯總, 需要保持到天,以便于后續(xù)對天進行分析。而且我們不必擔(dān)心數(shù)據(jù)量和數(shù)據(jù)沒有提前匯總帶來的問題,因為在后續(xù)的建立CUBE時已經(jīng)將數(shù)據(jù)提前匯總了。

          4.確定維度

          維 度是要分析的各個角度,例如我們希望按照時間,或者按照地區(qū),或者按照產(chǎn)品進行分析,那么這里的時間、地區(qū)、產(chǎn)品就是相應(yīng)的維度,基于不同的維度我們可 以看到各量度的匯總情況,我們可以基于所有的維度進行交叉分析。這里我們首先要確定維度的層次(Hierarchy)和級別(Level)(圖 四:pic4.jpg),維度的層次是指該維度的所有級別,包括各級別的屬性;維度的級別是指該維度下的成員,例如當(dāng)建立地區(qū)維度時我們將地區(qū)維度作為一 個級別,層次為省、市、縣三層,考慮到維度表要包含盡量多的信息,所以建立維度時要符合“矮胖原則”,即維度表要盡量寬,盡量包含所有的描述性信息,而不 是統(tǒng)計性的數(shù)據(jù)信息。

          還有一種常見的情況,就是父子型維度,該維度一般用于非葉子節(jié)點含有成員等情況,例如公司員工 的維度,在統(tǒng)計員工的工資時,部 門主管的工資不能等于下屬成員工資的簡單相加,必須對該主管的工資單獨統(tǒng)計,然后該主管部門的工資等于下屬員工工資加部門主管的工資,那么在建立員工維度 時,我們需要將員工維度建立成父子型維度,這樣在統(tǒng)計時,主管的工資會自動加上,避免了都是葉子節(jié)點才有數(shù)據(jù)的情況。

          另外,在建立維度表時要充 分使用代理鍵,代理鍵是數(shù)值型的ID號碼,好處是代理鍵唯一標(biāo)識了每一維度成員信息,便于區(qū)分,更重要的是在聚合時由于數(shù)值型匹 配,JOIN效率高,便于聚合,而且代理鍵對緩慢變化維度有更重要的意義,它起到了標(biāo)識歷史數(shù)據(jù)與新數(shù)據(jù)的作用,在原數(shù)據(jù)主鍵相同的情況下,代理鍵起到了 對新數(shù)據(jù)與歷史數(shù)據(jù)非常重要的標(biāo)識作用。

          有時我們也會遇到維度緩慢變化的情況,比如增加了新的產(chǎn)品,或者產(chǎn)品的ID號碼修改了,或者產(chǎn)品增加了一個新的屬性,此時某一維度的成員會隨著新的數(shù)據(jù)的加入而增加新的維度成員,這樣我們要考慮到緩慢變化維度的處理,對于緩慢變化維度,有三種情況:

          1. 緩慢變化維度第一種類型:歷史數(shù)據(jù)需要修改。這樣新來的數(shù)據(jù)要改寫歷史數(shù)據(jù),這時我們要使用UPDATE,例如產(chǎn)品的ID號碼為123,后來發(fā)現(xiàn)ID 號碼錯誤了,需要改寫成456,那么在修改好的新數(shù)據(jù)插入時,維度表中原來的ID號碼會相應(yīng)改為456,這樣在維度加載時要使用第一種類型,做法是完全更 改。

          2. 緩慢變化維度第二種類型:歷史數(shù)據(jù)保留,新增數(shù)據(jù)也要保留。這時要將原數(shù)據(jù)更新,將新數(shù)據(jù)插入,需要使用UPDATE / INSERT,比如某一員工2005年在A部門,2006年時他調(diào)到了B部門。那么在統(tǒng)計2005年的數(shù)據(jù)時就應(yīng)該將該員工定位到A部門;而在統(tǒng)計 2006年數(shù)據(jù)時就應(yīng)該定位到B部門,然后再有新的數(shù)據(jù)插入時,將按照新部門(B部門)進行處理,這樣我們的做法是將該維度成員列表加入標(biāo)識列,將歷史的 數(shù)據(jù)標(biāo)識為“過期”,將目前的數(shù)據(jù)標(biāo)識為“當(dāng)前的”。另一種方法是將該維度打上時間戳,即將歷史數(shù)據(jù)生效的時間段作為它的一個屬性,在與原始表匹配生成事 實表時將按照時間段進行關(guān)聯(lián),這樣的好處是該維度成員生效時間明確。

          3. 緩慢變化維度第三種類型:新增數(shù)據(jù)維度成員改變了屬性。例如某一維度成 員新加入了一列,該列在歷史數(shù)據(jù)中不能基于它瀏覽,而在目前數(shù)據(jù)和將來數(shù)據(jù)中可 以按照它瀏覽,那么此時我們需要改變維度表屬性,即加入新的列,那么我們將使用存儲過程或程序生成新的維度屬性,在后續(xù)的數(shù)據(jù)中將基于新的屬性進行查看。

          5.創(chuàng)建事實表

          在確定好事實數(shù)據(jù)和維度后,我們將考慮加載事實表。

          在公司的大量數(shù)據(jù)堆積如山時,我們想看看里面究竟是什么,結(jié)果發(fā)現(xiàn)里面是一筆筆生產(chǎn)記錄,一筆筆交易記錄… 那么這些記錄是我們將要建立的事實表的原始數(shù)據(jù),即關(guān)于某一主題的事實記錄表。

          我 們的做法是將原始表與維度表進行關(guān)聯(lián),生成事實表(圖六:pic6.jpg)。注意在關(guān)聯(lián)時有為空的數(shù)據(jù)時(數(shù)據(jù)源臟),需要使用外連接,連接后我們將 各維度的代理鍵取出放于事實表中,事實表除了各維度代理鍵外,還有各量度數(shù)據(jù),這將來自原始表,事實表中將存在維度代理鍵和各量度,而不應(yīng)該存在描述性信 息,即符合“瘦高原則”,即要求事實表數(shù)據(jù)條數(shù)盡量多(粒度最小),而描述性信息盡量少。

          如果考慮到擴展,可以將事實表加一唯一標(biāo)識列,以為了以后擴展將該事實作為雪花型維度,不過不需要時一般建議不用這樣做。

          事 實數(shù)據(jù)表是數(shù)據(jù)倉庫的核心,需要精心維護,在JOIN后將得到事實數(shù)據(jù)表,一般記錄條數(shù)都比較大,我們需要為其設(shè)置復(fù)合主鍵和索引,以為了數(shù)據(jù)的完整性和 基于數(shù)據(jù)倉庫的查詢性能優(yōu)化,事實數(shù)據(jù)表與維度表一起放于數(shù)據(jù)倉庫中,如果前端需要連接數(shù)據(jù)倉庫進行查詢,我們還需要建立一些相關(guān)的中間匯總表或物化視圖,以方便查詢。

          ETL中高級技巧的運用

          1.準(zhǔn)備區(qū)的運用

          在構(gòu)建數(shù)據(jù)倉庫時,如果數(shù)據(jù)源位于一服務(wù)器上,數(shù)據(jù)倉庫在另一 服務(wù)器端,考慮到數(shù)據(jù)源Server端訪問頻繁,并且數(shù)據(jù)量大,需要不斷更新,所以可以建立準(zhǔn)備區(qū)數(shù)據(jù)庫(圖七:pic7.jpg)。先將數(shù)據(jù)抽取到準(zhǔn)備 區(qū)中,然后基于準(zhǔn)備區(qū)中的數(shù)據(jù)進行處理,這樣處理的好處是防止了在原OLTP系統(tǒng)中中頻繁訪問,進行數(shù)據(jù)運算或排序等操作。例如我們可以按照天將數(shù)據(jù)抽取 到準(zhǔn)備區(qū)中,基于數(shù)據(jù)準(zhǔn)備區(qū),我們將進行數(shù)據(jù)的轉(zhuǎn)換,整合,將不同數(shù)據(jù)源的數(shù)據(jù)進行一致性處理。數(shù)據(jù)準(zhǔn)備區(qū)中將存在原始抽取表,一些轉(zhuǎn)換中間表和臨時表以 及ETL日志表等。

          2.時間戳的運用

          時間維度對于某一事實主題來說十分重要,因為不同的時間有不同的統(tǒng)計數(shù)據(jù)信息,那么按照時間記錄 的信息將發(fā)揮很重要的作用。在ETL中,時間戳有其特殊的 作用,在上面提到的緩慢變化維度中,我們可以使用時間戳標(biāo)識維度成員;在記錄數(shù)據(jù)庫和數(shù)據(jù)倉庫的操作時,我們也將使用時間戳標(biāo)識信息,例如在進行數(shù)據(jù)抽取 時,我們將按照時間戳對OLTP系統(tǒng)中的數(shù)據(jù)進行抽取,比如在午夜0:00取前一天的數(shù)據(jù),我們將按照OLTP系統(tǒng)中的時間戳取GETDATE到 GETDATE減一天,這樣得到前一天數(shù)據(jù)。

          3.日志表的運用

          在對數(shù)據(jù)進行處理時,難免會發(fā)生數(shù)據(jù)處理錯誤,產(chǎn)生出錯信息,那么我們 如何獲得出錯信息并及時修正呢? 方法是我們使用一張或多張Log日志表,將出錯信息記錄下來,在日志表中我們將記錄每次抽取的條數(shù),處理成功的條數(shù),處理失敗的條數(shù),處理失敗的數(shù)據(jù),處 理時間等等,這樣當(dāng)數(shù)據(jù)發(fā)生錯誤時,我們很容易發(fā)現(xiàn)問題所在,然后對出錯的數(shù)據(jù)進行修正或重新處理。

          4.使用調(diào)度

          在對數(shù)據(jù)倉庫進行 增量更新時必須使用調(diào)度(圖八:pic8.jpg),即對事實數(shù)據(jù)表進行增量更新處理,在使用調(diào)度前要考慮到事實數(shù)據(jù)量,需要多長時間更 新一次,比如希望按天進行查看,那么我們最好按天進行抽取,如果數(shù)據(jù)量不大,可以按照月或半年對數(shù)據(jù)進行更新,如果有緩慢變化維度情況,調(diào)度時需要考慮到 維度表更新情況,在更新事實數(shù)據(jù)表之前要先更新維度表。

          調(diào)度是數(shù)據(jù)倉庫的關(guān)鍵環(huán)節(jié),要考慮縝密,在ETL的流程搭建好后,要定期對其運行,所以 調(diào)度是執(zhí)行ETL流程的關(guān)鍵步驟,每一次調(diào)度除了寫入Log日志表 的數(shù)據(jù)處理信息外,還要使用發(fā)送Email或報警信息等,這樣也方便的技術(shù)人員對ETL流程的把握,增強了安全性和數(shù)據(jù)處理的準(zhǔn)確性。

          ETL構(gòu)建數(shù)據(jù)倉庫需要簡單的五步,掌握了這五步的方法我們將構(gòu)建一個強大的數(shù)據(jù)倉庫,不過每一步都有很深的需要研究與挖掘,尤其在實際項目中,我們要綜合考慮,例如如果數(shù)據(jù)源的臟數(shù)據(jù)很多,在搭建數(shù)據(jù)倉庫之前我們首先要進行數(shù)據(jù)清洗,以剔除掉不需要的信息和臟數(shù)據(jù)。

          總之,ETL是數(shù)據(jù)倉庫的核心,掌握了ETL構(gòu)建數(shù)據(jù)倉庫的五步法,就掌握了搭建數(shù)據(jù)倉庫的根本方法。不過,我們不能教條,基于不同的項目,我們還將要進行 具體分析,如父子型維度和緩慢變化維度的運用等。在數(shù)據(jù)倉庫構(gòu)建中,ETL關(guān)系到整個項目的數(shù)據(jù)質(zhì)量,所以馬虎不得,必須將其擺到重要位置,將ETL這一 大廈根基筑牢。

          ETL和SQL的區(qū)別與聯(lián)系

          如果ETL和SQL來說,肯定是SQL效率高的多。但是雙方各有優(yōu)勢,先說ETL,ETL主要面向的是建立數(shù)據(jù)倉庫來使用的。ETL更偏向數(shù)據(jù)清洗,多數(shù)據(jù)源數(shù)據(jù)整合,獲取增量,轉(zhuǎn)換加載到數(shù)據(jù)倉庫所使用的工具。比如我有兩個數(shù)據(jù)源,一個是數(shù)據(jù)庫的表,另外一個是excel數(shù)據(jù),而我需要合并這兩個數(shù)據(jù),通常這種東西在SQL語句中比較難實現(xiàn)。但是ETL卻有很多現(xiàn)成的組件和驅(qū)動,幾個組件就搞定了。還有比如跨服務(wù)器,并且服務(wù)器之間不能建立連接的數(shù)據(jù)源,比如我們公司系統(tǒng)分為一期和二期,存放的數(shù)據(jù)庫是不同的,數(shù)據(jù)結(jié)構(gòu)也不相同,數(shù)據(jù)庫之間也不能建立連接,這種情況下,ETL就顯得尤為重要和突出。通過固定的抽取,轉(zhuǎn)換,加載到數(shù)據(jù)倉庫中,即可很容易實現(xiàn)。

          那么SQL呢?SQL事實上只是固定的腳本語言,但是執(zhí)行效率高,速度快。不過靈活性不高,很難跨服務(wù)器整合數(shù)據(jù)。所以SQL更適合在固定數(shù)據(jù)庫中執(zhí)行大范圍的查詢和數(shù)據(jù)更改,由于腳本語言可以隨便編寫,所以在固定數(shù)據(jù)庫中能夠?qū)崿F(xiàn)的功能就相當(dāng)強大,不像ETL中功能只能受組件限制,組件有什么功能,才能實現(xiàn)什么功能。

          所以具體我們在什么時候使用ETL和SQL就很明顯了,當(dāng)我們需要多數(shù)據(jù)源整合建立數(shù)據(jù)倉庫,并進行數(shù)據(jù)分析的時候,我們使用ETL。如果是固定單一數(shù)據(jù)庫的數(shù)據(jù)層次處理,我們就使用SQL。當(dāng)然,ETL也是離不開SQL的。

          ETL算法和工具簡介:

          1.常用的ETL工具

          主要有三大主流工具,分別是Ascential公司的Datastage、Informatica公司的Powercenter、NCR Teradata公司的ETL Automation.還有其他開源工具,如PDI(Kettle)等。

          2.ETL是DW系統(tǒng)的基礎(chǔ)

          DW系統(tǒng)以事實發(fā)生數(shù)據(jù)為基礎(chǔ),自產(chǎn)數(shù)據(jù)較少。

          一個企業(yè)往往包含多個業(yè)務(wù)系統(tǒng),均可能成為DW數(shù)據(jù)源。

          業(yè)務(wù)系統(tǒng)數(shù)據(jù)質(zhì)量良莠不齊,必須學(xué)會去偽存真。

          業(yè)務(wù)系統(tǒng)數(shù)據(jù)紛繁復(fù)雜,要整合進數(shù)據(jù)模型。

          源數(shù)據(jù)之間關(guān)系也紛繁復(fù)雜,源數(shù)據(jù)在加工進DW系統(tǒng)時,有些必須遵照一定的先后次序關(guān)系;

          3.源數(shù)據(jù)的分類

          流水事件表:此類源表用于記錄交易等動作的發(fā)生,在源系統(tǒng)中會新增、大部分不會修改和刪除,少量表存在刪除情況。如定期存款登記簿;

          常規(guī)狀態(tài)表:此類源表用于記錄數(shù)據(jù)信息的狀態(tài)。在源系統(tǒng)中會新增、修改,也存在刪除的情況。如客戶信息表;

          代碼參數(shù)表:此類源表用于記錄源系統(tǒng)中使用到的數(shù)據(jù)代碼和參數(shù);

          4.數(shù)據(jù)文件的類型

          數(shù)據(jù)文件大多數(shù)以1天為固定的周期從源系統(tǒng)加載到數(shù)據(jù)倉庫。數(shù)據(jù)文件包含增量,全量以及待刪除的增量。

          增量數(shù)據(jù)文件:數(shù)據(jù)文件的內(nèi)容為數(shù)據(jù)表的增量信息,包含表內(nèi)新增及修改的記錄。

          全量數(shù)據(jù)文件:數(shù)據(jù)文件的內(nèi)容為數(shù)據(jù)表的全量信息,包含表內(nèi)的所有數(shù)據(jù)。

          帶刪除的增量:數(shù)據(jù)文件的內(nèi)容為數(shù)據(jù)表的增量信息,包含表內(nèi)新增、修改及刪除的記錄,通常刪除的記錄以字段DEL_IND='D'標(biāo)識該記錄。

          5.ETL標(biāo)準(zhǔn)算法

          可劃分為:歷史拉鏈算法、追加算法(事件表)、Upsert算法(主表)及全刪全加算法(參數(shù)表);

          6.ETL標(biāo)準(zhǔn)算法選擇

          歷史拉鏈:根據(jù)業(yè)務(wù)分析要求,對數(shù)據(jù)變化都要記錄,需要基于日期的連續(xù)歷史軌跡;

          追加(事件表):根據(jù)業(yè)務(wù)分析要求,對數(shù)據(jù)變化都要記錄,不需要基于日期的連續(xù)歷史軌跡;

          Upsert(主表):根據(jù)業(yè)務(wù)分析要求,對數(shù)據(jù)變化不需要都要記錄,當(dāng)前數(shù)據(jù)對歷史數(shù)據(jù)有影響;

          全刪全加算法(參數(shù)表):根據(jù)業(yè)務(wù)分析要求,對數(shù)據(jù)變化不需要都要記錄,當(dāng)前數(shù)據(jù)對歷史數(shù)據(jù)無影響;

          7.歷史拉鏈法

          所謂拉鏈,就是記錄歷史,記錄一個事務(wù)從開始,一直到當(dāng)前狀態(tài)的所有變化信息(參數(shù)新增開始結(jié)束日期);

          8.追加算法

          一般用于事件表,事件之間相對獨立,不存在對歷史信息進行更新;

          9.Upsert算法

          是update和insert組合體,一般用于對歷史信息變化不需要進行跟蹤保留、只需其最新狀態(tài)且數(shù)據(jù)量有一定規(guī)模的表,如客戶資料表;

          10.全刪全加算法

          一般用于數(shù)據(jù)量不大的參數(shù)表,把歷史數(shù)據(jù)全部刪除,然后重新全量加載;

          11.處理復(fù)雜度

          歷史拉鏈,Upsert,Append,全刪全加;加載性能:全刪全加,Append,Upsert,歷史拉鏈;

          12.近源模型層主要算法

          APPEND算法,常規(guī)拉鏈算法,全量帶刪除拉鏈算法;

          13.整合模型層算法

          APPEND算法,MERGE算法,常規(guī)拉鏈算法,基于增量數(shù)據(jù)的刪除拉鏈算法,基于全量數(shù)據(jù)的刪除拉鏈算法,經(jīng)濟型常規(guī)拉鏈算法,經(jīng)濟型基于增量數(shù)據(jù)的刪除拉鏈算法,經(jīng)濟型基于全量數(shù)據(jù)的刪除拉鏈算法,PK_NOT_IN_APPEND算法,源日期字段自拉鏈算法;

          14.技術(shù)緩沖到近源模型層的數(shù)據(jù)流算法-APPEND算法

          此算法通常用于流水事件表,適合這類算法的源表在源系統(tǒng)中不會更新和刪除,而只會發(fā)生一筆添加一筆,所以只需每天將交易日期為當(dāng)日最新數(shù)據(jù)取過來直接附加到目標(biāo)表即可,此類表在近源模型層的字段與技術(shù)緩沖層、源系統(tǒng)表基本上完全一致,不會額外增加物理化處理字段,使用時也與源系統(tǒng)表的查詢方式相同;

          15.技術(shù)緩沖到近源模型層的數(shù)據(jù)流算法-常規(guī)拉鏈算法

          此算法通常用于無刪除操作的常規(guī)狀態(tài)表,適合這類算法的源表在源系統(tǒng)中會新增、修改,但不刪除,所以需每天獲取當(dāng)日末最新數(shù)據(jù)(增量或全增量均可),先找出真正的增量數(shù)據(jù)(新增和修改),用它們將目標(biāo)表中屬性發(fā)生修改的開鏈數(shù)據(jù)(有效數(shù)據(jù))進行關(guān)鏈操作(即END_DT關(guān)閉到當(dāng)前業(yè)務(wù)日期),然后再將最新的增量數(shù)據(jù)作為開鏈數(shù)據(jù)插入到目標(biāo)表即可。

          此類表再近源模型層比技術(shù)緩沖層、源系統(tǒng)的相應(yīng)表額外增加兩個物理化處理字段START_DT(開始日期)和END_DT(結(jié)束日期),使用時需要先選定視覺日期,通過START_DT和END_DT去卡視覺日期,即START_DT<='視覺日期'AND END_DT>'視覺日期';

          16.技術(shù)緩沖到近源模型層的數(shù)據(jù)流算法-全量帶刪除拉鏈算法

          此算法通常用于有刪除操作的常規(guī)狀態(tài)類表,并且要求全量的數(shù)據(jù)文件,用以對比出刪除增量;適合這類算法的源表在源系統(tǒng)中會新增,修改,刪除,每天將當(dāng)日末最新全量數(shù)據(jù)取過來外,分別找出真正的增量數(shù)據(jù)(新增,修改)和刪除增量數(shù)據(jù),用它們將目標(biāo)表中屬性發(fā)生修改的開鏈數(shù)據(jù)(有效數(shù)據(jù))進行關(guān)鏈操作(即END_DT關(guān)閉到當(dāng)前業(yè)務(wù)日期),然后再將最新增量數(shù)據(jù)中真正的增量及刪除數(shù)據(jù)作為開鏈數(shù)據(jù)插入到目標(biāo)表即可,注意刪除記錄的刪除標(biāo)志DEL_IND會設(shè)置為‘D’;

          此類表在近源模型層比技術(shù)緩沖層,源系統(tǒng)的相應(yīng)表額外增加三個物理化處理字段START_DT(開始日期),ENT_DT(結(jié)束日期),DEL_IND(刪除標(biāo)準(zhǔn))。使用方式分兩類:一時一般查詢使用,此時需要先選定視角日期,通過START_DT和END_DT去卡視角日期,即START_DT<='視角日期' AND END_DT>‘視角日期’,同時加上條件DEL_IND <> 'D';另一種是下載或獲取當(dāng)日增量數(shù)據(jù),此時就是需要START_DT<='視角日期' AND END_DT>'視角日期' 一個條件即可,不需要加DEL_IND <> 'D'的條件。

          17.近源模型層到整合模型層的數(shù)據(jù)流算法-APPEND算法

          此算法通常用于流水事件表,適合這類算法的源表在源系統(tǒng)中不會更新和刪除,而只會發(fā)生一筆添加一筆,所以只需每天將交易日期為當(dāng)日的最新數(shù)據(jù)取過來直接附加到目標(biāo)表即可;

          通常建一張名為VT_NEW_編號的臨時表,用于將各組當(dāng)日最新數(shù)據(jù)轉(zhuǎn)換加到VT_NEW_編號后,再一次附加到最終目標(biāo)表;

          18.近源模型層到整合模型層的數(shù)據(jù)流算法-MERGE INTO算法

          此算法通常用于無刪除操作的常規(guī)狀態(tài)表,一般是無需保留歷史而只保留當(dāng)前最新狀態(tài)的表,適合這類算法的源表在源系統(tǒng)中會新增,修改,但不刪除,所以需獲取當(dāng)日末最新數(shù)據(jù)(增量或全量均可),用于MERGE IN或UPSERT目標(biāo)表;為了效率及識別真正增量的要求,通常先識別出真正的增量數(shù)據(jù)(新增及修改數(shù)據(jù)),然后再用這些真正的增量數(shù)據(jù)向目標(biāo)表進行MERGE INTO操作;

          通常建兩張臨時表,一個名為VT_NEW_編號,用于將各組當(dāng)日最新數(shù)據(jù)轉(zhuǎn)換加到VT_NEW_編號;另一張名為VT_INC_編號,將VT_NEW_編號與目標(biāo)表中昨日的數(shù)據(jù)進行對比后找出真正的增量數(shù)據(jù)(新增和修改)放入VT_INC_編號,然后再用VT_INC_編號對最終目標(biāo)表進行MERGE INTO或UPSERT。

          19.近源模型層到整合模型層的數(shù)據(jù)流算法-常規(guī)拉鏈算法

          此算法通常用于無刪除操作的常規(guī)狀態(tài)表,適合這類算法的源表在源系統(tǒng)中會新增、修改,但不刪除,所以需每天獲取當(dāng)日末最新數(shù)據(jù)(增量或全增量均可),先找出真正的增量數(shù)據(jù)(新增和修改),用它們將目標(biāo)表中屬性發(fā)生修改的開鏈數(shù)據(jù)(有效數(shù)據(jù))進行關(guān)鏈操作(即END_DT關(guān)閉到當(dāng)前業(yè)務(wù)日期),然后再將最新增量數(shù)據(jù)作為開鏈數(shù)據(jù)插入到目標(biāo)表即可;

          通常建兩張臨時表,一個名為VT_NEW_編號,用于將各組當(dāng)日最新數(shù)據(jù)轉(zhuǎn)換加到VT_NEW_編號;另一張名為VT_INC_編號,將VT_NEW_編號與目標(biāo)表中昨日的數(shù)據(jù)進行對比后找出真正的增量數(shù)據(jù)(新增和修改)放入VT_INC_編號,然后再將最終目標(biāo)表的開鏈數(shù)據(jù)中的PK出現(xiàn)在VT_INT_編號中進行關(guān)鏈處理,然后將VT_INC_編號中的所有數(shù)據(jù)作為開鏈數(shù)據(jù)插入最終目標(biāo)表即可。

          20.近源模型層到整合模型層的數(shù)據(jù)流算法-基于增量數(shù)據(jù)刪除拉鏈算法

          此算法通常用于有刪除操作的常規(guī)狀態(tài)表,并且要求刪除數(shù)據(jù)是以DEL_IND='D'刪除增量的形式提供;適合這類算法的源表再源系統(tǒng)中會新增、修改、刪除,除每天獲取當(dāng)日末最新數(shù)據(jù)(增量或全量均可)外,還要獲取當(dāng)日刪除的數(shù)據(jù),根據(jù)找出的真正增量數(shù)據(jù)(新增和修改)以及刪除增量數(shù)據(jù),用它們將目標(biāo)表中屬性發(fā)生修改的開鏈數(shù)據(jù)(有效數(shù)據(jù))進行關(guān)鏈操作(即END_DT關(guān)閉到當(dāng)前業(yè)務(wù)時間),然后再將增量(不含刪除數(shù)據(jù))作為開鏈數(shù)據(jù)插入到目標(biāo)表中即可;

          通常建三張臨時表,一個名為VT_NEW_編號,用于將各組當(dāng)日最新數(shù)據(jù) (不含刪除數(shù)據(jù))轉(zhuǎn)換加載到VT_NEW_編號;第二張表名為VT_INC_編號,用VT_NEW_編號與目標(biāo)表中的昨日的數(shù)據(jù)進行對比后找出真正的增量數(shù)據(jù)放入VT_INC_編號;第三張表名為VT_DEL_編號,將刪除增量數(shù)據(jù)轉(zhuǎn)換加載到VT_DEL_編號;最后再將最終目標(biāo)表的開鏈數(shù)據(jù)中PK出現(xiàn)在VT_INC_編號或VT_DEL_編號中的進行關(guān)鏈處理,最后將VT_INC_編號中的所有數(shù)據(jù)作為開鏈數(shù)據(jù)插入最終目標(biāo)表即可;

          21.近源模型層到整合模型層的數(shù)據(jù)流算法-基于全量數(shù)據(jù)刪除拉鏈算法

          此算法通常用于有刪除操作的常規(guī)狀態(tài)表,并且要求提供全量數(shù)據(jù),用以對比出刪除增量;適合這類算法的源表在源系統(tǒng)中會新增、修改、每天將當(dāng)日末的最新全量數(shù)據(jù)取過來外,分別找出真正的增量數(shù)據(jù)(新增、修改)和刪除增量數(shù)據(jù),用它們將目標(biāo)表中屬性發(fā)生修改的開鏈數(shù)據(jù)(有效記錄)進行關(guān)鏈操作(即END_DT關(guān)閉到當(dāng)前業(yè)務(wù)時間),然后再將最新數(shù)據(jù)中真正的增量數(shù)據(jù)(不含刪除數(shù)據(jù))作為開鏈數(shù)據(jù)插入到目標(biāo)表即可;

          通常建兩張臨時表,一個名為VT_NEW_編號,用于將各組當(dāng)日最新全量數(shù)據(jù)轉(zhuǎn)換到VT_NEW_編號;另一張表名為VT_INC_編號,將VT_NEW_編號與目標(biāo)表中昨日的數(shù)據(jù)進行對比后找出真正的增量數(shù)據(jù)(新增、修改)和刪除增量數(shù)據(jù)放入VT_INC_編號,注意將其中的刪除增量數(shù)據(jù)的END_DT置以最小日期(借用);最后再將最終目標(biāo)表的開鏈數(shù)據(jù)中PK出現(xiàn)再VT_INC_編號或VT_DEL_編號中的進行關(guān)鏈處理,然后將VT_INC_編號中所有的END_DT不等于最小日期數(shù)據(jù)(非刪除數(shù)據(jù))作為開鏈數(shù)據(jù)插入最終目標(biāo)表即可;

          22.近源模型層到整合模型層的數(shù)據(jù)流算法-經(jīng)濟型常規(guī)拉鏈算法

          此算法基本等同與常規(guī)拉算法,只是在最后一步只將屬性非空即非0的記錄才作為開鏈數(shù)據(jù)插入目標(biāo)表;

          23.近源模型層到整合模型層的數(shù)據(jù)流算法-經(jīng)濟型基于增量數(shù)據(jù)刪除拉鏈算法

          此算法基本等同于基于增量數(shù)據(jù)刪除拉鏈算法,只是在最后一步只將屬性非空及非0的記錄才作為開鏈數(shù)據(jù)插入目標(biāo)表;

          24.近源模型層到整合模型層的數(shù)據(jù)流算法-經(jīng)濟型基于全量數(shù)據(jù)刪除拉鏈算法

          此算法基本等同于基于全量數(shù)據(jù)刪除拉鏈算法,只是在最后一步只將屬性非空及非0的記錄才作為開鏈數(shù)據(jù)插入目標(biāo)表;

          25.近源模型層到整合模型層的數(shù)據(jù)流算法-PK_NOT_IN_APPEND算法

          此算法是對每一組只將PK在當(dāng)前VT_NEW_編號表中未出現(xiàn)的數(shù)據(jù)再插入VT_NEW_編號表,最后再將PK未出現(xiàn)在目標(biāo)表中的數(shù)據(jù)插入目標(biāo)表,以保證只進那些PK未進過的數(shù)據(jù);

          26.近源模型層到整合模型層的數(shù)據(jù)流算法-以源日期字段自拉鏈算法

          此算法是源表中有日期字段標(biāo)識當(dāng)前記錄的生效日期,本算法通過對同主鍵記錄按這個生效日期排序后,一次首尾相連行形成一條自然拉鏈的算法

          來源:https://zhuanlan.zhihu.com/p/59184600

          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設(shè)PPT)

          企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

          論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

          華為的數(shù)字化轉(zhuǎn)型方法論

          華為如何實施數(shù)字化轉(zhuǎn)型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  波多野结衣中文字幕乱码 | 欧美网站在线播放 | 日韩黄色一级电影 | 天天操好逼网 | 最新免费黄色网址 |