雙子星座

           

          商業(yè)智能平臺(tái)研究(九) ETL 中的數(shù)據(jù)質(zhì)量控制

          商業(yè)智能平臺(tái)研究(九) ETL 中的數(shù)據(jù)質(zhì)量控制
          數(shù)據(jù)質(zhì)量一直是ETL工具的一個(gè)高級(jí)特性,為了解釋清楚這個(gè)問題,讓我們看看oracle的商業(yè)ETL工具Oracle Warehouse Builder 在數(shù)據(jù)質(zhì)量上是如何管理的

          oracle在官方網(wǎng)站上有一篇專門介紹如何使用oracle warehouse builder的文章,地址為http://www.oracle.com/technology/pub/articles/rittman-owb.html?
          rssid=rss_otn_articles?msgid=4931461 , 是mark rittman所寫,rittman公司本身也是一個(gè)專業(yè)的oracle 數(shù)據(jù)倉庫 和商業(yè)智能方面的顧問公司,在oracle 方面非常的有發(fā)言權(quán),如果你對(duì)oracle和數(shù)據(jù)倉庫,或者oracle商業(yè)智能有興趣的話,可以看一下上面的這篇文章,本文所有圖片引自上面的這篇文 章。


          ETL難以成功有以下幾個(gè)難點(diǎn):
          1 . 數(shù)據(jù)倉庫的數(shù)據(jù)來自于多個(gè)數(shù)據(jù)源,所以數(shù)據(jù)的一致性很難得到保證,很多情況下需要一種硬性的標(biāo)準(zhǔn)來決定數(shù)據(jù)的取舍問題.
          2 . 數(shù)據(jù)格式問題,例如數(shù)據(jù)缺失,超出數(shù)據(jù)范圍,無效數(shù)據(jù)格式等等。
          3 . 出現(xiàn)錯(cuò)誤之后沒有正確的處理問題,導(dǎo)致數(shù)據(jù)的質(zhì)量不斷的下降。
          4 . 數(shù)據(jù)一致性問題,處于數(shù)據(jù)庫性能考慮,有時(shí)候可能會(huì)有意的去掉一些外間或者檢查約束。
          5 . 業(yè)務(wù)邏輯問題.由于數(shù)據(jù)庫在最初設(shè)計(jì)時(shí)就不夠嚴(yán)格和謹(jǐn)慎。

          我們怎么判斷數(shù)據(jù)的質(zhì)量好壞的呢,一般用戶拿原有系統(tǒng)的顯示方式查看某一查詢條件的數(shù)據(jù)與用商業(yè)智能報(bào)表所產(chǎn)生出來的數(shù)據(jù)進(jìn)行對(duì)比,看有多大的出入,這個(gè) 可能需要原先系統(tǒng)有足夠的能力顯示這些數(shù)據(jù)并且商業(yè)智能工具的報(bào)表有足夠強(qiáng)大的查詢和報(bào)表展示能力,或者是用商業(yè)智能的報(bào)表與OLAP運(yùn)行出來的報(bào)表進(jìn)行 對(duì)比,看有多大的出入,出入一般都是會(huì)存在的,因?yàn)閿?shù)據(jù)不可能完全的準(zhǔn)確,但是一定要搞清楚哪里數(shù)據(jù)出現(xiàn)了問題,并且盡量不要讓這些誤差擴(kuò)大到用戶無法接 受的地步,否則就認(rèn)為BI失敗了。(咋同是一個(gè)工具做出來的,數(shù)據(jù)的出入就這么大呢?)



          oracle warehouse builder 提供三個(gè)特性來使ETL的過程簡單
          1 . Graphical Data Profiler 可以查看數(shù)據(jù)的結(jié)構(gòu),語義,內(nèi)容,異常,和大綱,數(shù)據(jù)規(guī)則 , 這就是在前一篇說的,kettle的數(shù)據(jù)管理沒有oracle warehouse builder 強(qiáng)大的特性.kettle也提供查看表結(jié)構(gòu),column的結(jié)構(gòu),但是它不會(huì)判斷一個(gè)column是不是主鍵或外鍵,一個(gè)字符串的最小長度是多少,最大長 度是多少,一個(gè)整數(shù)的長度是多少,一個(gè)double的精度是多少。
          2 . Correction Wizard 把數(shù)據(jù)規(guī)則應(yīng)用到你的ETL過程中,自動(dòng)映射并更正,清理,轉(zhuǎn)化數(shù)據(jù), 相當(dāng)于oracle warehouse builder 提供一些默認(rèn)的值來幫助你更快的創(chuàng)建映射規(guī)則,這個(gè)功能也比kettle強(qiáng)大。
          3 . Data Auditor 獲取數(shù)據(jù)規(guī)則并監(jiān)控?cái)?shù)據(jù)轉(zhuǎn)換的過程。kettle也提供數(shù)據(jù)監(jiān)控的機(jī)制,并把log記入下來,并告訴你重復(fù)的記錄數(shù),讀寫多少條記錄,更新拒絕多少條記錄,時(shí)間,速度,步驟是否成功等信息.

          oracle warehouse builder 提供查看選中表的結(jié)構(gòu)信息和數(shù)據(jù)信息




          數(shù)據(jù)歸檔編輯器有很多面板。這些面板顯示已歸檔的對(duì)象和歸檔的結(jié)果。為了方便解釋,可以將整個(gè)面板分成6個(gè)部分,分別是左上角的面板(有兩個(gè)tab)叫做 1號(hào)面板,左邊中間的property面板,叫做2號(hào)面板,左下角的monitor面板,叫做3號(hào)面板,右上角的Profile Results Canvas 面板(有10個(gè)tab),叫4號(hào)面板,右邊中間的Data Grid Panal ,叫5號(hào)面板,右下角的Data Rule Panal ,叫6號(hào)面板。
          1號(hào)面板顯示已歸檔的表、視圖、物化視圖(oracle 10g新加的特性)、外部表、維度和事實(shí)等對(duì)象以及已經(jīng)創(chuàng)建的任何更正模塊的詳細(xì)信息。
          2號(hào)面板顯示與數(shù)據(jù)歸檔關(guān)聯(lián)的屬性的列表。使用該屬性列表,您可以優(yōu)化數(shù)據(jù)歸檔的參數(shù);啟用或禁用某些數(shù)據(jù)歸檔組件并啟用選定表的數(shù)據(jù)規(guī)則歸檔。
          3號(hào)面板是監(jiān)視器面板。該面板顯示已提交的所有歸檔作業(yè)的進(jìn)度。數(shù)據(jù)歸檔需要時(shí)間,所以可以在后臺(tái)完成的作業(yè),同時(shí)執(zhí)行其他 Oracle Warehouse Builder 任務(wù);當(dāng)作業(yè)完成時(shí),Oracle Warehouse Builder 會(huì)發(fā)出通知,kettle 在執(zhí)行監(jiān)控上提供的信息比oracle warehouse builder 多一些,包括速度和時(shí)間,還可以看到你啟動(dòng)多少線程組和線程,線程進(jìn)行到那一步都顯示的出來。
          4號(hào)面板提供最多的信息,所以分成了10格tab,包含大量歸檔結(jié)果匯總的tab,
          5號(hào)面板顯示數(shù)據(jù)的統(tǒng)計(jì)信息,某一個(gè)column出現(xiàn)的值,出現(xiàn)的次數(shù),占的百分比,有了這個(gè)功能,如果出現(xiàn)了錯(cuò)誤的數(shù)據(jù),將可以更容易的看到和清除.
          6號(hào)面板顯示數(shù)據(jù)規(guī)則.










          其中4號(hào)面板有10個(gè)tab,其中有幾個(gè)tab非常有用.(看上面的圖)
          Data Type tab詳細(xì)說明表中每列的列名,數(shù)據(jù)格式,主要的數(shù)據(jù)類型,主要的數(shù)據(jù)類型所占的百分比,數(shù)據(jù)的長度,最大值和最小值,主要的長度,主要的長度所占的百分 比,類型的精度。其中所謂的主要長度類型在Date那一列為40%,可見有些值為空,它不光列出最小值和最大值,而且還有主要值的長度和它所占百分比,統(tǒng) 計(jì)方面功能比較強(qiáng)大,這種初步的數(shù)據(jù)統(tǒng)計(jì)不知道算不算接近于OLAP分析,功能上比kettle強(qiáng)大些.

          Unique Key tab顯示檢測到唯一鍵或主鍵的所有列。該選項(xiàng)卡還顯示唯一值的數(shù)量多得足以建議刪除或更正非唯一行時(shí)可以定義唯一鍵的列。你可以看到圖中有Six Sigma 列。這是一個(gè) 1 到 7 之間的數(shù)字,它指明“每千個(gè)的缺陷”數(shù)量,即對(duì)象中未能通過唯一約束的行。

          Profile Object tab 相當(dāng)于kettle中的 sql 編輯器 ,顯示所有的數(shù)據(jù)并加上查詢條件。

          Domain tab 為歸檔對(duì)象的每列顯示建議的域,以及數(shù)據(jù)與該域的一致程度。域就是列的一組允許的值,Oracle Warehouse Builder 認(rèn)為出現(xiàn)兩次或以上值的列就叫域。從圖上看到,PACK_COUNT , PROD_ID , PROD_NAME 都是唯一性比較高的列,所以沒有domain,這個(gè)面板同樣也有 Six Sigma 值。



          創(chuàng)建數(shù)據(jù)轉(zhuǎn)化規(guī)則
          在它給出的例子中,MANUF_COUNTRY的國家列包含Not Known , Canada ,USA , UK 和 Mexico ,它想把所有的England轉(zhuǎn)化為 UK , 在Product 表中,把所有REORDER_YN為 'N' 的記錄刪掉,并使MARKET_SEGMENT 表的所有值為 ' Economy ' 或 ' Executive ' .

          當(dāng)你完成了數(shù)據(jù)規(guī)則的建立后,在實(shí)際轉(zhuǎn)換的過程中,有可能出現(xiàn)你沒有考慮到的情況,oracle warehouse builder 提出了三種操作,
          Igore 這個(gè)不用解釋吧.
          Report 在一個(gè)新建的ERR$$$表中記錄下這條記錄。數(shù)據(jù)繼續(xù)轉(zhuǎn)化。
          Cleanse 應(yīng)用轉(zhuǎn)化規(guī)則來清理數(shù)據(jù).


          如果沒有什么特殊的原因,一般最好不要使用第一種策略,你即不知道有沒有數(shù)據(jù)處錯(cuò)了,也不知道有多少數(shù)據(jù)出錯(cuò)了,這樣很容易讓你的數(shù)據(jù)誤差越來越大,第二 種Report策略能讓我們知道那些數(shù)據(jù)出錯(cuò)了,并記錄下來,當(dāng)我們需要找到數(shù)據(jù)誤差原因的時(shí)候,或者我們需要更正這些數(shù)據(jù)誤差的時(shí)候有依據(jù)。當(dāng)然如果我 們真正的清楚數(shù)據(jù)轉(zhuǎn)換規(guī)則的話,第三種策略是最好的,把這種誤差消失在ETL的過程之中.

          其中對(duì)于應(yīng)用了數(shù)據(jù)轉(zhuǎn)化規(guī)則的列,oracle warehouse builder 又提供四種策略來使數(shù)據(jù)達(dá)到我們想要的程度,

          1 . Remove ,把我們認(rèn)為滿足特定數(shù)據(jù)條件的數(shù)據(jù)刪除,例子中就是要把REORDER_YN = Y 的數(shù)據(jù)刪掉。
          2 . Similarity Match 把不在我們規(guī)定的域內(nèi)的數(shù)據(jù)自動(dòng)更改為最接近的值,這個(gè)值是oracle 用特定算法算出來的,我不清楚到底是怎么樣的規(guī)則。不過我猜是不是按照字典的順序來排序,誰接近就轉(zhuǎn)化成誰,比如有applet,book ,orange ,如果要轉(zhuǎn)化book的話,就把book轉(zhuǎn)化為applet,因?yàn)閎 開頭的單詞比o 開頭的單詞離的近一些,中文的話可能不會(huì)支持吧。當(dāng)然,這只是我猜的.具體是怎么樣只有問那些高手了.
          3 . Soundex Match oracle有一個(gè)函數(shù)叫做SOUNDEX , 它是應(yīng)用以下規(guī)則,保留首字母,把所有的元音 a , e , i , o , u 和 w , y 刪掉。把剩下的字符串按如下數(shù)字相加
          b , f , p ,v =1
          c, g, j, k, q, s, x, z = 2
          d, t = 3
          l = 4
          m, n = 5
          r = 6
          如果兩個(gè)或兩個(gè)以上有相同的數(shù)字接近原來的值(在第一步之前),或者接近除去h 和 w 的值 , 忽略掉除第一個(gè)字母以外的數(shù)字. 返回4個(gè)字節(jié)。格式大概如下:
          SELECT name, SOUNDEX(namecol) FROM test;
          SELECT * FROM test WHERE SOUNDEX(namecol) = SOUNDEX('SMITH');
          以上例子摘自http://www.psoug.org/reference/string_func.html,如果你對(duì)算法有疑問可以自己去看看。

          4 . Custom 使用自定義的轉(zhuǎn)化規(guī)則來清理數(shù)據(jù),大多數(shù)時(shí)候都是使用這種方式。例子中的把MANUF_COUNTRY 的 England 轉(zhuǎn)化為 UK 就是這種情況。


          在你進(jìn)行數(shù)據(jù)轉(zhuǎn)化之后,你對(duì)數(shù)據(jù)的質(zhì)量滿意了,你可以設(shè)置Data Auditor 來監(jiān)控以后傳入的數(shù)據(jù)的質(zhì)量



          Data Auditor 使用定義的數(shù)據(jù)規(guī)則,生成關(guān)于數(shù)據(jù)的一致程度的統(tǒng)計(jì)報(bào)告,然后將其存儲(chǔ)在錯(cuò)誤記錄表中。還可以對(duì) Data Auditor 進(jìn)行編程,指定 Data Auditor 在分?jǐn)?shù)低于一定的閾值后向您發(fā)出通知,然后在特定情況運(yùn)行清理映射來清理數(shù)據(jù)。運(yùn)行該清理映射后,可以對(duì) Data Auditor 進(jìn)行編程,使其僅在設(shè)計(jì)分?jǐn)?shù)高于特定級(jí)別或 Six Sigma 值時(shí)才繼續(xù)進(jìn)行余下的 ETL 過程,避免將錯(cuò)誤數(shù)據(jù)載入數(shù)據(jù)倉庫,使數(shù)據(jù)倉庫的質(zhì)量能夠得到保證。

          ETL是非常重要的一步,往往一個(gè)項(xiàng)目的成敗就是看ETL過程的成功與否.選用一個(gè)好的ETL工具會(huì)讓項(xiàng)目更加的有信心.

          下一篇介紹ETL的各種工具.


          posted on 2007-05-22 21:40 gemini 閱讀(627) 評(píng)論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆檔案

          相冊

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宝坻区| 普兰店市| 崇礼县| 抚松县| 烟台市| 饶平县| 灵石县| 湘乡市| 巴楚县| 巩义市| 若尔盖县| 寿阳县| 邯郸市| 固安县| 故城县| 山东省| 连南| 昌都县| 滕州市| 沈阳市| 务川| 梅州市| 平度市| 焉耆| 大城县| 岑溪市| 嘉荫县| 两当县| 青浦区| 平乐县| 峨边| 枣庄市| 三穗县| 呼和浩特市| 乌鲁木齐县| 常宁市| 天全县| 石屏县| 宜川县| 威信县| 乌鲁木齐县|