商業智能(BI),是用來處理企業中現有數據,并將其轉換成知識、分析和結論,輔助業務或者決策者做出正確且明智的決定。幫助企業更好地利用數據提高決策質量的技術,包含數據倉庫技術、分析處理技術、數據挖掘和數據展現技術等[1]。
大數據指不用隨機分析法(抽樣調查)等捷徑,而采用所有數據進行分析處理。大數據具有5V特點:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)[2]。
數據倉庫是支持管理決策過程的、面向主題的、集成的、隨時間變化的持久的數據集合[3]。數據倉庫中的數據將分散在不同業務系統和異構數據源中的數據,經抽取、清洗及轉化后根據數據分析的要求集成到數據倉庫中,為數據分析做準備[4]。
為了方便大數據量下的報表統計分析及互通融合各部門之間存在數據信息,本文提出了大數據數據倉庫的商業智能平臺,該平臺的構建可為公司的管理層提供實時有效的決策信息。
商業智能平臺主要是為公司領導、各事業部管理層、業務分析師、DBA等提供多視角、全方位及簡潔直觀的分析報告,有助于做出更高效準確的決策。公司領導主要關注系統中查詢部分功能及展示是否滿足數據有效呈現和支持業務決策;各事業部管理層主要關注整個系統是否滿足業務需求和工具是否好用;業務分析師主要關注業務場景分析,數據查詢與分析、儀表板配置展現及前期數據準備過程;DBA主要關注數據準備過程,含數據源管理。
根據用戶需求,設計以下功能模塊:駕駛艙模塊、數據源管理、模型管理、立方體管理、執行引擎、用戶管理、角色管理、菜單管理、數據權限管理、儀表板管理、任務調度、操作日志管理、消息隊列、API管理等。各功能模塊描述,詳見表1。
表1 功能列表 下載原表
平臺集成Spark、OLAP技術、ETL技術、數據倉庫和報表等技術。從層級上劃分,系統架構可分為源數據層、數據導入層、數據存儲和管理層、中間服務層、訪問控制層、業務用戶層、數據倉庫管理,如圖2所示。整個流程是源數據層中不同類型的數據經由數據導入層的ETL組件、Spark等處理后裝入數據倉庫的臨時存儲ODS(Operational Data Store)層,然后根據不同的業務主題模型生成后導入PDW層,在數據倉庫管理層進行數據管理配置后,由數據分析通過多維度多度量等方式進行數據聚合,處理生成DM(Data Mart)數據集市,通過數據中間服務層,并經過訪問控制層認證后,提供給上層的數據應用層或業務用戶使用。其中中間服務層提供具有豐富圖表的報表及駕駛艙進行數據展示。
源數據層,是數據倉庫數據的來源,可以是存儲于不同數據庫的業務系統數據,也可以是服務器上的日志文件,或者外部網站數據等。這些數據大體上又可以分為三類:一是結構化數據,主要是關系型數據庫中的數據,如Oracle、My SQL、SQL Server等。公司大部分是此類數據,分析挖掘的價值較大。二是半結構化數據,一般都是純文本數據,但是有各種存儲格式,如json、xml。這類No SQL數據庫有Hbase、Mongodb、Redis、Cassandra等,還有通過爬蟲爬取的外部網站數據。這些數據是業務相關的指標性數據,是對企業數據進行補充和完善。三是非結構化數據,主要是圖片、音頻、視頻、位置。這些數據本身沒有多少分析和挖掘的價值,一般是存儲在文件系統中,通過數據倉庫的元數據進行管理[5],以便進行檢索、統計和分析。
該層包括調度控制及日志、ETL過程、數據質量檢查、出錯處理回溯。其中ETL過程主要是進行數據的抽取集成和清洗轉換。平臺使用的ETL組件是Kettle,Kettle是成熟穩定的數據集成解決方案,在做數據抽取、數據清洗、數據轉換、數據過濾等方面有著穩定高效的表現[6]。Kettle能夠設定抽取任務的執行時間、間隔時間和執行的命令,過程中有相應的日志記錄便于監控和排錯。在數據導入層,平臺連接源數據層的數據后,進行復制,將原始數據抽取一份到臨時存儲層,然后再根據企業指定的存儲規則,進行清洗和轉換,寫入PDW層;根據主題、業務規則或模型,再進一步過濾數據到DM(數據集市),這些過程,都可以使用Kettle來處理,同時Kettle會保存ETL過程中的元數據,元數據可以保存到指定的數據庫中,平臺對元數據進一步的管理和分析。通過ETL過程,解決了以下幾個問題:對空值Null的清洗;對日期、字符串等數據格式的規范化;對數據源的各個字段的數據類型、缺失進行了統一和替換[7]。對于外部網站數據則使用爬蟲工具收集,根據爬取要求指定的內容,進行數據的過濾、收集。若爬取的內容相當復雜,爬蟲較難處理時,可以使用實體識別技術,進行文本標注、模型訓練,最后識別復雜內容,達到爬取指標的要求。對于日志文件平臺使用Spark技術,先將小文件合并為大文件,然后將大文件加載到內存中,根據業務規則和算法,選擇合適Spark函數,進行數據的處理,如特點分組統計、時間段內指標統計等,最后整合入庫。這些分析處理后的日志數據可以提供其他的應用系統使用。
平臺的數據存儲分為ODS層、PDW層、DM層。ODS操作性數據,是作為數據庫到數據倉庫的一種過渡,ODS的數據結構一般與數據來源保持一致,便于減少ETL的工作復雜性,而且ODS的數據周期一般比較短。ODS的數據最終流入PDW。DW層即數據倉庫層,是對原系統數據進行了清洗后的數據,這一層的數據一般遵循數據庫第三范式,其數據粒度通常和ODS的粒度相同。DM為了特定的應用目的或應用范圍,而從數據倉庫中獨立出來的一部分數據,也稱為部門數據或主題數據[8]。它以某個業務應用為出發點而建設的局部DW,DW只關心自己需要的數據,不會全盤考慮企業整體的數據架構和應用,每個應用都有自己的DM。
以My SQL作為主要存儲,以數據倉庫管理系統作為數據的元數據管理。數據經由導入層存儲于ODS層,數據倉庫管理系統中配置主題指標、模型、維度與度量等信息。然后執行引擎組件則根據不同的主題指標和模型將數據處理后導入PDW層存儲,并能根據多維度與度量值計算處理成DM數據集市進行存儲。
中間服務層的關鍵組件是Spark。Spark是專為大規模數據處理而設計的快速通用的計算引擎,可用它來完成各種各樣的運算,包括SQL查詢、文本處理、機器學習等[9]。平臺對Spark源碼進行二次開發并結合Apache Kylin中Cube預計算思想。其中Apache Kylin是一個開源的分布式的OLAP分析引擎,來自e Bay公司開發,基于Hadoop提供SQL接口和OLAP接口,支持從TB到PB級別的數據量[10]。自主研發大數據數據倉庫的執行引擎。該引擎通過讀取數據倉庫平臺中的數據源信息、表和字段信息、模型元數據信息等配置信息,進行模型和立方體的構建。通過多維度多度量的方式,實現數據的聚合查詢、統計分析、數據鉆取。通過內部的任務調度器,對計算資源進行合理地分配,對任務執行順序進行優化。執行引擎基于內存對數據的多維預處理方式,解決了基于磁盤的傳統解決方案在數據庫中進行多表連接與聚合時,查詢性能主要被磁盤I/O限制和計算十分耗時的問題,提高數據分析查詢的效率和性能。
業務數據用戶層包括應用層,可以是具體業務系統,也可以是接入商業智能平臺的用戶業務系統。由商業智能平臺提供的數據服務,商業智能應用系統的展示層使用Spring Boot、Hibernate、Quartz、Vue、Echarts等技術框架。Spring Boot實現快速應用開發、Hiberate提供對象關系映射框架、Quartz提供定時任務、Vue實現前后端分離、Echarts提供了豐富的圖表支持,包括飛行圖、熱力圖、多種類型的柱狀圖、曲線圖等,用戶可以在頁面上通過拖拽操作生成磁貼,然后選擇圖表類型,配置分析數據,從而形成主題駕駛艙,提供分析決策信息。
平臺推出后反響一直良好。平臺能提供用戶統計分析、報表展示、監控預警的作用,使得用戶能及時發現變化和異常,并對數據進行挖掘,從中發現價值點和優化點,有利于做出高質量決策。平臺解決了事業部需要手動寫大量且復雜SQL或存儲過程來進行統計、統計性能差、計算耗時、展示形式不佳、配置不靈活等痛點。它節省了各部門重復的數據收集處理、開發等工作,提高了報表查詢訪問速度,提高了工作效率。
大數據數據倉庫商業智能平臺采用數據倉庫、大數據等先進技術,建立數據中心和多維分析查詢,整合匯集公司日積月累的數據,并進行處理分析,有助于將決策的信息生動高效地向公司管理層展示,有助于企業數據管理的規范化、數字化、智能化。后續考慮建立用戶畫像,進一步挖掘數據潛藏的價值,幫助平臺“走出去”,針對用戶進行個性化推薦、精準營銷、個性化服務等多樣化服務,為公司精細化運營和精準營銷服務[11]。
標簽:
上一篇: 分析數據倉庫技術在商業信息系統中的運用
下一篇: 把握數字化倉庫發展的新機遇和新要求