周勇強(qiáng)
摘要:業(yè)務(wù)系統(tǒng)運(yùn)行多年沉淀的大量數(shù)據(jù)已成為企業(yè)新的數(shù)字資源,通過(guò)深入分析和挖掘,發(fā)現(xiàn)其中有價(jià)值的信息,為管理決策提供支持,已成為很多企業(yè)的新需求。以某校在一卡通POS交易數(shù)據(jù)分析方面存在的需求為起點(diǎn),采用Microsoft商業(yè)智能技術(shù)體系及產(chǎn)品集,應(yīng)用Kimball維度建模方法,構(gòu)建了適合實(shí)際情況的、易于擴(kuò)展的DW/BI解決方案。重點(diǎn)研究系統(tǒng)架構(gòu)、維度建模及OLAP數(shù)據(jù)分析。
關(guān)鍵詞:商業(yè)智能;數(shù)據(jù)倉(cāng)庫(kù);OLAP;維度模型;多維數(shù)據(jù)集
中圖分類(lèi)號(hào):TP311.13 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)13-0283-03
某校的一卡通系統(tǒng)已運(yùn)行多年,積累了大量業(yè)務(wù)數(shù)據(jù),但缺乏靈活的數(shù)據(jù)分析手段。下面是一些業(yè)務(wù)需求:
① 管理層希望從卡戶、商戶、時(shí)間、POS終端、用餐團(tuán)隊(duì)等多個(gè)角度快速分析POS交易數(shù)據(jù),并可靈活切換分析角度及分析粒度。
② 教職工餐廳在工作餐(中餐)時(shí)段,用餐人員有時(shí)排起長(zhǎng)隊(duì)有時(shí)空閑,管理層希望分析用餐流量分布規(guī)律,提升管理服務(wù)水平。
本案例需求進(jìn)入了商業(yè)智能(BI)的應(yīng)用范疇,即:將應(yīng)用數(shù)據(jù)在數(shù)據(jù)倉(cāng)庫(kù)(DW)系統(tǒng)中組織成一致的分析型數(shù)據(jù),然后通過(guò)聯(lián)機(jī)分析處理(OLAP)或數(shù)據(jù)挖掘(DM)等技術(shù)手段,發(fā)現(xiàn)有價(jià)值的信息,為管理決策提供支持。本案例研究將Kimball維度建模技術(shù)融入Microsoft商業(yè)智能技術(shù)體系及產(chǎn)品集,構(gòu)建DW/BI解決方案,重點(diǎn)研究系統(tǒng)架構(gòu)、維度建模及OLAP多維數(shù)據(jù)分析。
1 系統(tǒng)架構(gòu)
在數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域,Kimball數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建方法是一種以業(yè)務(wù)過(guò)程為導(dǎo)向的、迭代式的敏捷開(kāi)發(fā)模式,其維度建模技術(shù)幾乎已經(jīng)成為數(shù)據(jù)倉(cāng)庫(kù)建模的最佳實(shí)踐。另一方面,微軟BI方案擁有覆蓋整個(gè)BI生命周期的完整、完全集成的技術(shù)體系及產(chǎn)品集,各部分可有效地協(xié)同工作。將Kimball方法融入微軟BI平臺(tái),可快速構(gòu)建易于維護(hù)的、高性價(jià)比的DW/BI系統(tǒng)。本案例系統(tǒng)架構(gòu)見(jiàn)圖1,由源數(shù)據(jù)區(qū)、SSIS、SQL Server RDBMS、SSAS、BI應(yīng)用等部分組成。
源數(shù)據(jù)區(qū)包含一卡通等多個(gè)OLTP系統(tǒng)數(shù)據(jù)庫(kù)。
SSIS(SQL Server Integration Services)用于構(gòu)建ETL系統(tǒng)。ETL從源數(shù)據(jù)區(qū)抽取數(shù)據(jù),經(jīng)過(guò)清洗、規(guī)格化等處理后轉(zhuǎn)換成分析型數(shù)據(jù),加載到關(guān)系數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)中。其中ETL數(shù)據(jù)存儲(chǔ)用于存儲(chǔ)ETL過(guò)程中的有關(guān)數(shù)據(jù)。
關(guān)系數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)是數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)保存的第一個(gè)位置,由SQL Server RDBMS管理,數(shù)據(jù)結(jié)構(gòu)按星型維度模型組織。這個(gè)數(shù)據(jù)庫(kù)用于向SSAS(SQL Server Analysis Services)管理的多維數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)提供數(shù)據(jù)。
多維數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)是數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)保存的第二個(gè)位置,由SSAS生成和管理。 SSAS采用MOLAP存儲(chǔ)模式將關(guān)系數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)在多維數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)中重組為多維數(shù)據(jù)集。SSAS通過(guò)OLAP服務(wù)向終端用戶開(kāi)放多維數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù),提供OLAP分析及數(shù)據(jù)挖掘功能。
在BI應(yīng)用部分,終端用戶使用Excel軟件通過(guò)SSAS連接多維數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù),進(jìn)行OLAP分析或數(shù)據(jù)挖掘。
2 維度建模
2.1 維度建模的基本概念
Kimball維度建模是圍繞業(yè)務(wù)過(guò)程進(jìn)行的。業(yè)務(wù)過(guò)程是業(yè)務(wù)流程中一個(gè)可度量的事件或活動(dòng),業(yè)務(wù)過(guò)程捕獲或生成的度量指標(biāo)稱(chēng)為度量值(或事實(shí)),參與業(yè)務(wù)過(guò)程的對(duì)象稱(chēng)為維度。使用Kimball方法建模,首先需要通過(guò)需求分析選取業(yè)務(wù)過(guò)程,每次針對(duì)一個(gè)業(yè)務(wù)過(guò)程建模,迭代式地構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)。
保證每次迭代所構(gòu)建的數(shù)據(jù)集市能在整個(gè)數(shù)據(jù)倉(cāng)庫(kù)體系中無(wú)縫融合,并能適應(yīng)未來(lái)發(fā)展的Kimball方法是采用數(shù)據(jù)倉(cāng)庫(kù)總線架構(gòu)??偩€架構(gòu)和一致性維度、一致性事實(shí)共同組成了Kimball多維體系結(jié)構(gòu)的基礎(chǔ),形成了一套可以逐步建立數(shù)據(jù)倉(cāng)庫(kù)的方法論。其核心是在體系結(jié)構(gòu)確立階段,設(shè)計(jì)出在整個(gè)企業(yè)內(nèi)具有統(tǒng)一解釋的標(biāo)準(zhǔn)化的維度和事實(shí),即一致性維度和一致性事實(shí)。一致性維度就像企業(yè)范圍內(nèi)的一組總線,將多個(gè)數(shù)據(jù)集市在邏輯上結(jié)合在一起,一致性事實(shí)保證不同數(shù)據(jù)集市間的事實(shí)數(shù)據(jù)可以交叉探查,所有數(shù)據(jù)集市聯(lián)合組成分布式數(shù)據(jù)倉(cāng)庫(kù)??山柚贙imball的企業(yè)總線矩陣列出企業(yè)范圍中的業(yè)務(wù)過(guò)程及維度,企業(yè)總線矩陣是DW/BI系統(tǒng)的總體數(shù)據(jù)架構(gòu)藍(lán)圖,是每次迭代的路標(biāo)。
在維度模型中事實(shí)和維度是分開(kāi)存儲(chǔ)的,事實(shí)存儲(chǔ)在事實(shí)表中,維度存儲(chǔ)在各自的維度表中,事實(shí)表中除了度量值,一般只存儲(chǔ)指向維度表的外鍵,事實(shí)表和維度表通過(guò)主外鍵關(guān)聯(lián)在一起。
本案例維度模型按星型模式設(shè)計(jì),在星型模型中,通過(guò)反規(guī)范化設(shè)計(jì)將存在關(guān)聯(lián)關(guān)系的維度表合并存儲(chǔ)在一張維度表中,因?yàn)橄藦?fù)雜的維表間關(guān)聯(lián),因此提高了查詢性能,且更易被用戶理解。
2.2 維度建模
按Kimball的4步設(shè)計(jì)方法進(jìn)行維度建模。
2.2.1 選擇業(yè)務(wù)過(guò)程
在本案例的企業(yè)數(shù)據(jù)倉(cāng)庫(kù)總線矩陣中,包含有POS交易、圖書(shū)借還、會(huì)議簽到等眾多業(yè)務(wù)過(guò)程。用戶當(dāng)前的主要需求可以歸納為對(duì)POS交易數(shù)據(jù)進(jìn)行分析,而POS交易數(shù)據(jù)來(lái)自于卡戶在POS終端刷卡扣費(fèi)、充值等交易活動(dòng),并存儲(chǔ)在一卡通系統(tǒng)數(shù)據(jù)庫(kù)中,因此“POS交易”業(yè)務(wù)過(guò)程有最高的業(yè)務(wù)價(jià)值、有源數(shù)據(jù)支撐、易于實(shí)現(xiàn),應(yīng)優(yōu)先建模。限于篇幅,本文只選擇這個(gè)業(yè)務(wù)過(guò)程建模,并將維度模型進(jìn)行了簡(jiǎn)化。
2.2.2 聲明粒度
粒度是指數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的細(xì)化和綜合程度。DW/BI系統(tǒng)幾乎總是要求數(shù)據(jù)盡可能以最細(xì)粒度(原子粒度)來(lái)表示,原子粒度數(shù)據(jù)能以任何方式進(jìn)行切分操作,從而回答各種不可預(yù)測(cè)的分析請(qǐng)求,提供最佳的分析靈活性。在本案例中,最細(xì)粒度是POS交易的每次刷卡數(shù)據(jù)。
2.2.3 確定維度
粒度確定后,根據(jù)業(yè)務(wù)場(chǎng)景可確定日期、時(shí)間、人員、POS終端、錢(qián)包等維度,見(jiàn)圖2。維度表的主鍵命名以“Key”結(jié)尾,均采用代理鍵;來(lái)自業(yè)務(wù)系統(tǒng)的業(yè)務(wù)主鍵命名以“ID”結(jié)尾,用于識(shí)別數(shù)據(jù)來(lái)源。維度表使用代理主鍵是公認(rèn)的最佳實(shí)踐,用于整合不同源數(shù)據(jù)、處理第二種類(lèi)型的緩慢變化維度(Type 2 SCD)。
日期維度:“日”是日期維度的原子粒度。為了滿足不同場(chǎng)合對(duì)分析粒度及報(bào)表標(biāo)簽名稱(chēng)的需求,設(shè)計(jì)了年、季度、月、日、星期、節(jié)假日等各種日期維度屬性。日期維度存在多種層次結(jié)構(gòu),如年/季度/月/日、年/周/日等。本案例使用的日期范圍是前10年及今后20年,共約11000條記錄。
當(dāng)天時(shí)間維度:用餐流量可以通過(guò)用餐時(shí)間段內(nèi)以分鐘為粒度的用餐流量變化規(guī)律進(jìn)行分析。除了當(dāng)天時(shí)間的時(shí)、分,還設(shè)計(jì)了餐次等時(shí)間段屬性。當(dāng)天時(shí)間維度表有1440條記錄,如果將當(dāng)天時(shí)間和日期合并在一起,將產(chǎn)生約1500萬(wàn)條記錄的巨大的日期維度表,因此我們將日期和當(dāng)天時(shí)間分開(kāi)存儲(chǔ),這兩張維表容量都很小,性能得以提高。
人員維度:人員維度是企業(yè)數(shù)據(jù)倉(cāng)庫(kù)總線中一個(gè)較為復(fù)雜的一致性維度。包含人員數(shù)據(jù)的業(yè)務(wù)系統(tǒng)有一卡通系統(tǒng)、主業(yè)務(wù)管理平臺(tái)、酒店管理系統(tǒng)、圖書(shū)管理系統(tǒng)等,這些系統(tǒng)已經(jīng)作了對(duì)接,人員、部門(mén)等主要數(shù)據(jù)是共享的,但每個(gè)源系統(tǒng)創(chuàng)建的共享數(shù)據(jù)所共享的范圍各不相同,整個(gè)企業(yè)中這些共享數(shù)據(jù)的產(chǎn)生和更新以源系統(tǒng)為準(zhǔn),因此ETL需要從這幾個(gè)系統(tǒng)中抽取各系統(tǒng)的源頭數(shù)據(jù)。 “源系統(tǒng)ID”用于區(qū)分?jǐn)?shù)據(jù)源頭。對(duì)人員姓名、部門(mén)、狀態(tài)、人員類(lèi)別等的變化按Type 2 SCD進(jìn)行處理,對(duì)于性別、出生日期等屬性按Type 1 SCD進(jìn)行處理。
POS終端維度:在一卡通系統(tǒng)中,POS交易終端配置在“交易站點(diǎn)”中。交易終端分為A、B二類(lèi),每個(gè)站點(diǎn)可以容納一個(gè)A類(lèi)終端或一個(gè)以上B類(lèi)終端。因此每個(gè)交易終端可使用(站點(diǎn)ID,終端機(jī)號(hào)ID)進(jìn)行唯一性識(shí)別(A類(lèi)終端的終端機(jī)號(hào)ID固定為0)
錢(qián)包維表:一卡通系統(tǒng)支持多個(gè)電子錢(qián)包。
交易類(lèi)型維表:包含商務(wù)消費(fèi)、卡戶存款等交易類(lèi)型。
2.2.4 確定事實(shí)
POS交易過(guò)程獲取的事實(shí)有交易金額、優(yōu)惠金額等,擴(kuò)展事實(shí)還有交易人次、交易人數(shù)等。擴(kuò)展事實(shí)可在BI工具中通過(guò)添加計(jì)數(shù)、非重復(fù)計(jì)數(shù)等實(shí)現(xiàn)。
3 OLAP多維數(shù)據(jù)分析
使用Excel的數(shù)據(jù)透視表和數(shù)據(jù)透視圖連接多維數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù),通過(guò)簡(jiǎn)單的鼠標(biāo)拖放操作,即可以即席查詢(Ad Hoc)方式進(jìn)行OLAP多維數(shù)據(jù)分析。以下是兩個(gè)分析例子。
3.1 團(tuán)隊(duì)商務(wù)收費(fèi)構(gòu)成的即席分析
圖3是兩個(gè)團(tuán)隊(duì)的團(tuán)隊(duì)商務(wù)收費(fèi)構(gòu)成透視表。分析對(duì)象為“POS交易”多維數(shù)據(jù)集,分析的事實(shí)是交易金額,分析維度有交易類(lèi)型、日期(年/季度/月/日)、POS終端、當(dāng)天時(shí)間(餐次)、人員(部門(mén)/人員)。通過(guò)鼠標(biāo)點(diǎn)擊維度標(biāo)簽上的加、減號(hào),即可實(shí)現(xiàn)上鉆、下鉆操作;通過(guò)鼠標(biāo)拖放調(diào)整維度組合、對(duì)維度進(jìn)行過(guò)濾和排序,即可實(shí)現(xiàn)變換分析角度、進(jìn)行切片/切塊分析。
3.2 用餐流量分析
圖4是教職工餐廳2017年2季度中餐刷卡流量透視圖,分析對(duì)象為“POS交易”多維數(shù)據(jù)集,分析的事實(shí)是刷卡次數(shù),分析維度有POS終端、日期(年/季度/月/日)、當(dāng)天時(shí)間(時(shí)/分)。
中餐時(shí)間段為11:30~12:30。由圖可知,用餐流量高峰出現(xiàn)在11:50~12:05,在11:30~12:10這段時(shí)間中,除了用餐高峰外的用餐流量較為均衡,開(kāi)餐時(shí)間11:30之前有少量用餐流量,用餐結(jié)束時(shí)間12:30之前20分鐘(12:10~12:30)用餐人數(shù)稀少。
接下來(lái),切換日期維度到其它的季度,或者上鉆到年份,或者下鉆到月份、日來(lái)進(jìn)行更細(xì)致的觀察,我們得到了和上述分析類(lèi)似的結(jié)論(限于篇幅,不再展示這些數(shù)據(jù))
根據(jù)以上分析,管理層可以結(jié)合實(shí)際情況優(yōu)化用餐流量,如:一、適當(dāng)調(diào)整中餐時(shí)間段;二、進(jìn)一步分析不同人群的流量分布規(guī)律(如:即席添加一個(gè)人員維度并上鉆到部門(mén)粒度,即可以折線圖等方式顯示每個(gè)部門(mén)的流量分布),結(jié)合學(xué)校業(yè)務(wù)特點(diǎn)有針對(duì)性地向非高峰時(shí)段引導(dǎo)用餐流量。
4 結(jié)論
本案例快速構(gòu)建了一個(gè)能滿足當(dāng)前需求、適合學(xué)校發(fā)展實(shí)際情況的DW/BI系統(tǒng)。本系統(tǒng)有不少改進(jìn)或擴(kuò)展空間,后續(xù)可在目前基礎(chǔ)上迭代式發(fā)展,如添加更多業(yè)務(wù)過(guò)程、擴(kuò)展數(shù)據(jù)挖掘功能、加入第三方工具、開(kāi)發(fā)自定義BI應(yīng)用,以發(fā)掘出更多有價(jià)值的信息。
參考文獻(xiàn):
[1] (美)Ralph Kimball.數(shù)據(jù)倉(cāng)庫(kù)生命周期工具箱[M]. 唐富年,等,譯. 2版.北京:清華大學(xué)出版社,2009.
[2] Ralph Kimball,Margy Ross.The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, 3rd Edition[M]: US: Wiley Computer Publishing,2013.
[3] (美)Lynn Langit.SQL Server 2008商業(yè)智能完美解決方案[M]. 張猛,等,譯.北京:人民郵電出版社.2010.
[4] Ralph Kimball. Design Tip #15: Combining SCD Techniques [EB/OL]. https://decisionworks.com/2000/10/design-tip-15-combining-scd-techniques/.
【通聯(lián)編輯:代影】