數(shù)據(jù)分析方法論

          1.      

          在數(shù)據(jù)集成類的項目中,最難的過程就是數(shù)據(jù)分析了,數(shù)據(jù)分析過程位于數(shù)據(jù)集成類項目整個過程(前期準(zhǔn)備調(diào)研-----數(shù)據(jù)分析-----接口實現(xiàn))的第二步,它為第三步接口實現(xiàn)提供了充分的準(zhǔn)備,因此數(shù)據(jù)分析的正確與否很大程度上決定了數(shù)據(jù)集成能否成功的實現(xiàn)和完成。

                 怎么樣有效的進行數(shù)據(jù)分析呢,怎么樣提前在數(shù)據(jù)分析中盡量避免問題等到實現(xiàn)時才出現(xiàn)呢?這是一個行之有效的數(shù)據(jù)分析方法論的評判的關(guān)鍵。

                 經(jīng)過幾個項目的經(jīng)歷,反思了一下在做這些項目時比較有效的方法和失妥的方法,總結(jié)了一套目前個人覺得可行的數(shù)據(jù)分析方法,此套數(shù)據(jù)分析方法只適用于數(shù)據(jù)庫---文件---數(shù)據(jù)庫或數(shù)據(jù)庫---數(shù)據(jù)庫的分析,對于接口式的集成(例如調(diào)用對方的webserviceEJB接口等)并不適用,在這樣的一套數(shù)據(jù)分析的方法中,為數(shù)據(jù)分析的步驟以及需要注意的問題事項提出了指導(dǎo),編寫此blog以希望有同行的同學(xué)們多多交流。

          2.       數(shù)據(jù)分析方法論

          此方法論中涉及的名詞的解釋:

          l         目標(biāo)數(shù)據(jù)源

          指在數(shù)據(jù)集成中需要導(dǎo)入數(shù)據(jù)的數(shù)據(jù)源,此數(shù)據(jù)源可能是數(shù)據(jù)庫,也有可能是文件。

          l         源數(shù)據(jù)源

          指在數(shù)據(jù)集成中獲取數(shù)據(jù)的數(shù)據(jù)源,此數(shù)據(jù)源可能是數(shù)據(jù)庫,也有可能是文件。

          l         字典代碼

          在數(shù)據(jù)庫中以代碼的方式(如數(shù)字、英文字母等)來代替中文意思進行存儲,其中的這些代碼就稱為字典代碼。

          2.1.       步驟

          2.1.1.       分析目標(biāo)數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)

          目標(biāo)數(shù)據(jù)源既有可能是數(shù)據(jù)庫也有可能是文件,但無論是哪種,它都是有數(shù)據(jù)結(jié)構(gòu)的,首先要做的就是分析目標(biāo)數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu),在分析目標(biāo)數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)時,要分析清楚的有:

          l        

          目標(biāo)數(shù)據(jù)源中需要交換的有哪些表,這些表的含義分別是什么。

          l         字段

          這些表中包含的字段、字段的類型以及長度。

          l         字段含義

          分析每個字段的含義,包括字段的中文含義、字段涉及到的字典代碼以及字段的規(guī)則(如業(yè)務(wù)規(guī)則、生成規(guī)則)

                    在分析了上面所提及的表、字段、字段含義后,形成如下結(jié)構(gòu)的文檔:

          表名

          字段

          字段類型及長度

          中文含義

          涉及到的字典代碼

          字段規(guī)則

          id

          number(10)

          主鍵流水號

          --

          流水號,通過表名_SEQSequence來獲取

          unitcode

          varchar2(19)

          單位編碼

          單位編碼字典

          --

          2.1.2.       分析目標(biāo)數(shù)據(jù)源的表關(guān)系

          在完成了第一步后,需要接著分析目標(biāo)數(shù)據(jù)源的表關(guān)系,分析表關(guān)系最重要的在于分析各個表之間的關(guān)聯(lián)關(guān)系(例如一對一、一對多,通過這里可以分析出的為主鍵、外鍵的關(guān)聯(lián)關(guān)系),其次就是需要根據(jù)業(yè)務(wù)來分析其各個表之間的隱性關(guān)聯(lián),如只有當(dāng)A表中的某個值為03時才關(guān)聯(lián)到B表。

          在分析完畢目標(biāo)數(shù)據(jù)源的表關(guān)系后,形成如下Rose圖:

          2.1.3.       分析源數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)

          方法同2.1.1,分析的對象改變?yōu)樵磾?shù)據(jù)源,分析完畢后形成同2.1.1中的文檔。

          2.1.4.       分析源數(shù)據(jù)源的表關(guān)系

          方法同2.1.2,分析的對象改變?yōu)樵磾?shù)據(jù)源,分析完畢后形成同2.1.2中的Rose圖。

          2.1.5.       根據(jù)目標(biāo)數(shù)據(jù)源的表關(guān)系分析其和源數(shù)據(jù)源的表的對應(yīng)關(guān)系

          根據(jù)目標(biāo)數(shù)據(jù)源的表關(guān)系,來分析其和源數(shù)據(jù)源表的對應(yīng)關(guān)系,在這個步驟中需要分析清楚的是目標(biāo)數(shù)據(jù)源的表的數(shù)據(jù)來源于源數(shù)據(jù)源的哪些表,怎么獲取到這些數(shù)據(jù),分析完畢后可形成校驗數(shù)據(jù)集成是否正確的一個標(biāo)準(zhǔn),那就是目標(biāo)數(shù)據(jù)源的表的數(shù)據(jù)量和其來源的源數(shù)據(jù)源的那些表的數(shù)據(jù)量應(yīng)該是一致的,分析時仍然是根據(jù)目標(biāo)表的業(yè)務(wù)含義去源數(shù)據(jù)源中的表中尋找具備相同含義的表,在分析的過程中可能會碰到如下幾種情況:

          l         含義相同的表

          這種情況通常是目標(biāo)數(shù)據(jù)源和源數(shù)據(jù)源均為使用一張表存儲,含義相同的表通常都是一對一的數(shù)據(jù)關(guān)系,例如目標(biāo)數(shù)據(jù)源中有一張表為常住人口基本信息,源數(shù)據(jù)源中有張常住人員基本信息,兩張表就可以對應(yīng)上了,當(dāng)然,有些時候并不一定是意義相同就一定相同,這需要從業(yè)務(wù)層面去判斷。

          l         具備包含意義的表

          這種情況通常是目標(biāo)數(shù)據(jù)源為一張表,源數(shù)據(jù)源為多張表,這個時候就形成多對一的關(guān)系,例如目標(biāo)數(shù)據(jù)源中有張表為物品表,源數(shù)據(jù)源中為手機、證券等幾張表,這個時候就需要將手機、證券這些表對應(yīng)到物品表。

          又或者可能會碰到這樣的現(xiàn)象,目標(biāo)數(shù)據(jù)源為一張表,源數(shù)據(jù)源也是一張表,但源數(shù)據(jù)源的這張表的每行記錄包含了目標(biāo)表的兩種類型的記錄,這種情況下就需要將源數(shù)據(jù)源的一行記錄拆分為兩條導(dǎo)入到目標(biāo)表中,例如目標(biāo)數(shù)據(jù)源有張表為遷入遷出表,其存儲方式為遷入和遷出都為單獨的記錄來存儲的,源數(shù)據(jù)源有張表也為遷入遷出表,但其存儲方式為遷入和遷出在同一條記錄,這個時候就要將源數(shù)據(jù)源的這張遷入遷出表的一行記錄拆分為兩條進行導(dǎo)入了。

          l         被包含意義的表

          和之上的具備包含意義的表相反。

          l         根據(jù)業(yè)務(wù)的對應(yīng)關(guān)系

          這張是最為復(fù)雜的,例如可能會碰到這樣的現(xiàn)象,當(dāng)源數(shù)據(jù)源的某張表的某個字段的值為多個的時候,就需要拆分為兩條記錄導(dǎo)入到目標(biāo)表中。

          綜合上面所述,目標(biāo)數(shù)據(jù)源的表和源數(shù)據(jù)源的表可能會存在一對一、一對多、多對一、多對多、條件式的對應(yīng)幾種關(guān)系,在分析完畢后形成如下的文檔:

          目標(biāo)數(shù)據(jù)源

          源數(shù)據(jù)源

          校驗標(biāo)準(zhǔn)

          A

          A

          A.數(shù)據(jù)量==A.數(shù)據(jù)量(變動(新增、編輯、刪除)的數(shù)據(jù))

          B

          B

          C

          B.數(shù)據(jù)量==B.數(shù)據(jù)量+C.數(shù)據(jù)量

          C

          D

          D

          C.數(shù)據(jù)量+D.數(shù)據(jù)量=D.數(shù)據(jù)量

          C.數(shù)據(jù)量=D.數(shù)據(jù)量(D.wplx=’03’)

          D.數(shù)據(jù)量=D.數(shù)據(jù)量(D.wplx=’05’)

          E

          E

          E.數(shù)據(jù)量=E.數(shù)據(jù)量*2

          F

          F

          F.數(shù)據(jù)量=F.數(shù)據(jù)量/2(F.qrsj=F.qcsj)

          G

          G

          G.數(shù)據(jù)量=G.數(shù)據(jù)量+G.數(shù)據(jù)量(G.name包含的,的總數(shù)-1)

          2.1.6.       根據(jù)表的對應(yīng)關(guān)系分析字段的對應(yīng)關(guān)系以及轉(zhuǎn)化規(guī)則

          在對應(yīng)了表的對應(yīng)關(guān)系后,根據(jù)表的單一對應(yīng)關(guān)系(如目標(biāo)數(shù)據(jù)源的B表對應(yīng)到了源數(shù)據(jù)源的BC表,則需要分為B對應(yīng)B以及B對應(yīng)C兩個步驟來分析)來分析每個表中的字段的對應(yīng)關(guān)系以及轉(zhuǎn)化規(guī)則了,對應(yīng)的方法為:

          l         先在對應(yīng)的表中尋找相應(yīng)的字段

          l         如尋找不到則到相關(guān)的表中尋找相應(yīng)的字段

          l         如還是尋找不到則需要從業(yè)務(wù)含義方面去推測

          從業(yè)務(wù)含義角度分析此字段是否需要合并多個字段或拆分字段,又或根據(jù)某種業(yè)務(wù)規(guī)則來生成這個字段的值。

          在尋找到了相應(yīng)的字段后,首先根據(jù)類型、長度來分析是否需要進行類型和長度的處理,之后需要分析該字段是否為通過關(guān)聯(lián)到其他表來獲取的,接著再分析此字段是否涉及到字典代碼,如涉及則需要對照兩邊的字典代碼是否一致,如不一致則需要形成兩邊的字典代碼的對應(yīng)關(guān)系,最后分析該字段是否涉及業(yè)務(wù)含義,如涉及則需注明如何進行處理。

                    在分析完畢后,形成如下文檔:

          表名

          字段

          字段類型及長度

          源數(shù)據(jù)源字段

          字段類型及長度

          轉(zhuǎn)化規(guī)則

          id

          number(10)

          表名.id

          number(10)

           

          unitcode

          varchar2(19)

          表名.xzqh+表名.unit

          Varchar2(8)+varchar2(20)

          單位代碼字典映射

          content

          Varchar2(100)

          Substr(表名.content,0,50)

          Varchar2(100)

           

          ifmonth

          Varchar2(1)

          If(表名.createdate.月份==’系統(tǒng)時間的月份’)

             Return ‘1’;

          Else

             Return ‘2’.

           

           

          unitname

          Varchar2(100)

          UnitNames.unitName

          Varchar2(100)

          表名.xzqh+表名.unit=UnitNames.UnitCode

          2.2.       需注意的問題

          由于數(shù)據(jù)集成涉及的為系統(tǒng)中最為重要的基礎(chǔ)數(shù)據(jù),那么在做數(shù)據(jù)集成時就特別需要仔細(xì)考慮不要對數(shù)據(jù)產(chǎn)生了破壞性的影響,這也是數(shù)據(jù)分析過程中需要慎重考慮的問題。

          2.2.1.       數(shù)據(jù)覆蓋/混亂的問題

          在做數(shù)據(jù)分析時需要考慮,這樣集成數(shù)據(jù)后是否會將已存在的數(shù)據(jù)非法的覆蓋或造出混亂,出現(xiàn)這種問題通常都是由于主鍵的原因,這個在做數(shù)據(jù)分析時需要考慮。

          2.2.2.       制定錯誤出現(xiàn)時的彌補方案

          在做數(shù)據(jù)分析時需要考慮在進行數(shù)據(jù)集成后可能會出現(xiàn)的錯誤,對于這些可能出現(xiàn)的錯誤需要制定相應(yīng)的彌補方案,以避免數(shù)據(jù)的被破壞。

          2.2.3.       源數(shù)據(jù)源數(shù)據(jù)質(zhì)量造成的問題的處理方案

          需要考慮如源數(shù)據(jù)源本身的數(shù)據(jù)質(zhì)量出現(xiàn)問題時,應(yīng)如何處理或者如何避免。

          2.2.4.       業(yè)務(wù)專家的支持

          在整個數(shù)據(jù)分析的過程中,可以看出業(yè)務(wù)專家起到了非常大的作用,可以說如果缺少業(yè)務(wù)專家的話,數(shù)據(jù)分析很可能會失敗,或需要走很多的彎路才能最后摸索出來,有一點可以肯定,在缺少業(yè)務(wù)專家的支持下整個數(shù)據(jù)分析的過程將會大大的延長,從這點可以看出,在進行數(shù)據(jù)分析時要盡量獲取到業(yè)務(wù)專家的支持。

          3.       總結(jié)

                 如上的方法論對數(shù)據(jù)分析的過程和避免問題的方法做出了一定的描述,在實際的進行數(shù)據(jù)分析時,最重要的還是負(fù)責(zé)數(shù)據(jù)分析的人對于系統(tǒng)的理解,有過系統(tǒng)設(shè)計經(jīng)驗的人來做數(shù)據(jù)分析成功的幾率會高很多,有些非常專業(yè)的系統(tǒng)的話還得依賴有相應(yīng)的設(shè)計經(jīng)驗的人才做才能做得了,類如流程系統(tǒng)的數(shù)據(jù)集成。

                 在一個數(shù)據(jù)分析過程中,已經(jīng)可以制定出判斷數(shù)據(jù)集成是否成功的標(biāo)準(zhǔn)了,這也可以列為TDD的入口條件,J

                 方法論始終都還是理論,我本來就不是一個那么講理論的人,但也不否認(rèn)理論對于實際是有很好的指導(dǎo)作用的,避免在實踐過程中走過多的彎路,能做到理論結(jié)合實踐那是最好的,理論指導(dǎo)實踐,實踐改進理論。

           

          posted on 2007-05-21 15:25 BlueDavy 閱讀(5535) 評論(4)  編輯  收藏 所屬分類: 數(shù)據(jù)集成

          評論

          # re: 數(shù)據(jù)分析方法論[未登錄] 2007-05-22 13:56 ronghao

          分析的挺好,但是這個數(shù)據(jù)分析也是建立在業(yè)務(wù)建模基本一致的基礎(chǔ)上的。如果兩個系統(tǒng)的業(yè)務(wù)建模存在較大差異,數(shù)據(jù)集成就很困難了。  回復(fù)  更多評論   

          # re: 數(shù)據(jù)分析方法論 2007-05-22 17:45 BlueDavy

          @ronghao
          恩,同意,數(shù)據(jù)集成項目實在是很難做的項目,所以要價高也是正常的。  回復(fù)  更多評論   

          # re: 數(shù)據(jù)分析方法論 2007-05-22 23:54 熱門單曲

          有才樓主 路頂下  回復(fù)  更多評論   

          # re: 數(shù)據(jù)分析方法論 2008-02-18 16:25 wuxm

          其實數(shù)據(jù)整合最難的還是梳理數(shù)據(jù)與業(yè)務(wù)之間的關(guān)系,即概念建模。到了數(shù)據(jù)的物理模型階段已經(jīng)是比較容易的了!  回復(fù)  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2007年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东乡族自治县| 自贡市| 灵山县| 庄河市| 尉氏县| 芜湖县| 芷江| 宁德市| 宁海县| 应城市| 彰化县| 义乌市| 罗定市| 南雄市| 湟源县| 和田县| 文安县| 天津市| 介休市| 怀仁县| 清河县| 高阳县| 津南区| 岑巩县| 吴川市| 无为县| 时尚| 五指山市| 安福县| 西藏| 临泉县| 玛沁县| 临沭县| 青浦区| 隆德县| 泗阳县| 南阳市| 余庆县| 庆城县| 大化| 玉龙|