一種基于sca的etl架構(gòu)管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明針對ETL開發(fā)周期瓶頸的問題,研宄、設(shè)計和實現(xiàn)了一個基于SCA的ETL架構(gòu),該架構(gòu)能夠復(fù)用已有的ETL工具,已有的組件功能,同時提高定制開發(fā)組件的復(fù)用性。
【背景技術(shù)】
[0002]ETL是數(shù)據(jù)抽取、轉(zhuǎn)換和裝載(Extract,Transformat1n, Loading)的英文簡稱,是數(shù)據(jù)倉庫獲取高質(zhì)量數(shù)據(jù)的關(guān)鍵環(huán)節(jié),是對分散在各業(yè)務(wù)系統(tǒng)中的現(xiàn)有數(shù)據(jù)進(jìn)行提取、轉(zhuǎn)換、清洗和加載的過程,使這些數(shù)據(jù)成為商業(yè)智能系統(tǒng)需要的有用數(shù)據(jù)。ETL是構(gòu)建數(shù)據(jù)倉庫的第一步,也是構(gòu)建數(shù)據(jù)倉庫最重要的步驟。在聯(lián)合實驗室所開發(fā)的數(shù)據(jù)倉庫項目中,ETL部分是耗費時間最多的階段,所使用的ETL工具為微軟的SSIS,在開發(fā)之前要先學(xué)習(xí)該平臺下的大量控件的使用規(guī)范和使用場景以及使用方式,還有其平臺部署時的移植問題,這和熟悉的編程語言,如Java,C#,SQL等雖有一定的交集,但較少,使用該平臺則需要學(xué)習(xí)大量的該平臺的相關(guān)新知識,所以一個能夠獨立于編程語言和開發(fā)平臺,能夠讓開發(fā)者根據(jù)自己熟悉的編程語言來實現(xiàn)ETL開發(fā)的ETL框架是有需求和意義的。在所開發(fā)的項目中,ETL部分是復(fù)雜的,其中有著大量相同的過程,以及相似的流程,也就是在多個項目中我們做了大量的重復(fù)工作,這也是造成ETL部分耗時最多的一個原因。故對于一個能夠降低ETL開發(fā)復(fù)雜度,減少ETL開發(fā)周期的,復(fù)用性和擴(kuò)展性良好的ETL框架有著迫切的需求。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的是提供一種基于SCA的ETL架構(gòu)的組織和管理策略。
[0004]為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供了一種基于SCA的ETL架構(gòu)管理方法,其特征在于,包括以下步驟:
[0005]步驟1、對元數(shù)據(jù)信息的訪問,和存儲元數(shù)據(jù)信息的存儲介質(zhì)進(jìn)行交互;
[0006]步驟2、解決不同數(shù)據(jù)源之間的交互,提供多源支持,包括以下步驟:
[0007]步驟2.1、對數(shù)據(jù)格式良好的文本數(shù)據(jù)源直接導(dǎo)入到對應(yīng)的表中;
[0008]步驟2.2、把基于文本的數(shù)據(jù)源和基于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)源都看成是統(tǒng)一的數(shù)據(jù)源DataStore,一個數(shù)據(jù)源DataStore包含一到多個數(shù)據(jù)模式Schema,每個數(shù)據(jù)集合Schema包含多個一到多個數(shù)據(jù)表Table,每個數(shù)據(jù)表Table包含一到多個數(shù)據(jù)列Column ;
[0009]步驟2.3、當(dāng)要在不同的數(shù)據(jù)源之間進(jìn)行數(shù)據(jù)讀寫操作時,提供足夠的信息給數(shù)據(jù)源DataStore,能夠找到對應(yīng)的DataContext、數(shù)據(jù)模式Schema、數(shù)據(jù)表Table的對應(yīng)實現(xiàn)類,然后在程序級別則是Column接口的數(shù)據(jù)介入到Column接口中,最后寫入到對應(yīng)的物理存儲介質(zhì)上;
[0010]步驟3、處理各種各樣的數(shù)據(jù)質(zhì)量問題,對多源異構(gòu)下的數(shù)據(jù)源進(jìn)行清洗與轉(zhuǎn)換操作,包括數(shù)據(jù)模式級別和數(shù)據(jù)實例級別;
[0011]步驟4、完成維度建模過程,把加載到數(shù)據(jù)倉庫中的數(shù)據(jù)最終轉(zhuǎn)化為用戶感興趣的服務(wù)。
[0012]優(yōu)選地,所述步驟I包括:
[0013]步驟1.1、讀寫元數(shù)據(jù),包括對不同的元數(shù)據(jù)存儲介質(zhì)的訪問;
[0014]步驟1.2、實現(xiàn)解析輸入?yún)?shù)的功能,處理不同的業(yè)務(wù)邏輯所需要特定功能。
[0015]優(yōu)選地,所述步驟3包括:
[0016]步驟3.1、單源模式級的數(shù)據(jù)質(zhì)量問題的處理,找到從源到目的的映射規(guī)則,做一些簡單的轉(zhuǎn)換即可;
[0017]步驟3.2、多源模式下,把數(shù)據(jù)從一個值轉(zhuǎn)成另一個值,這里面包含了數(shù)據(jù)一個抽象對象和一個轉(zhuǎn)換抽象動作,由此抽象出來三個接口,分別對應(yīng)InputRow,InputCoIumn>Transformer, Transformer的對象是具體的列,所以需要兩個接口來對應(yīng)抽象的數(shù)據(jù),而Transformer中定義了兩個方法,一個是用來獲取輸出列的getOutputColumn,另一個是用來實現(xiàn)轉(zhuǎn)換的transform方法,InputRow中包含多個InputColumn,InputColumn定義為泛型結(jié)構(gòu),因為不確定傳入的數(shù)據(jù)到底是什么類型的,有可能是從數(shù)據(jù)源中導(dǎo)入進(jìn)來的原始數(shù)據(jù),也可能是經(jīng)過了 Transformer之后轉(zhuǎn)換的數(shù)據(jù)類型。
[0018]優(yōu)選地,所述步驟4包括:
[0019]步驟4.1、生成滿足需求的維度表,維度表分為三種:第一種是不發(fā)生變化的維度表,第二種是需要記錄歷史變化的維度表,第三種則是不記錄歷史變化的維度表;
[0020]步驟4.2、處理事實表查找代理鍵的問題,在SCA組件中,調(diào)用對應(yīng)的數(shù)據(jù)庫函數(shù)和存儲過程,從SCA的裝配模型的角度看,關(guān)系數(shù)據(jù)庫是一個提供服務(wù)的外部應(yīng)用,SCA組件只需按照數(shù)據(jù)庫的規(guī)范來進(jìn)行調(diào)用即可。
[0021]本發(fā)明提供了一種基于SCA的ETL架構(gòu)方法和管理策略,其特點為復(fù)用當(dāng)前已有的滿足ETL需求的組件和系統(tǒng),提高開發(fā)的ETL組件的復(fù)用性和擴(kuò)展性,在結(jié)合SCA在粗粒度、平臺無關(guān)、松耦合等優(yōu)良特性的基礎(chǔ)上提出一個基于SCA的ETL框架方法,達(dá)到簡化ETL開發(fā)周期和復(fù)雜度的目的。
【具體實施方式】
[0022]為使本發(fā)明更明顯易懂,茲以優(yōu)選實施例作詳細(xì)說明如下。
[0023]本發(fā)明的技術(shù)方案提供了一種基于SCA的ETL架構(gòu)管理方法,本發(fā)明能針對在所開發(fā)的項目中,ETL部分是復(fù)雜的,在多個項目中我們做了大量的重復(fù)工作,造成ETL部分耗時最多的問題,提供一種基于SCA的ETL架構(gòu)方法,降低ETL開發(fā)復(fù)雜度,減少ETL開發(fā)周期的,復(fù)用性和擴(kuò)展性良好的ETL框架,其步驟為:
[0024]步驟1、對元數(shù)據(jù)信息的訪問,和文本文件,關(guān)系數(shù)據(jù)庫等存儲元數(shù)據(jù)信息的存儲介質(zhì)進(jìn)行交互,該步驟包括:
[0025]步驟1.1、讀寫元數(shù)據(jù),包括對不同的元數(shù)據(jù)存儲介質(zhì)的訪問;
[0026]步驟1.2、實現(xiàn)解析輸入?yún)?shù)的功能,處理不同的業(yè)務(wù)邏輯所需要特定功能。
[0027]步驟2、解決不同數(shù)據(jù)源之間的交互,提供多源支持。該步驟包括:
[0028]步驟2.1、對數(shù)據(jù)格式良好的文本數(shù)據(jù)源直接導(dǎo)入到對應(yīng)的表中,但是現(xiàn)實世界是一般不能保證文本數(shù)據(jù)源的數(shù)據(jù)質(zhì)量,所以通常的做法是先把文本數(shù)據(jù)導(dǎo)入到內(nèi)存中,通過一系列的校驗,再從內(nèi)存導(dǎo)入到關(guān)系數(shù)據(jù)庫中。
[0029]步驟2.2、把Excel文件,CSV文件等基于文本的數(shù)據(jù)源和基于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)源都看成是統(tǒng)一的數(shù)據(jù)源DataStore,一個DataStore包含一到多個Schema,每個Schema包含多個一到多個Table,每個Table包含一到多個Column。
[0030]步驟2.3、當(dāng)要在不同的數(shù)據(jù)源之間進(jìn)行數(shù)據(jù)讀寫操作時,可以不用業(yè)務(wù)邏輯階段去考慮這種異構(gòu)數(shù)據(jù)源之間的差異所帶來的影響,而只需要提供足夠的信息給DataStore,就能夠找到對應(yīng)DataContext,Schema, Table的對應(yīng)實現(xiàn)類,然后在程序級別則是Column接口的數(shù)據(jù)介入到Column接口中,最后寫入到對應(yīng)的物理存儲介質(zhì)上。
[0031]步驟3、處理各種各樣的數(shù)據(jù)質(zhì)量問題,對多源異構(gòu)下的數(shù)據(jù)源進(jìn)行清洗與轉(zhuǎn)換操作,包括數(shù)據(jù)模式級別和數(shù)據(jù)實例級別,該步驟包括:
[0032]步驟3.1、單源模式級的數(shù)據(jù)質(zhì)量問題的處理,找到從源到目的的映射規(guī)則,做一些簡單的轉(zhuǎn)換即可。
[0033]步驟3.2、多源模式下,把數(shù)據(jù)從一個值轉(zhuǎn)成另一個值,這里面包含了數(shù)據(jù)一個抽象對象和一個轉(zhuǎn)換抽象動作,由此抽象出來三個接口,分別對應(yīng)InputRow,InputColumn,Transformer。程序中Transfo