程 平(博士生導師),杜 姍
近年來,隨著云會計[1]、物聯網、大數據等技術的快速發展,以“數據驅動”進行各類決策的趨勢逐漸得到認可與推廣,其中,圍繞特定業務主題的數據倉庫與聯機分析處理(OLAP)由于直接對接具體應用業務與數據源,得到了廣泛應用。鑒于此,本文以重慶海事局為例,設計面向采購管理內部控制評價的數據倉庫體系結構,探討行政事業單位采購管理內部控制評價數據倉庫的構建與應用,以期為相關部門開展更為全面的內部控制評價信息化工作提供支持。
重慶海事局是交通運輸部設置在長江干線負責重慶段水上安全監督管理、防止船舶污染水域和水上人命救助的行政執法機關。采購管理作為行政事業單位的重要經濟業務活動,經過多年的探索與實踐,重慶海事局單位層面上的采購管理內部控制建設取得了良好的效果。采購業務流程主要包括采購預算編審、采購計劃申報與審批、采購合同審核、采購預算與計劃的執行、資金結算以及供應商評價等環節。根據《行政事業單位內部控制規范(試行)》(以下簡稱《內控規范》)的要求,重慶海事局按照政府集中采購和協議采購流程,實現了“先預算、后計劃、再采購”,對采購業務各環節的關鍵點進行重點控制。采用表單數據采集方式,管理和使用部門可以隨時從數據庫中提取供應商、采購內容、合同金額、合同時間等采購過程數據,實現對采購業務的全程透明控制。
對于整體采購業務流程而言,目前重慶海事局運用大數據、云會計等技術將采購業務及其控制流程成功嵌入到財務云平臺中,基本完成了采購業務內部控制信息化的事前與事中審核,但是很難實現對采購供應商的商業信用評估、采購業務整體情況分析等事后評價體系的建立。對于分析型的數據處理而言,重慶海事局現有的各數據源之間沒有很好的信息交互與共享功能,導致海量數據與“孤島信息”的情況并存,而且數據質量不高,僅僅停留在業務層面,因此為了便于做出管理決策,有必要構建面向分析層面的數據倉庫。
基于財務云平臺的采購管理內部控制數據倉庫以《內控規范》為法規依據,結合重慶海事局采購業務流程,本文將數據倉庫體系結構分為采購管理數據源、ETL(Extract,Transform,Lord)過程、采購管理內部控制數據倉庫、采購管理內部控制數據分析評價、采購管理內部控制評價結果輸出五個部分。具體采購管理內部控制評價數據倉庫體系結構設計過程圖參考《財會月刊》2019年第13期中的文章《基于數據倉庫的行政事業單位單位層面內部控制評價——以重慶海事局為例》相關內容[2]。
首先,采購管理內部控制評價數據是從海量的相關數據源中,經過數據采集和數據的抽取、清洗、轉換,按照不同的主題加載到采購管理內部控制評價主題數據庫中。采購管理主題數據庫中按照不同的主題,如采購預算編制科學性、采購方式合理性、質疑投訴答復率等對數據進行分類存放形成數據集市。其次,將采購管理主題數據庫與采購管理內部控制評價分析系統直接相連,實現采購管理內部控制評價數據的挖掘與分析。最后,將分析結果以可視化的方式呈現給決策用戶端,實現用戶需求的響應與反饋。
數據采集即ETL 過程,是數據倉庫的核心,是將各個存儲著財務信息的業務板塊數據庫中的數據進行抽取、清洗、轉換、加載的過程。對與采購管理內部控制評價相關聯的多種數據信息進行抓取,通過ETL 過程將重復冗余的信息進行清洗,對缺失數據進行處理,進而加載到采購管理內部控制評價主題數據倉庫中。
目前,重慶海事局的數據來源主要有財務云平臺、金蝶K3 系統、各類文件掃描件等多種采購業務相關數據,涵蓋了海量的結構化、非結構化以及半結構化數據。其中,結構化數據是指由二維表結構進行邏輯表達和實現的數據,嚴格遵循數據格式與長度規范,通過關系型數據庫進行存儲和管理。采購管理內部控制涉及的結構化數據主要來源于財務云平臺業務數據庫中。非結構化數據是指數據結構不規則或不完整,沒有預定義的數據模型,不方便用數據庫二維表結構來表現的數據。采購管理內部控制涉及的非結構化數據主要包含采購合同文本掃描件、采購物資的相關票據、《內控規范》等相關文本文件。半結構化數據是指非關系模型的、有基本固定結構模式的數據。采購管理內部控制涉及的半結構化數據主要是指中國政府采購網等以html 文件格式存儲的采購相關信息。
各種數據需要通過進一步清洗、轉換才能將有助于數據分析的信息抽取到數據倉庫中進行存儲。數據清洗的任務是過濾掉不符合要求的數據,主要包括不完整數據(如供應商名稱缺失、采購商品種類缺失等)、錯誤數據(如采購商品日期格式錯誤、采購金額等數值數據被輸成全角數字字符等)、重復數據(如不同維度表中包含的相同字段等)。清洗過程就是將不完整數據補充完善后重新錄入,將錯誤數據在業務系統中更正后錄入并刪除重復數據的過程。數據轉換則主要是進行不一致的數據轉換、數據粒度的轉換。不一致數據轉換是指將不同業務系統的相同類型的數據統一,如同一個供應商在財務云平臺中的編碼為XX001,在金蝶K3 系統中的編碼為YY001,需在數據抽取后將其轉換為同一編碼。數據粒度的轉換主要是將不同業務系統中的數據按照采購管理內部控制評價數據倉庫的粒度進行聚合。
數據倉庫的主題是在較高層次上將業務模型和面向事務的數據進行分析、歸類和綜合的一個過程,每個主題對應一個分析領域。結合《內控規范》及相關規定的要求,采購管理內部控制評價應滿足采購預算編制、采購招投標管理、采購質疑投訴等方面的需求,實現對重慶海事局采購管理不同模塊數據的分析及評價。因此,本文將重慶海事局采購管理模塊數據倉庫的主題域分為:采購預算編制科學性、采購計劃執行有效性、采購方式合理性、招投標控制合規性、質疑投訴答復率、采購檔案完整性、采購信息分析統計合規性等七個主題,具體見表1。
在表1中,以采購預算編制科學性主題為例,可通過考察預算編制表“項目名稱”“申報金額”“核定金額”和采購管理辦法中“產品配置數量”“產品使用年限”是否符合實際需求和相關標準編制政府采購預算,從而評價采購預算的編制是否科學。

表1 采購管理內部控制評價數據倉庫主題域
數據倉庫的粒度劃分層次是數據倉庫構建設計中要解決的一個重要問題,粒度層次劃分適當與否直接影響數據倉庫中的數據量和所適合的查詢類型。一般數據的粒度分為單一粒度和雙重粒度:單一粒度是指將數據的最細粒度數據增量存儲,并在最細粒度模型上聚合數據;雙重粒度是指只將最近幾個月的最新粒度數據保留在數據倉庫中,當到達某個保留周期時,將保留周期之后的數據導出到磁盤上存儲,從而為最新的數據騰出空間。單一粒度和雙重粒度的區別在于:單一粒度將最細粒度的數據永久保存于數據倉庫中,而雙重粒度保留周期內最新的最細粒度數據。重慶海事局內有多套業務系統,歷史數據量大,若采用單一粒度,那么對于存儲的要求極高,因此,本文數據倉庫將采用雙重粒度。例如采購預算編制科學性主題可從時間維度進行分析,按照采購日期、預算編制日期以日為最小粒度進行粒度分割;采購方式合理性可從采購商品的地區維度進行分析,按照采購商品地點以區為最小粒度進行粒度分割。
數據倉庫的模型設計是數據倉庫建設的核心,也是決定數據倉庫項目成功完成與否的關鍵因素。基于上文對采購管理內部控制評價數據倉庫主題域的劃分,將其劃分為七個數據集市,并基于各主題特性,構建數據倉庫模型,不同主題域的模型設計見表2。本文以采購預算編制科學性主題為例,對其進行具體的數據倉庫模型設計。
1.概念模型。數據倉庫的概念模型設計可采用E-R 模型以及面向對象分析兩種方法,本文采用E-R 模型進行采購管理內部控制評價數據倉庫的概念模型設計,如圖1所示。

圖1 采購管理內部控制評價數據倉庫概念模型
2.邏輯模型。數據倉庫的邏輯模型則是概念模型的具體化。采購管理內部控制評價數據倉庫的每個主題都是由多個表來實現的,這些表之間依靠主題的主鍵聯系在一起,形成一個完整的主題。維度表是用戶分析數據的窗口,決定了數據分析的廣度。事實表則用來存放業務的數字度量值信息,這些度量值信息是從各維度的交點處得來的。在選取數據倉庫維度時應該將實體作為一個對象,把與該對象相關的所有重要屬性都提取出來作為獨立維度。以采購預算編制科學性主題為例,其維度可分為采購商品維、資產維、采購方式維、預算編制維、預算標準維、人員維等,通過以上維度與事實表相連,具體分析采購預算編制是否符合相關規定以及采購預算是否符合實際需求。具體的邏輯模型設計如圖2所示。

表2 行政事業單位采購管理內部控制評價
3.物理模型。數據倉庫的物理模型設計就是數據倉庫邏輯模型在物理系統的實現,即基于邏輯模型,在數據倉庫中建表、索引等。本文以采購預算編制科學性主題為例的物理模型設計如下:
(1)NK_YW_CG_WD_CGSP【采購商品維度表】包含字段:CGSP_ID【采購商品ID】、CGSP_NAME【采購商品名稱】、CGSP_NOTE【采購商品信息】。
(2)NK_YW_CG_WD_CGFS【采購方式維度表】包含字段:CGFS_ID【采購方式ID】、CGFS_NAME【采購方式名稱】、CGFS_NOTE【采購說明】、CGFS_Depot【采購部門】。
(3)NK_YW_CG_WD_ZC【資產維度表】包含字段:ZC_ID【資產ID】、ZC_NAME【資產名稱】、ZC_STYLE【資產類型】、ZC_Depot【資產使用部門】。
(4)NK_YW_CG_WD_People【人員維度表】包含字段:P_ID【人員ID】、P_NAME【人員名稱】、P_AUTHORITY【人員權限】、P_Depot【人員部門】。
(5)NK_YW_CG_WD_YSXM【預算項目維度表】包含字段:B_ID【預算項目ID】、B_NAME【預算項目名稱】、B_STYLE【預算項目類型】。
(6)NK_YW_CG_WD_TIME【時間維度表】包含字段:Year【年】、Month【月】、Day【日】。

圖2 采購預算編制科學性主題數據倉庫雪花模型
基于采購管理內部控制評價數據倉庫的決策分析方法主要有聯機分析處理程序(OLAP)、運用HQL查詢語句以及數據挖掘三種方法。聯機分析處理程序(OLAP)是一種歸納型的決策過程,基本操作包括切片、切塊、旋轉、上卷、下鉆,主要優勢在于能夠直接仿照用戶的多角度思考模式,預先為用戶組建多維數據模型,通過快捷、一致、交互的訪問使用戶更好地理解數據。Hive 是一個以Hadoop 為基礎的、建立在Hadoop 生態系統之上的數據倉庫,能夠對大量的結構化數據進行存儲與處理。它將數據存儲在HDFS中,采用類SQL語言HQL語句對數據進行操作與管理。Hive 中的解釋器負責對HQL 進行解析和轉換,將其解釋為Map/Reduce 任務,并通過執行Map/Reduce任務返回對Hive中數據的查詢或處理的結果。數據挖掘一般是指從大量的數據中通過算法搜索隱藏于其中信息的過程。本文重點介紹利用HQL查詢語句進行分析查詢的方法。
根據上文確立的采購管理內部控制評價數據倉庫主題域,可對七個分析主題建立評價模型,本文以基于重慶海事局財務云平臺的采購預算編制科學性主題模型為例,利用HQL 語言在Hive 中完成對海量數據的查詢操作,實現對采購管理中異常點、風險點的捕捉。采購預算編制科學性主題旨在考察單位采購資金安排和使用的合理性,是否符合實際需求和相關標準編制政府采購預算。首先檢查采購預算的編制是否符合《內控規范》等相關條例,如采購方式、采購金額等;其次檢查采購商品的實際情況與采購預算編制是否相符,是否存在預算未執行或超預算購買的情況。
1.步驟一。運用HQL語句從數據倉庫中選取相關數據項,篩選出采購項目中不符合采購預算編制科學性的項目。通過“預算項目ID”連接預算編制表和預算標準表,將預算項目的“預算金額”與對應預算項目的“預算標準金額”相比對,若“預算金額”大于“預算標準金額”,則說明該項預算項目的編制存在問題。對應的分析評價核心HQL語句如下:
Select I_ProjectID
From ZC_budget_formation預算編制表
Join ZC_budget_standard預算標準表
On 預算編制表.Project_ID=預算標準表.Project_ID
Group by 預算編制表.subject_ID
Having Sum(預算編制表.M_budget)>=預算標準表.M_standard
2.步驟二。通過“采購商品ID”連接采購明細表和預算明細表,將采購商品的“預算金額”與“采購金額”對比,若不相等,則說明實際采購與采購預算不符,檢查出存在異常的項目。對應的分析評價核心HQL語句如下:
Select I_Project_ID
FromZC_purchase_detail采購明細表
Join SYS_budget_detail預算明細表
On 采購明細表.Project_ID=預算明細表.Project_ID
Group by 采購明細表.USE_ID
Having Sum(預算明細表.M_Budget)!=Sum(采購明細表.USE_Money)