?

利用多維概念設計靈活的數據匯總模塊

2020-10-09 11:07胡繼軍
理論與創新 2020年15期
關鍵詞:統計數據

胡繼軍

【摘? 要】近年來統計數據處理程序匯總模塊執行效率大幅提高,但靈活性還遠低于用戶期望。通過對統計匯總表結構的分析,發現它們與多維數據模型非常相似,匯總表是多維數據的平面化展示。因此,用業務數據庫的匯總數據,作為基礎數據來構建多維結構,經過一定的多維操作,最后輸出平面化的統計匯總表。實踐表明,此方法能夠很好地滿足用戶對效率的需求,同時也能設計復雜的匯總表。

【關鍵詞】多維數據模型;統計數據;匯總模塊

引言

統計數據處理程序逐漸朝平臺化方向發展。其匯總模塊的執行效率也發生了很大變化,以地市級的數據為例,200張匯總表的執行時間從過去的十幾個小時,降到現在的幾個小時。雖然效率大為提高,但與用戶的實際期望值還有一定的差距。用戶希望在十幾分鐘內完成。本文從全新的角度來分析和解決此問題。

1.現有匯總模塊的主要設計思路

1.1數據庫端腳本匯總

早期一些匯總模塊使用“游標”技術進行數據匯總,即在數據庫端腳本中,通過游標查詢實現較為復雜的匯總功能。這是因為一些中、小型的數據庫不支持復雜的匯總功能,例如不能按地區代碼的前幾位進行分組匯總。游標方式雖然擴大了匯總模塊的通用性,但它直接查詢基礎數據,沒有利用數據庫內置的匯總功能,執行效率很低。

1.2分解成多個子匯總的可視化設計

近年來,隨著Oracle數據庫在統計領域的廣泛使用,憑借它在行業的領先地位,對復雜匯總的高度支持,數據庫端腳本匯總方式逐漸退出歷史舞臺。取代的是可視化的匯總表設計。但此方法也有其缺陷,匯總表每行甚至每個單元格都是一個子匯總,結果是產生大量的匯總運算,大大降低了整體匯總效率。

2.統計匯總表與多維數據模型的統一性

2.1統計匯總表的特點

匯總表包含一個或多個匯總指標,并以一個或多個分組展示數據。分組之間可以是并列關系,如先按地區分組,再按門類分組;也可以是層次遞進的關系,如第一層是省級分組,第二層是市級分組,即省的下面緊接著其所屬的各市。多個分組之間也可以是上面兩種方式的復雜組合。一個分組包含多個分組值,如省級分組包含各省值,分組反映匯總指標的一類屬性,可以理解為維(角度)。匯總指標從不同維度表示,發現與多維數據模型非常相似。

2.2多維數據模型的特點

多維數據模型是一個邏輯概念,它主要解決如何對大量數據進行快速查詢和多角度展示。該模型的應用領域主要有數據倉庫、OLAP(在線分析處理)和數據挖掘3個方面。它通過引入維、維分層和度量等概念,在邏輯上將數據視為一個多維立方體(簡稱立方體)。

維:是人們觀察數據的特定角度,是考慮問題時的一類屬性,屬性值構成維的成員。如時間維,上面的各分組即是維,也叫分組,有地區維、行業門類維等。

維分層:同一維度還可以存在細節程度不同的多個描述層次。如時間維,可包括年、月份和日的層次,簡化起見,把維分層作為多個獨立的維。

立方體:用三維或更多的維描述一個對象,各維的成員交叉點(坐標點)保存對象的數值數據。在數據匯總中,交叉點保存的是匯總指標,可以不止一個。

度量:立方體中各維的成員交叉點,是一個單元格,用以存放1個或多個數值數據,這些數據就是度量,單元格則是度量的容器。

通過比較統計匯總表和多維數據模型的特點,發現它們是可以互相轉換的,都是描述多維結構的數據,是視圖與模型的關系。

3.設計特色的多維匯總模塊

3.1選擇合適的多維數據模型

既然多維數據模型與統計匯總表能夠達到如此高度的統一,那它便是匯總模塊優先的選擇。多維數據模型的實現有多種途徑,其中主要有多維數據庫、關系型數據庫以及兩者相結合的復合方式。用于匯總的細節數據已經存在于業務數據庫中,而匯總表一般都比較復雜,如有可能要對分組值進行歸并,匯總表里也可能包含多個數據匯總,這就要求我們建立起自己的多維結構來處理這些問題。因此,多維數據模型是多維與關系型相結合的第三種方式。

3.2設計自定義的多維結構

從上面的分析來看,多維匯總模塊需要設計自定義的多維結構。套用多維數據模型中的概念,一次從業務數據庫返回的匯總數據,都應創建一個相應的立方體。由于統計匯總表往往包含多個數據匯總,因此多維結構也應包含多個立方體。

在實踐中,考慮到匯總表有主欄和賓欄之分,多維結構也應把分組維分成主欄維和賓欄維兩部分。為了方便統一處理,把匯總指標看作一個特殊的維,叫度量維。度量維的成員與各匯總指標名稱一一對應。這樣每一個匯總指標的具體值都有其唯一的維坐標,這為后續的多維操作奠定了基礎。

3.3需要定義的多維操作

(1)立方體的合并。如果匯總表包含多個立方體,這時合并操作是必需的。常用的合并操作是加操作,即在兩個立方體中,對于相同的維坐標,如果都有匯總數據,則其和作為此坐標上的新值;如果只有一個,則此值就是新值;否則為空。合并操作也可以是減操作、最大值操作等。

(2)維成員的排序。排序方式有:無排序、升序和降序,還可以提供自定義的排序。一般情況下,根據基本匯總數據創建的立方體,其各維的成員是有序的。但如果它是合并生成的,維成員的有序一般會打破,就需要重新排序。排序時應考慮成員“合計”的特殊性,因為合計一般放在最前面(或最后面),如果作為普通的成員處理,有可能排在中間。

(3)維成員的操作。其主要有維成員的增加、刪除和合并。在地區分組中,有時需要 “直轄區”一欄,但直轄區在行政區劃中沒有對應的級別,它是部分子地區的合計。常規的辦法是針對直轄區再匯總一次。如果支持增加操作,則第二次的匯總就可省略,這大大提高了效率。合并操作實際上是先增加產生新成員,后刪除對應的原始成員,這在業務數據庫不支持復雜的分組匯總時,特別有用。

3.4其他方面的設計

有了核心的多維結構,其他方面的設計就容易多了,這里只作簡單的介紹。對于具體的匯總應用,模塊首先需要定義數據源、匯總的分組以及匯總指標。數據源是匯總的數據來源,也是業務數據庫中的一個或多個數據表。XML文件是定義匯總表的最佳選擇,一個文件可以定義多個基本匯總,還可以定義這些匯總的合并方式。每個匯總的定義又包含主欄分組、賓欄分組和匯總指標的定義。

#號開始的是全局變量或者前面定義的局部變量,首先定義的是匯總字段定義HS1,即度量維,接著定義業務數據庫需匯總的數據,模塊則根據返回的數據,在系統中建立名為“主立方體”的立方體,立方體中定義了兩個分組。配置文件可以手動編寫,也可以開發可視化的匯總表設計。

4.多維匯總模塊的執行效率及優化

本匯總模塊已經用于臺州市第三次經濟普查的簡要本和資料本匯總,以及第二次R&D資源清查的匯總開發。普查的簡要本包含200余張匯總表,匯總時間約為70秒;普查資料本包含400余張匯總表,匯總的時間約為150秒。從上面數據可知,本模塊的匯總效率遠遠高于10分鐘200張的要求。前面的數據是在單線程中計算的,如果在多線程下,速度將提升至少一倍。

本模塊能取得目前的效率,主要取決于兩個方面:一是不從業務數據庫中直接查詢細節數據,而是利用業務數據庫的匯總數據建立多維結構。這既能避免大量基礎數據的傳輸,又能利用業務數據庫內部匯總的高效優點;二是盡量減少對業務數據庫的匯總次數。如不要把匯總分成過多的子匯總,多使用多維操作減少匯總的次數。

猜你喜歡
統計數據
2017年居民消費統計數據資料
加強統計基礎建設保障統計數據的真實性和準確性
淺析統計數據質量
統計數據安全問題及其對策研究
計量模型在民用汽車擁有量中的分析應用
高校統計數據質量問題若干問題
統計數據
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合