ETL工具在構(gòu)建完整的數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中的運(yùn)用探討論文
ETL工具在構(gòu)建完整的數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中的運(yùn)用探討論文
ETL,是英文 Extract-Transform-Load 的縮寫(xiě),用來(lái)描述將數(shù)據(jù)從來(lái)源端經(jīng)過(guò)抽取(extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過(guò)程。ETL是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要一環(huán),用戶(hù)從數(shù)據(jù)源抽取出所需的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)倉(cāng)庫(kù)模型,將數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)中去。以下是學(xué)習(xí)啦小編今天為大家精心準(zhǔn)備的:ETL工具在構(gòu)建完整的數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中的運(yùn)用探討相關(guān)論文。內(nèi)容僅供參考,歡迎閱讀!
ETL工具在構(gòu)建完整的數(shù)據(jù)倉(cāng)庫(kù)體系結(jié)構(gòu)中的運(yùn)用探討全文如下:
1 數(shù)據(jù)倉(cāng)庫(kù)的體系結(jié)構(gòu)
數(shù)據(jù)倉(cāng)庫(kù)是面向主題的、集成的、相對(duì)穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合。它通常是指一個(gè)數(shù)據(jù)環(huán)境,通過(guò)提供當(dāng)前和歷史數(shù)據(jù)來(lái)輔助決策支持。數(shù)據(jù)倉(cāng)庫(kù)的組成部分有:數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)、ETL 工具、元數(shù)據(jù)、訪問(wèn)工具、數(shù)據(jù)集市、數(shù)據(jù)倉(cāng)庫(kù)管理等。通過(guò)對(duì)多個(gè)異構(gòu)數(shù)據(jù)源進(jìn)行有效的集成,并按照應(yīng)用主題進(jìn)行數(shù)據(jù)重組和展示,就形成了數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。由此,根據(jù)應(yīng)用需求的不同,數(shù)據(jù)倉(cāng)庫(kù)的體系結(jié)構(gòu)可以分為以下四種:
(1)兩層結(jié)構(gòu):源數(shù)據(jù)系統(tǒng)經(jīng)過(guò)處理直接加載到數(shù)據(jù)倉(cāng)庫(kù);(2)獨(dú)立型數(shù)據(jù)集市:加工成多個(gè)獨(dú)立的數(shù)據(jù)集市來(lái)滿(mǎn)足多種應(yīng)用需求;(3)依賴(lài)型數(shù)據(jù)集市和操作型數(shù)據(jù)存儲(chǔ):完整的數(shù)據(jù)倉(cāng)庫(kù),多個(gè)源數(shù)據(jù)系統(tǒng)先集成到操作型數(shù)據(jù)存儲(chǔ)(ODS),再轉(zhuǎn)換、加載到數(shù)據(jù)倉(cāng)庫(kù),最后形成部門(mén)級(jí)數(shù)據(jù)集市。文章描述的就是此體系結(jié)構(gòu)的構(gòu)建過(guò)程。它的特點(diǎn)是:整合多個(gè)復(fù)雜的源數(shù)據(jù)系統(tǒng);實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)轉(zhuǎn)換處理;提供多層次的數(shù)據(jù)訪問(wèn);滿(mǎn)足多部門(mén)的即獨(dú)立又交叉的應(yīng)用需求;(4)邏輯型數(shù)據(jù)集市和實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù):沒(méi)有獨(dú)立的數(shù)據(jù)集市,體現(xiàn)數(shù)據(jù)加工的實(shí)時(shí)性。
2 數(shù)據(jù)倉(cāng)庫(kù)的ETL 過(guò)程
ETL 過(guò)程是數(shù)據(jù)加工處理過(guò)程的統(tǒng)稱(chēng),包括三個(gè)部分:抽取、轉(zhuǎn)換和加載。它的目的是為決策支持應(yīng)用提供一個(gè)單一的、權(quán)威的數(shù)據(jù)源。數(shù)據(jù)倉(cāng)庫(kù)的ETL 過(guò)程是整個(gè)系統(tǒng)實(shí)施的關(guān)鍵環(huán)節(jié),關(guān)系到數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)成效。無(wú)論從理論上還是從實(shí)踐上來(lái)說(shuō),運(yùn)用ETL 工具是一個(gè)必需的、明智的選擇。文章以O(shè)racle 公司的軟件產(chǎn)品ODI11g 來(lái)講解。
3 ETL 的技術(shù)難點(diǎn)
數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)存儲(chǔ)有四個(gè)層次,即源數(shù)據(jù)系統(tǒng)、ODS、企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)集市。運(yùn)用ETL 工具就是實(shí)現(xiàn)數(shù)據(jù)在這四個(gè)層次中逐層遞進(jìn)的三級(jí)加工處理過(guò)程。雖然每一級(jí)處理都具有抽取、轉(zhuǎn)換、加載的處理,但是它們的側(cè)重點(diǎn)還是有區(qū)別的。
(1)源數(shù)據(jù)系統(tǒng)到ODS 過(guò)程:將多個(gè)異構(gòu)數(shù)據(jù)源集成到統(tǒng)一的數(shù)據(jù)集結(jié)區(qū)ODS,重點(diǎn)是抽取處理,兼有字符集轉(zhuǎn)換、數(shù)據(jù)類(lèi)型轉(zhuǎn)換等處理。(2)ODS 到企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)過(guò)程:將操作型數(shù)據(jù)轉(zhuǎn)換成事件型數(shù)據(jù),重點(diǎn)是轉(zhuǎn)換處理,包含清洗、調(diào)和、導(dǎo)出、匹配、合并等多種復(fù)雜處理。(3)企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)到數(shù)據(jù)集市過(guò)程:將數(shù)據(jù)按照應(yīng)用需求進(jìn)行組合,重點(diǎn)是加載處理,還涉及到索引、更新等處理。下面,結(jié)合三級(jí)處理,從四個(gè)方面描述常見(jiàn)的技術(shù)難點(diǎn)及應(yīng)對(duì)。
3.1 數(shù)據(jù)抽取
(1)靜態(tài)抽?。簽榱吮WC源數(shù)據(jù)的一致性和完整性,應(yīng)該抽取操作型數(shù)據(jù)相關(guān)的代碼數(shù)據(jù)和編碼數(shù)據(jù)。這些數(shù)據(jù)特點(diǎn)是量小,變化小,可以采用全量刷新方法。ODI 工具中,編制一個(gè)接口,指定源表和目標(biāo)表,確定LKM 和IKM,即可實(shí)現(xiàn)。此方法也適用于初次抽取操作型數(shù)據(jù)。(2)增量抽?。涸磾?shù)據(jù)系統(tǒng)包含大量的業(yè)務(wù)數(shù)據(jù),必須通過(guò)增量更新的方法才能做到有效的抽取。因此,增量更新問(wèn)題是一個(gè)最重要、最根本的技術(shù)問(wèn)題。ODI 工具內(nèi)置的變化數(shù)據(jù)捕獲機(jī)制(CDC)能有效地解決這個(gè)問(wèn)題。實(shí)現(xiàn)思路如下:為源表指定日記知識(shí)模塊JKM;將源表添加到CDC 列表,并啟動(dòng)日記;編制接口時(shí),勾選日記記錄的數(shù)據(jù),并指定增量模式的IKM。此外,還可以通過(guò)編制ODI 過(guò)程代碼來(lái)利用現(xiàn)有的物化視圖實(shí)現(xiàn)增量更新。
3.2 數(shù)據(jù)轉(zhuǎn)換
(1)關(guān)鍵維度的統(tǒng)一:多個(gè)源數(shù)據(jù)系統(tǒng)集成后,首先面臨的問(wèn)題就是關(guān)鍵維度的統(tǒng)一。不同的業(yè)務(wù)系統(tǒng)有各自不同的關(guān)鍵維度(如納稅人識(shí)別號(hào),納稅人電子檔案號(hào)),這就必須統(tǒng)一到唯一的維度。解決這個(gè)問(wèn)題,可以采用對(duì)照表的方法。實(shí)現(xiàn)思路如下:選定主要的、核心的業(yè)務(wù)系統(tǒng)的關(guān)鍵維度;以此維度為主,建立其他業(yè)務(wù)系統(tǒng)的維度對(duì)照表;ODI 工具中,編寫(xiě)接口時(shí),增加連接維度對(duì)照表,增加字段映射。
(2)數(shù)據(jù)表的合并:業(yè)務(wù)系統(tǒng)中可能存在同一事件信息存儲(chǔ)于不同的數(shù)據(jù)表中的情況。ETL 過(guò)程需要將分散的數(shù)據(jù)轉(zhuǎn)換到一個(gè)數(shù)據(jù)表。雖然可以編寫(xiě)多個(gè)ODI 接口實(shí)現(xiàn),但是不可避免地存在數(shù)據(jù)完整性風(fēng)險(xiǎn),且編制繁瑣、執(zhí)行效率低下。建議采用多個(gè)源數(shù)據(jù)集來(lái)實(shí)現(xiàn),思路如下:在ODI 接口中,配置多個(gè)源數(shù)據(jù)集,并設(shè)置數(shù)據(jù)集的順序和關(guān)系;以第一順序數(shù)據(jù)集為主,分別設(shè)置目標(biāo)數(shù)據(jù)項(xiàng)映射關(guān)系;指定帶有多數(shù)據(jù)集功能的標(biāo)準(zhǔn)LKM 和IKM。
(3)數(shù)據(jù)表的拆分:業(yè)務(wù)系統(tǒng)的單一數(shù)據(jù)表中可能包含同一維度下的不同粒度的數(shù)據(jù),這時(shí)就需要將源表數(shù)據(jù)拆分成多個(gè)目標(biāo)表。常見(jiàn)的情況是,納稅人財(cái)務(wù)報(bào)表數(shù)據(jù)表中同時(shí)包含月報(bào)、季報(bào)和年報(bào)。由于ODI 11G 版本中限定每一個(gè)接口只能有一個(gè)目標(biāo)數(shù)據(jù)存儲(chǔ),所以必須采用新的方法來(lái)處理。這里,介紹兩種方法來(lái)實(shí)現(xiàn)。a.編制多個(gè)接口,封裝在一個(gè)程序包中。步驟如下:分別編制多個(gè)接口對(duì)應(yīng)多個(gè)目標(biāo)表,將最后一個(gè)接口的“清除日記表”選項(xiàng)設(shè)置為真,其余接口該項(xiàng)為假;建立程序包,按順序?qū)脒@批接口。b.改造標(biāo)準(zhǔn)IKM,添加插入數(shù)據(jù)步驟。步驟如下:編制普通的ODI 接口,實(shí)現(xiàn)一個(gè)目標(biāo)表的加工;模擬執(zhí)行接口,并分析執(zhí)行語(yǔ)句和順序;獲取與目標(biāo)表相關(guān)的語(yǔ)句;復(fù)制IKM,并編輯,按照原目標(biāo)表語(yǔ)句增加其余目標(biāo)表的執(zhí)行步驟;指定新的IKM。此方法優(yōu)點(diǎn)是執(zhí)行效率高,缺點(diǎn)是改造IKM 需要一定的技術(shù)儲(chǔ)備,且增加了項(xiàng)目的整體復(fù)雜度。
(4)最新有效數(shù)據(jù)的問(wèn)題:分析源數(shù)據(jù)系統(tǒng)的業(yè)務(wù)規(guī)則時(shí),會(huì)發(fā)現(xiàn)有多次記錄業(yè)務(wù)操作數(shù)據(jù)的情況,例如更正申報(bào)。這就要求在數(shù)據(jù)轉(zhuǎn)換時(shí),應(yīng)以操作時(shí)間最新或者操作序號(hào)最大的記錄作為有效數(shù)據(jù)。解決的方法有兩種:a.編寫(xiě)2 個(gè)接口,利用臨時(shí)表存儲(chǔ)最新操作時(shí)間或最大操作序號(hào),然后再關(guān)聯(lián)源表數(shù)據(jù),最后將2 個(gè)接口依次導(dǎo)入程序包。b.改造IKM 接口,增加2 個(gè)新步驟,修改1 個(gè)原步驟,具體如下:新增步驟-創(chuàng)建臨時(shí)表;新增步驟-在臨時(shí)表中插入滿(mǎn)足業(yè)務(wù)邏輯的最新有效憑據(jù)(時(shí)間或序號(hào));修改步驟-在目標(biāo)表中插入關(guān)聯(lián)到臨時(shí)表的源表數(shù)據(jù)。
3.3 數(shù)據(jù)加載
(1)創(chuàng)建目標(biāo)表主鍵:雖然在接口中可以指定目標(biāo)表的主鍵,但是標(biāo)準(zhǔn)的ODI 處理并不能自動(dòng)生成該主鍵。為此,改造IKM 來(lái)實(shí)現(xiàn)這個(gè)重要功能:選擇適當(dāng)?shù)腎KM,為其增加一個(gè)選項(xiàng),并指定類(lèi)型和默認(rèn)值;在原IKM 步驟中,增加一個(gè)創(chuàng)建主鍵的新步驟,并在此步驟的選項(xiàng)欄次中勾選新增選項(xiàng)。
此方法的原理是通過(guò)一個(gè)自定義選項(xiàng)來(lái)控制IKM 的邏輯判斷,由用戶(hù)通過(guò)配置來(lái)決定是否執(zhí)行此步驟。
(2)實(shí)現(xiàn)增量的全量加載在企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)集市中,常常需要對(duì)不同粒度的數(shù)據(jù)進(jìn)行加載,例如將月度數(shù)據(jù)加載到年度分析中。為此,文章提出以增量的全量方式加載數(shù)據(jù),提高效率。具體思路如下:獲取增量中所有的月度;刪除目標(biāo)表中包含這些月度的年度數(shù)據(jù);重新獲取源表中包含這些月度的數(shù)據(jù),并加工成年度數(shù)據(jù);加載年度數(shù)據(jù)到目標(biāo)表。
數(shù)據(jù)倉(cāng)庫(kù)是包含一系列理論和技術(shù)的綜合環(huán)境,它的目的是為數(shù)據(jù)分析和決策支持提供歷史的、豐富的、可用的數(shù)據(jù)。由此,數(shù)據(jù)的存儲(chǔ)和處理也緊緊圍繞這一目的而展開(kāi)。在這個(gè)過(guò)程中,工具軟件有著不可替代的重要作用。很多開(kāi)發(fā)建設(shè)理念就集成在工具軟件的應(yīng)用中。只有充分理解其基礎(chǔ)功能,將其不斷改造完善,才能使這些理念和規(guī)則落地,支撐起整個(gè)數(shù)據(jù)倉(cāng)庫(kù)。