李宏智
摘 要:該文主要通過研究社保系統(tǒng)數(shù)據(jù)集成中使用的ETL方法,并結(jié)合同煤集團(tuán)社會保險(xiǎn)管理信息系統(tǒng)的現(xiàn)狀,提出了采用數(shù)據(jù)倉庫法實(shí)現(xiàn)同煤集團(tuán)社保系統(tǒng)的數(shù)據(jù)集成。重點(diǎn)介紹了社保系統(tǒng)數(shù)據(jù)集成中ETL的開發(fā)。經(jīng)過驗(yàn)證能夠建立統(tǒng)一的、完整的、高質(zhì)量的社保系統(tǒng)數(shù)據(jù)倉庫。
關(guān)鍵詞:數(shù)據(jù)倉庫;數(shù)據(jù)集成;ETL;社會保險(xiǎn)
1 ETL技術(shù)
1.1 ETL技術(shù)介紹
ETL即數(shù)據(jù)抽?。‥xtract)、轉(zhuǎn)換(Transform)、裝載(Load)的過程,它是用來構(gòu)建數(shù)據(jù)倉庫,用戶首先抽取數(shù)據(jù),然后經(jīng)過清洗和轉(zhuǎn)換,最后加載到數(shù)據(jù)倉庫中去。在技術(shù)上,ETL主要涉及到關(guān)聯(lián)、轉(zhuǎn)換、增量、調(diào)度和監(jiān)控等幾個方面。
1.2 ETL技術(shù)過程
1.2.1數(shù)據(jù)抽取
首先,做好準(zhǔn)備工作。弄清同煤集團(tuán)社會保險(xiǎn)系統(tǒng)包含多少業(yè)務(wù)管理信息系統(tǒng),各個管理系統(tǒng)的DBMS類型。然后,可以用數(shù)據(jù)庫鏈接或ODBC的方式建立鏈接。從數(shù)據(jù)庫中抽取數(shù)據(jù)一般有全量抽取和增量抽取。
1.2.2 數(shù)據(jù)轉(zhuǎn)換
這個過程包括了數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換兩個步驟。數(shù)據(jù)清洗包括檢查數(shù)據(jù)一致性,處理無效值和缺失值等。對于過濾掉的數(shù)據(jù),寫入Excel文件或者將過濾數(shù)據(jù)寫入數(shù)據(jù)表,發(fā)給用 戶,修改以后再進(jìn)行數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)轉(zhuǎn)換將不同業(yè)務(wù)系統(tǒng)的相同類型的數(shù)據(jù)統(tǒng)一,用一個相同的編碼表示。
1.2.3 數(shù)據(jù)裝載
數(shù)據(jù)裝載是指將數(shù)據(jù)放到數(shù)據(jù)倉庫中去。數(shù)據(jù)裝載有四種裝載模式:完全刷新,鏡像增量,事件增量,鏡像比較。
2 ETL工具介紹
2.1 Kettle
Kettle是國外開源的ETL工具,可以在Window、Unix等系統(tǒng)下運(yùn)行,目前包括4個產(chǎn)品:Spoon、Pan、CHEF、Kitchen。SPOON 允許你通過圖形界面來設(shè)計(jì)轉(zhuǎn)換過程,PAN 允許你批量運(yùn)行轉(zhuǎn)換,CHEF 允許你創(chuàng)建任務(wù),KITCHEN 允許你批量設(shè)計(jì)的任務(wù) 。
2.2 DataStage
DataStage能自動對多種數(shù)據(jù)源的數(shù)據(jù)抽取、轉(zhuǎn)換和維護(hù),并將數(shù)據(jù)倉庫集成的工具。是一個基于C/S的軟件,必須安裝服務(wù)器和客戶端軟件,它的所有開發(fā)工作都是在一個工程中。在DataStage工具面板上有很多組件。Datastage包含四大部件:Administrator、Manager、Designer、Director。
2.3 PowerCenter
PowerCenter 是Informatica公司開發(fā)的ETL工具。此產(chǎn)品可以提供企業(yè)部門如XML、網(wǎng)站日志、關(guān)系型數(shù)據(jù)集成。PowerCenter在內(nèi)存中執(zhí)行所有的數(shù)據(jù)抽取轉(zhuǎn)換、整合、裝載的功能。
2.4 OWB和ODI
OWB是Oracle 的一個綜合工具,它提供對 ETL、數(shù)據(jù)質(zhì)量、數(shù)據(jù)審計(jì),以及數(shù)據(jù)和元數(shù)據(jù)的整個生命周期的管理,適用于 Oracle 數(shù)據(jù)庫的 ETL工具,OWB 11g 版包含在每個 Oracle 數(shù)據(jù)庫 11g 版安裝中。ODI和OWB一樣,都是ETL工具,和OWB相比,它支持異構(gòu)數(shù)據(jù),可以和SOA集成。
2.5 SSIS
SSIS是Microsoft SQL Server 2012 Integration Services的簡稱。SSIS 的體系結(jié)構(gòu)主要由四部分組成:Integration Services 服務(wù)、Integration Services 對象模型、Integration Services 運(yùn)行時和運(yùn)行時可執(zhí)行文件以及封裝數(shù)據(jù)流引擎和數(shù)據(jù)流組件的數(shù)據(jù)流任務(wù)。
2.6 BeeLoad
Beeload是由北京靈蜂縱橫軟件有限公司研發(fā)的一款ETL工具,可以通過簡單直觀的圖形操作界面,幫助使用者快速定義ETL規(guī)則,使數(shù)據(jù)處理工作變得簡單方便。
3實(shí)現(xiàn)方法
3.1同構(gòu)沖突的解決
主要完成SQL server2012數(shù)據(jù)庫和oracle10g中各自所存儲的社保相關(guān)數(shù)據(jù)的初步清理和轉(zhuǎn)換,解決數(shù)據(jù)的冗余、各表之間字段命名沖突,如同名異義、異名同義等,為最終數(shù)據(jù)倉庫的建立提供初始數(shù)據(jù)源。
3.1.1數(shù)據(jù)清理
1)冗余數(shù)據(jù)的清理:SELECT DISTINCT * INTO新的分析表名FROM有重復(fù)行數(shù)據(jù)的原始表名例如:select distinct * into基本信息倉庫from基本信息表
2)無用字段的清理:ALTER TABLE表名DROP COLUMN無用列名1,無用列名2,…
例如:alter table個人基本信息表drop column BCC016(體重),BCC017(身高)
3)空值的清理:UPDATE表名SET列名=0 WHERE列名IS NULL
UPDATE表名SET列名=WHERE列名IS NULL
4)不規(guī)則數(shù)據(jù)的清理:在操作時數(shù)據(jù)錄入人員在錄入數(shù)據(jù)時,不小心在實(shí)際數(shù)據(jù)之前輸入了一個或多個空格,這些不起眼的空格很有可能影響數(shù)據(jù)的集成的準(zhǔn)確性。在構(gòu)建數(shù)據(jù)倉庫時應(yīng)消除數(shù)據(jù)前無用的空格:
UPDATE表名SET列名=LTRIM(列名)。
3.1.2數(shù)據(jù)初步轉(zhuǎn)換
1)數(shù)據(jù)類型的轉(zhuǎn)換:
直接轉(zhuǎn)換的數(shù)據(jù)類型:ALTER TABLE表名ALTER COLUMN列名新數(shù)據(jù)類型。
間接轉(zhuǎn)換的數(shù)據(jù)類型:主要針對將非日期類型的數(shù)據(jù)轉(zhuǎn)換為日期類型。
2)對象名的轉(zhuǎn)換:將英文字母或拼音縮寫來表示的表名字段名轉(zhuǎn)換為易于理解的中文。EXEC sp_rename原表名,新表名
EXEC sp_rename表名.原列名,新列名,COLUMN
3)數(shù)據(jù)編碼的轉(zhuǎn)換:UPDATE表名SET編碼列名=CASE編碼列名WHEN編碼值1 THEN中文含義字符串1 WHEN編碼值2 THEN中文含義字符串2 WHEN編碼值3 THEN中文含義字符串3…END
4)表結(jié)構(gòu)的轉(zhuǎn)換:構(gòu)建一些新的字段以滿足新的需求。
語法:ALTER TABLE表名ADD新列名數(shù)據(jù)類型UPDATE表名SET新列名=值
3.2異構(gòu)沖突的解決
本文的XML技術(shù)主要提供異構(gòu)數(shù)據(jù)的轉(zhuǎn)換規(guī)則(各字段間的對應(yīng)關(guān)系)和映射文件,主要解決異構(gòu)沖突。
這一階段主要完成平臺異構(gòu)的轉(zhuǎn)化,針對上面的一系列的操作,利用XML技術(shù)將初始得到的數(shù)據(jù)轉(zhuǎn)化為統(tǒng)一的格式存儲于oracle10g所設(shè)計(jì)的數(shù)據(jù)倉庫中。
具體采用以下方法,通過定義適當(dāng)?shù)腄TD將從源數(shù)據(jù)庫中查詢出的數(shù)據(jù)轉(zhuǎn)換成相應(yīng)的XML文檔,然后使用DOM技術(shù)來解析XML文檔,這樣就可以將XML文檔中的數(shù)據(jù)存入目標(biāo)數(shù)據(jù)庫oracle10g中,從而實(shí)現(xiàn)了SQL server2012和oracle10g這兩種異構(gòu)數(shù)據(jù)源的數(shù)據(jù)統(tǒng)一存儲。在實(shí)現(xiàn)過程中主要利用JDBC中操作XML強(qiáng)大的類庫和oracle10g數(shù)據(jù)庫對XML存儲的支持。
總結(jié)
本文主要針對同煤集團(tuán)社保信息系統(tǒng)中存在的問題,提出了利用數(shù)據(jù)倉庫的方法實(shí)現(xiàn)社保數(shù)據(jù)庫、待遇發(fā)放數(shù)據(jù)庫、資格認(rèn)證數(shù)據(jù)庫和OA辦公等數(shù)據(jù)庫的集成。通過完成ETL工具的設(shè)計(jì)和實(shí)現(xiàn),實(shí)現(xiàn)了將異構(gòu)數(shù)據(jù)進(jìn)行集成的目的,提供了統(tǒng)一的訪問接口,建成了同煤集團(tuán)社保數(shù)據(jù)倉庫,為以后進(jìn)一步的系統(tǒng)開發(fā)提供數(shù)據(jù)源。
參考文獻(xiàn):
[1]馮豫華,彭明.數(shù)據(jù)倉庫技術(shù)在社保DSS中的應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2004(10).