馬根峰 趙明
摘 ?要: 數(shù)據(jù)倉(cāng)庫(kù)以其面向主題的、集成的、不可更新的、隨時(shí)間不斷變化等特征,更好地支持了企業(yè)或組織的決策分析處理。它通過(guò)將數(shù)據(jù)按照不同的綜合程度(即粒度)來(lái)組織,以滿足不同分析的需要。星形模式是基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)中的一個(gè)著名概念,由于星形連接模式的設(shè)計(jì)思想能夠滿足人們從不同觀察角(維)度分析數(shù)據(jù)的需求,所以在基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)中被廣泛使用。本文主要介紹了《廣東省高速公路一張網(wǎng)資金結(jié)算情況分析系統(tǒng)》中的數(shù)據(jù)倉(cāng)庫(kù)技術(shù)。
關(guān)鍵詞: 數(shù)據(jù)倉(cāng)庫(kù); 星形模式; 維度; 萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器; OLAP
中圖分類號(hào):TP392 ? ? ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1006-8228(2015)07-39-03
Guangdong highway settlement business analysis system based on star schema in data warehousing
Ma Genfeng1, Zhao Ming2
(1. Guangdong Unitoll Services incorporated, Guangzhou, Guangdong 510620, China; 2. Tianjin University of Technology and Education)
Abstract: Data warehouse is characterized by its subject-oriented, integrated, non-renewable, time-changing, and better support for decision analysis processing of enterprise or organization. It organizes the data in accordance with different degree of synthesis (i.e. granularity), to meet the needs of different analysis. The star schema is a well-known concept of data warehouse based on relational database, due to the design idea of the star schema can meet the demands for data analysis of the different observation angle (dimension), so it is widely used. This paper mainly introduces the star schema of data warehousing used in Guangdong highway settlement business analysis system.
Key words: data warehousing; star schema; dimensionality; DB query analyzer; OLAP
0 引言
數(shù)據(jù)倉(cāng)庫(kù)技術(shù)用以處理面向主題的,集成的,不可更新的,隨時(shí)間不斷變化的數(shù)據(jù)集合。它通過(guò)將數(shù)據(jù)按照不同的綜合程度(即粒度)來(lái)組織,以滿足不同分析的需要[5]。
星形模式是基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)中的一個(gè)著名概念,由于星形連接模式的設(shè)計(jì)思想能夠滿足人們從不同觀察角(維)度分析數(shù)據(jù)的需求,加上數(shù)據(jù)倉(cāng)庫(kù)通常用來(lái)回答綜合性的問(wèn)題,所以在基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)中廣泛地使用了星形模式,如電信運(yùn)營(yíng)商中普遍進(jìn)行的話務(wù)量總體分析[1]。
本文主要圍繞“廣東省高速公路一張網(wǎng)資金結(jié)算情況分析系統(tǒng)”中如何使用數(shù)據(jù)倉(cāng)庫(kù)技術(shù)來(lái)實(shí)現(xiàn)“資金結(jié)算情況的分析”這個(gè)主題進(jìn)行探討。
1 系統(tǒng)中的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
1.1 廣東聯(lián)合電子結(jié)算中心操作型環(huán)境DB2數(shù)據(jù)庫(kù)服務(wù)器下的數(shù)據(jù)組織情況
在廣東聯(lián)合電子結(jié)算中心,“異常流水”、“流水拆分”、“流水上傳”等關(guān)系模式有以下。
⑴ 粵通卡精確拆分結(jié)果明細(xì)表
tb_cardaccuratesplitresult(流水號(hào),工班,出口路段…,收入路段)
⑵ 現(xiàn)金精確拆分結(jié)果明細(xì)表
tb_cashaccuratesplitresult(流水號(hào),工班,出口路段…,收入路段)
⑶ 流水非精確拆分記錄表
tb_inaccuratesplitrecord(流水號(hào),工班,出口路段…,收入路段)
⑷ 拆分流水異常記錄表
tb_outlistspliterrorgb(流水號(hào),工班,出口路段,…,錯(cuò)誤類型代碼)
⑸ 拆分流水異常記錄歷史表
tb_outlistspliterrorgb_his(流水號(hào),工班,出口路段,…,錯(cuò)誤類型代碼)
⑹ 流水異常記錄表
tb_outlisterrorgb(流水號(hào),工班,出口路段,…,錯(cuò)誤類型代碼)
⑺ 流水異常記錄歷史表
tb_outlisterrorgb_his(流水號(hào),工班,出口路段,…,錯(cuò)誤類型代碼)
⑻ 出口流水表
tb_outlistgb(流水號(hào),工班,出口路段,…,上傳時(shí)間)
1.2 數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)[1]
設(shè)計(jì)步驟簡(jiǎn)化為三步:
⑴ 概念模型設(shè)計(jì);
⑵ 邏輯模型設(shè)計(jì);
⑶ 數(shù)據(jù)倉(cāng)庫(kù)生成。
1.2.1 概念模型設(shè)計(jì)中的界定系統(tǒng)邊界
在廣東聯(lián)合電子服務(wù)股份有限公司,管理者最迫切需要的分析目標(biāo)主要有:
⑴ 各高速公路路段公司若干工班的流水上傳、流水拆分;
⑵ 各個(gè)高速公路路段公司上傳的異常流水(包含異常及拆分異常)及其修改的情況。
要進(jìn)行以上分析,所需數(shù)據(jù)應(yīng)包括:
⑴ 分析各條高速公路路段公司在一段周期內(nèi)的流水上傳數(shù)量、拆分?jǐn)?shù)量、拆分流水比例;異常流水?dāng)?shù)量、異常流水修改的數(shù)量、修改比例;
⑵ 分析各條高速公路對(duì)應(yīng)的軟件開(kāi)發(fā)商上傳的異常流水(包含異常流水及拆分異常流水)數(shù)量、上傳的異常(包含異常及拆分異常)流水修改的數(shù)量,以及修改的比例;
⑶ 每個(gè)工班全省上傳的異常流水?dāng)?shù)量的總體分析;
⑷ 全省所有高速公路收費(fèi)系統(tǒng)的軟件開(kāi)發(fā)商,產(chǎn)生的各種類型的異常流水?dāng)?shù)量的分析;
⑸ 全省所有高速公路上傳的各種類型的異常流水的分析。
1.2.2 邏輯模型設(shè)計(jì)
因?yàn)榧?xì)節(jié)級(jí)數(shù)據(jù)太大,數(shù)據(jù)倉(cāng)庫(kù)又建立在本人的PC機(jī)MS SQL SERVER服務(wù)器上,加之迫于分析任務(wù)提交時(shí)間的壓力,故本數(shù)據(jù)倉(cāng)庫(kù)中不再涉及細(xì)節(jié)級(jí)數(shù)據(jù)表的設(shè)計(jì)、數(shù)據(jù)挖掘[6]。
本文只設(shè)計(jì)了以下幾個(gè)綜合級(jí)的關(guān)系模式,ok_xiugai對(duì)應(yīng)于已經(jīng)成功修改的異常流水信息;no_xiugai對(duì)應(yīng)于還沒(méi)有進(jìn)行修改的異常流水信息;upload_split對(duì)應(yīng)于各條高速公路流水上傳及拆分的數(shù)量; 而kaifa代表維表“開(kāi)發(fā)商”,tb_road代表維表全省的各條高速公路[2]。
關(guān)系模式定義:
ok_xiugai (LISTNO, UPLOADTIME, OUTROADNO,
SQUADDATE, ERRCODE, ERRMSG…)
no_xiugai (LISTNO, UPLOADTIME, OUTROADNO,
SQUADDATE, ERRCODE, ERRMSG…)
upload_split(路段編碼,路段名稱,工班,上傳流水?dāng)?shù)量,拆分流水?dāng)?shù)量…)
kaifa (roadno, kaifa_name)
tb_road(areano,roadno,roadname,…)
1.2.3 數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)生成
數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的生成包括:操作型環(huán)境數(shù)據(jù)的挖掘和數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的生成兩部分。如圖1和圖2這里所要做的工作是接口編程,實(shí)現(xiàn)將操作型環(huán)境OLTP下的數(shù)據(jù)裝載進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)的OLAP環(huán)境中。
[生產(chǎn)機(jī)數(shù)據(jù)庫(kù)][數(shù)據(jù)倉(cāng)庫(kù)][拆分流水異常記錄表\&\&][流水異常記錄表\&\&][數(shù)據(jù)挖掘] [no_xiugai\&ListNo
UPLOADTIME
OUTROADNO
SQUADDATE
ERRCODE
ERRMSG\&]
圖1 ?數(shù)據(jù)挖掘(生成未修改的流水信息)
設(shè)集合A為拆分流水異常記錄表,B為流水異常記錄表,C為OLAP操作環(huán)境中的no_xiugai ,則
C=, 其中、
以下給出生成修改正確的流水信息算法。
設(shè)集合A為拆分流水異常記錄表,B為流水異常記錄表,C為拆分流水異常記錄歷史表,D為流水異常記錄歷史表,E為OLAP操作環(huán)境中的ok_xiugai,則
E=∪, 其中、、、
[生產(chǎn)機(jī)數(shù)據(jù)庫(kù)][數(shù)據(jù)倉(cāng)庫(kù)][奧通卡精確拆分結(jié)果明細(xì)表\&\&][現(xiàn)金精確拆分結(jié)果明細(xì)表\&\&][數(shù)據(jù)挖掘] [uplond_split\&路段編碼
…\&][流水非精確拆分記錄表\&\&][出口流水表\&\&]
圖2 ?數(shù)據(jù)挖掘(生成流水上傳與拆分的信息)
設(shè)集合A為粵通卡精確拆分結(jié)果明細(xì)表,B為現(xiàn)金拆分結(jié)果明細(xì)表,C為流水非精確拆分記錄表,D為出口流水表,E為OLAP操作環(huán)境中的upolad_split,則
E=()×,其中、、、
2 數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)導(dǎo)出與展現(xiàn)
2.1 萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器
萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器,中文版本《DB查詢分析器》、英文版本《DB Query Analyzer》。它具有強(qiáng)大的功能、友好的操作界面、良好的操作性、跨越各種數(shù)據(jù)庫(kù)平臺(tái)乃至于EXCEL和文本文件[3]。
可以通過(guò)它查詢ODBC數(shù)據(jù)源(包括世面上所有的數(shù)據(jù)庫(kù)、TXT/CSV文件、EXCEL文件)的數(shù)據(jù)。可以同時(shí)執(zhí)行多條DML語(yǔ)句乃至存貯過(guò)程,結(jié)果會(huì)以已設(shè)定的表格、文本框、文件來(lái)返回。當(dāng)從數(shù)據(jù)庫(kù)導(dǎo)出千萬(wàn)條數(shù)據(jù)時(shí),其效率與DBMS沒(méi)有什么區(qū)別[4]。
《萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器》中文版本《DB 查詢分析器》在中關(guān)村的在線下載量超過(guò)10萬(wàn)次,位居整個(gè)數(shù)據(jù)庫(kù)類排行榜中第10位,所以在實(shí)際工作中,本人用《DB查詢分析器》作為客戶端,實(shí)現(xiàn)將數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)展現(xiàn)與導(dǎo)出。
2.2 本系統(tǒng)中的兩個(gè)分析目標(biāo)的星形模式
設(shè)集合A、B、C、D為OLAP環(huán)境下的ok_xiugai、no_xiugai、tb_road、upload_split,E為分析模型“異常流水及修改情況、流水上傳與拆分”,則
E=()××
設(shè)集合A、B、C、D為OLAP環(huán)境下的ok_xiugai、no_xiugai、tb_road、kaifa,E為分析模型“高速公路公司、各條高速公路開(kāi)發(fā)商的異常流水及修改情況”,則
E=()××
具體如圖3和圖4。
roadname\&] [路段代碼] [kaifa\&roadno
kaifa_name\&]
圖4 ?星型模式下的“高速公路公司、各條高速
公路開(kāi)發(fā)商的異常流水及修改情況”分析
2.3 數(shù)據(jù)樣例示意
數(shù)據(jù)樣例示意如圖5、圖6所示。
3 結(jié)束語(yǔ)
數(shù)據(jù)倉(cāng)庫(kù)技術(shù)對(duì)于回答及解決一些綜合性的面向主題的問(wèn)題,具有強(qiáng)大的優(yōu)勢(shì)。而對(duì)于使用數(shù)據(jù)倉(cāng)庫(kù)來(lái)回答綜合性問(wèn)題的場(chǎng)合,星形連接模式可以滿足決策者從不同的維來(lái)觀察數(shù)據(jù)的需求。筆者在《廣東省高速公路一張網(wǎng)資金結(jié)算情況分析系統(tǒng)》的研究與開(kāi)發(fā)過(guò)程中,采用了數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)理念進(jìn)行數(shù)據(jù)倉(cāng)庫(kù)的各級(jí)模型設(shè)計(jì),并通過(guò)數(shù)據(jù)挖掘來(lái)生成數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù),最后使用萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器來(lái)進(jìn)行數(shù)據(jù)展現(xiàn),這也是本人在實(shí)際工作中對(duì)數(shù)據(jù)倉(cāng)庫(kù)技術(shù)的又一次運(yùn)用。近一年來(lái),該系統(tǒng)每周在經(jīng)過(guò)數(shù)據(jù)挖掘、倉(cāng)庫(kù)數(shù)據(jù)生成和數(shù)據(jù)展現(xiàn)后,為企業(yè)管理者提供了較為清晰地分析結(jié)果。文中的不足之處,還請(qǐng)有關(guān)專家批評(píng)指正。
圖5 ?數(shù)據(jù)展現(xiàn)
圖6 ?點(diǎn)擊“DB查詢分析器”的工具欄按鈕,即可導(dǎo)出數(shù)據(jù)
參考文獻(xiàn):
[1] 馬根峰.基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)星形模式下維使用原則的研究[J].
計(jì)算機(jī)工程與設(shè)計(jì),2005.1.
[2] 馬根峰.廣東電信公話200專用話機(jī)話務(wù)動(dòng)態(tài)分析系統(tǒng)的構(gòu)建[J].電
信科學(xué),2003.11.
[3] 新產(chǎn)品&工具點(diǎn)評(píng).特別推薦:“萬(wàn)能數(shù)據(jù)庫(kù)查詢分析器”發(fā)布[J].程
序員,2007.2.
[4] 馬根峰.《DB查詢分析器》批量執(zhí)行DML語(yǔ)句并返回更詳細(xì)的信息[J].
電腦編程技巧與維護(hù),2011.24.
[5] 王珊.數(shù)據(jù)倉(cāng)庫(kù)技術(shù)與聯(lián)機(jī)分析處理[M].科學(xué)出版社,1998.
[6] Michael Corey(美), Michael Abbey(美). SQL SERVER 7 Data
Warehousing[M].希望電子出版社,2000.