丁曉春 杜 渂
(1.上海消防局 上海 200051 2.上海迪愛斯通信設備有限公司 上海 200030)
近年來,隨著社會經濟的快速發展,消防工作的重要性也越來越高,由于各級消防機關的重視,消防信息化建設也進入了快速發展的時期。隨著消防一體化建設的深入開展,各級消防機關擁有的數據急劇增大,若能利用好這些海量的數據和信息,并進行快速深入的處理和分析,從中發現規律,找出問題,就可以幫助消防機關更好地進行研判決策。
本文結合實際業務需求,研究利用數據倉庫在消防信息分析研判方面的建設模式和設計方法,探討了實現“研判指導工作”的有效途徑,提升了消防部門在分析決策上的及時性和準確性。
數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrate)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合。
數據倉庫用于分析型數據的處理,包含了用戶大量歷史數據,存放在數據倉庫中的數據一般不再修改。數據倉庫可對多個異構的數據源進行有效集成,集成后按用戶需求構建相關主題,用于支持分析決策。
數據倉庫的體系結構如下圖所示,主要由5層組成。數據源層主要由各種業務數據庫組成;匯聚層主要是ETL,包括數據的抽取、轉換、清洗和加載等過程,并將整理好的數據加載到數據倉庫中;存儲層主要是按照業務要求架構的基于主題的數據倉庫和數據集市;分析層主要通過OLAP工具和數據挖掘工具對數據倉庫中的數據進行深層次的分析;交互層主要是通過報表、儀表板等各種展現方式將分析結果提供給用戶做決策使用。
通過數據倉庫的建設,可以針對某市消防部門建立統一的規范和標準,實現領域內各業務系統的數據匯聚,通過整合各種數據,達到消除信息孤島現象的目的。通過前端智能展現技術,可以為消防部門的防火、滅火和搶險救援等各項工作提供決策性的數據支持。
基于數據倉庫的消防分析系統設計主要包括數據倉庫架構設計、主題設計、度量設計、維度設計、物理建模、ETL設計和OLAP設計等方面。下面將介紹這幾個方面的設計內容。

圖1 數據倉庫體系結構圖
數據倉庫主要包括星型模型和雪花模型兩種架構模型。星型模型中每個維度表都直接和事實表相關聯,沒有漸變維度,因此存在著一些冗余數據。雪花模型中存在著一個或多個維度通過其他維度與事實表相關聯的情況,不存在冗余數據,因此雪花模型從關系數據庫設計的角度來講是滿足第三范式的規范化要求的。
在星型模型中,由于利用冗余數據減少了表關聯,因此統計效率相較與雪花模型要高。雪花模型由于滿足規范化設計要求,節約了存儲空間,但存在多個表關聯的問題,因此效率上要低些。
在消防數據倉庫結構的實際設計中兩種模型都要用到,根據具體的業務需求及數據情況選擇具體的架構模型。例如行政區劃維度包含省、市、區縣、街道,由于該維度數據量比較小,可以使用星型模型,直接將省、市、區縣、街道存儲在一張維度表中,這樣查詢效率較高。在時間維度設計上,由于需要維護一些特殊的節假日,可以單獨設計一個特殊節假日維度和時間維度相關聯,如果采用雪花模型,即方便擴展維護,也節約了存儲空間。
分析主題是數據倉庫設計中首先應明確的內容,主題是一個在較高層次將數據歸類的標準[1]。每一個分析主題對應于一個分析領域和方向,即用戶決策時需要解決的問題,如火災高發時段分析主題、高層建筑火災分析主題等。
主題主要體現某一方面的分析角度(維度)和統計數值型數據(度量)之間的關系,確定主題時需要綜合考慮如何通過維度的組合達到考察量度的目的。
面向消防業務相關的分析主題主要包括有接警出動分析、火災報告分析等。分析主題一般與消防實際業務功能相對應,如接警出動分析可以考察某時間范圍內的接警出動人次、車次和出動效率等數據;火災報告分析可以分析火災高發時段、高發季節和某時間范圍內高發警情類型等數據。每個分析主題都與多個分析維度及度量相關聯,通過多個維度和度量的組合可得到多個具體的分析報告。
不同的主題來源于數據倉庫中的不同子集,通常稱為數據集市。數據集市體現了數據倉庫某一方面的信息,多用于部門級的分析應用,多個數據集市構成了數據倉庫。
當確定分析主題之后,需要確定分析的度量。度量是每個分析主題中與維度相關的實事數據,通常是需要分析的目標對象數據和技術指標,實際設計中也可以基于不同的度量進行的復雜的關鍵性能指標(KPI)計算。
面向消防業務接警出動分析主題相關的度量包括出動次數、出動人數和出動車輛數等內容;與火災報告分析主題相關的度量包括火災計數、直接財產損失、過火面積、受災戶數、受災人數、死亡人數和受傷人數等內容,也可以包含同比、同比增長率、環比、環比增長率、占比、均數、極值、方差和標準差等技術指標。
結合每個度量的匯總情況和在不同維度下的聚合情況,度量的粒度設置也會不同,進行設計時通常采用“最小粒度原則”。當能確定分析需求的粒度時,可遵守相應的要求,否則應采用原始業務數據中能達到的最小粒度。例如在消防業務分析的需求和建模中,時間上需要精確到天,則數據度量的粒度到天即可。如果沒有明確的需求或者為了應對以后的需求變化,則可以遵循“最小粒度原則”,將度量的粒度設置到秒級,在數據倉庫實事表中保留每秒的數據,以便滿足以后功能擴展或者分析細化的需求。當數據量巨大時,可以采用多維分析模型的方式,定時構建Cube,提前對海量數據進行匯總,保障分析和統計的執行效率。
維度是用于分析時的考察視角,主要與關系數據庫中的字典表相對應。維度一般與分析主題相關聯,通過把實事表的某些屬性定義為維度,可以看到各度量的匯總情況,也可以基于所有的維度進行交叉分析,幫助用戶對不同維度上的匯總數據進行深層次的對比分析。
維度存儲一般分為ROLAP、MOLAP、HOLAP三種方式:
2.4.1 關系型維度(ROLAP)
ROLAP將維度存儲在關系數據庫中,所有聚合數據存在關系數據庫視圖中,在數據量大的情況下,效率很低。
2.4.2 多維度型(MOLAP)
MOLAP將維度及聚合數據存儲在多維數據集中,利用數據立方體結構可以快速生成統計數據,需要占用較多的存儲空間。
2.4.3 混合型(HOLAP)
HOLAP綜合考慮了ROLAP和MOLAP優缺點,即將部分維度和度量值存儲在關系數據庫中,另一部分存在多維數據集中。
面向消防業務相關的維度包含了時間、消防單位、行政區劃、事件類別、建筑類別、建筑結構、財產損失、過火面積、死亡人數、受傷人數、火災等級和火災原因等維度。
根據實際需要可以對某些維度生成層次結構,層次結構通常用來定義數據聚集,即用有序層次來組織數據的邏輯結構。如對時間維度的設計可以按“年-月-日-小時”、“年-季-月-旬-日”、“年-周”等各種層次結構進行設計,以滿足不同的分析需求。針對消防的特殊業務需求,如需要重點關注春節期間的火災情況,特別是大年三十晚上11:30至大年初一凌晨0:30這一特殊時段的因燃放煙花爆竹引起的火災情況,可以建立基于農歷節假日的“年-節日-特殊時段”時間維度進行深入分析。
維度的層次結構中包含著層次級別,通過向下鉆取的方式可以層層展開需要統計的度量值數據,也可以通過向上聚集查看匯總的度量值數據。
對于維度級別的設定,可以將其綁定到維表中的不同字段,也可以綁定到維表中某些存在“父子維度”關系的字段。當使用父子維度時,通常綁定兩個字段,一個字段用來標識維度的成員,另一個用來標識成員的父子關系。如行政區劃維度,可以將所有行政區劃存儲在一列字段中,將其區劃代碼對應關系或者某區劃的上級行政區劃標識存儲在另一列字段中,通過父子維度的綁定以實現層次結構。
數據倉庫的物理建模是根據確定的某個分析主題,建立與分析主題相對應的事實表。在大多數情況下,事實表與業務庫實體表相對應,如接警出動分析事實表所對應的實體表為接警表,火災報告分析事實表所對應的實體表為反饋表。
事實表和維表共處與數據倉庫之中,事實表是數據倉庫的核心,通過將原始表和維度表進行關聯而生成,包含了所有的業務數據,需要精心維護。
在設計時,原則上事實表中只包含業務鍵值、相關維度表的鍵值和相關的度量值。如前所述,事實表中的數據粒度應當盡量的小,并可根據實際的分析需要在多個事實表之上建立邏輯視圖用于滿足特殊的業務分析需求。
維度表與業務庫中的數據字典表相對應,當存在多個異構數據源的數據字典表時需要進行數據清洗以保證維度數據的全局一致性。
ETL是構建數據倉庫的重要環節,是將業務系統數據庫如消防接處警數據庫、裝備數據庫、車輛數據庫和人員數據庫等相關數據采集匯聚到數據倉庫的過程。
ETL包括數據的抽取、數據轉換清洗和數據加載三個過程。
數據抽取過程將需要收集的數據放入數據采集區中,一般而言數據抽取只是簡單的將業務系統中的數據復制到數據采集區中,不會改變數據結構,抽取的方式一般采用依據時間戳增量抽取的方式。
數據轉換清洗過程是對數據采集區中的臨時數據進行數據轉換清洗,主要是解決數據質量問題。數據轉換主要包括數據類型的轉換、空值轉換和時間類型轉換等操作。數據清洗主要是為了解決數據的正確性、一致性和完整性等問題,同時需要對事實表中維度鍵值進行匹配,對多個異構數據源的維度進行統一處理,對錯誤數據進行修正等操作。當數據轉換清洗過程中產生了問題數據時,如果有對應的清洗規時則按清洗規則處理,不符合清洗規則的數據則進入到問題數據表,等待后期的處理。
數據加載過程是對轉換清洗后的數據按一定的順序裝載到數據倉庫中。消防業務數據在加載時采用更新合并的方式。
消防分析系統中對接處警庫進行ETL抽取的示例如下所示:

圖2 ETL設計圖
在系統的實際使用過程中,數據倉庫和ETL都是為給OLAP提供數據支撐。OLAP提供了對海量數據的快速動態分析處理能力,通過建立各個面向主題的多維立方體(CUBE),采用上卷、下鉆、切片、切塊、透視、過濾和旋轉等多種手段幫助消防指揮人員從多個視角全方位的綜合分析數據,為輔助決策提供支持。如通過OLAP分析功能,消防指揮員可以快速對“某轄區電器類火災的高發時間段”、“各支隊本年度出動次數排名”等研判主題進行分析。
OLAP數據來源于數據倉庫,需要與數據倉庫中的數據進行同步,OLAP數據更新的過程即進行維度聚合計算的過程,計算的結果將被保存到多維數據集中。OLAP刷新的頻率與業務倉庫數據采集頻率及實際應用需求相關,間隔時間從幾分鐘到幾小時不等。
OLAP分析主題可以與數據倉庫中的事實表相對應,也可以與數據倉庫的邏輯視圖相對應。OLAP建模主要包括構建數據視圖、維度和度量值等內容。
消防分析系統中對火災報告多維立方體建模的結構視圖如下圖所示:

圖3 火災報告的OLAP設計圖
本文結合消防領域的實際情況和輔助決策指揮信息化的客觀需求,闡述了該領域內基于數據倉庫技術的分析系統應用研究成果。利用該系統的分析結果,對消防相關部門的研判決策提供了數據支持,提升了消防相關部門在全面掌控防火、滅火和搶險救援等方面的能力,為消防部隊“科技強警”的落實奠定了良好的基礎,產生了良好的社會效益。
[1] Claudia Imhoff 等著,于戈等譯.數據倉庫設計[M].北京:機械工業出版社,2004.
[2] Jiawei Han,Micheline Kamber 著,范明,孟小峰譯.數據挖掘概念與技術第二版[M].北京:機械工業出版社,2007.