姜兆巍, 張海俊, 崔恩懷, 許 亮
(1.中油中泰燃?xì)馔顿Y有限公司,廣東珠海519000;2.金卡智能集團(tuán)股份有限公司,浙江杭州310018)
燃?xì)赓忎N差是衡量燃?xì)馄髽I(yè)經(jīng)營管理水平最直接的綜合指標(biāo),控制和降低購銷差是燃?xì)馄髽I(yè)的首要工作之一。實(shí)際上,燃?xì)馄髽I(yè)購銷差整體管理水平并不樂觀,大部分燃?xì)馄髽I(yè)并不清楚自身的實(shí)際購銷差、購銷差率。主要原因是燃?xì)馄髽I(yè)沒有科學(xué)的購銷差計(jì)算模型,無法保障數(shù)據(jù)的準(zhǔn)確與時(shí)效性。本文對燃?xì)馄髽I(yè)購銷差管理系統(tǒng)的構(gòu)建進(jìn)行分析。
購銷差管理系統(tǒng)可充分利用燃?xì)夤粳F(xiàn)有業(yè)務(wù)系統(tǒng)數(shù)據(jù),后臺服務(wù)程序從燃?xì)夤粳F(xiàn)有客戶與營收系統(tǒng)、用戶遠(yuǎn)傳表監(jiān)控系統(tǒng)等系統(tǒng)中抓取燃?xì)庥昧肯嚓P(guān)數(shù)據(jù)。購銷差管理系統(tǒng)主要包括基礎(chǔ)數(shù)據(jù)管理、日常管理、購銷差管理、數(shù)據(jù)查詢分析功能模塊。
① 基礎(chǔ)數(shù)據(jù)管理模塊。主要包括氣源信息管理、工商戶信息管理、場站信息管理、管網(wǎng)信息管理、表具信息管理等子功能模塊,提供基礎(chǔ)信息的添加、刪除、修改、查詢等功能,為其他功能模塊提供基礎(chǔ)數(shù)據(jù)支撐。
② 日常管理模塊。主要包括設(shè)備日常運(yùn)行管理、氣量交接管理、氣損記錄管理,該功能模塊是購銷差管理系統(tǒng)的主要功能模塊。通過日常管理模塊收集的各項(xiàng)購銷氣數(shù)據(jù),以及購銷差計(jì)算結(jié)果,可對購銷差產(chǎn)生原因進(jìn)行分析,查找日常管理工作環(huán)節(jié)的不足,針對不足進(jìn)行改進(jìn)。
③ 購銷差管理模塊。主要功能為定義銷氣量估算模型、定義購銷差計(jì)算模型。根據(jù)用氣估算模型、購銷差計(jì)算模型,預(yù)測計(jì)算一定時(shí)期的購銷差。也可以根據(jù)歷史數(shù)據(jù),計(jì)算歷史購銷差。
④ 數(shù)據(jù)查詢分析模塊。將購銷差數(shù)據(jù)以及日常管理過程中產(chǎn)生的相關(guān)業(yè)務(wù)數(shù)據(jù)進(jìn)行多維度綜合統(tǒng)計(jì)分析,生成各類型統(tǒng)計(jì)報(bào)表,為燃?xì)馄髽I(yè)的購銷差管理工作提供數(shù)據(jù)支撐。
① 購銷差計(jì)算模型
購銷差ΔQ的計(jì)算式為:
ΔQ=Qp+Qi,e-Qi,L-Qs-Qf-Qc-Qd
式中 ΔQ——購銷差,m3
Qp——總購氣量,m3
Qi,e、Qi,L——統(tǒng)計(jì)初期總庫存量、統(tǒng)計(jì)末期總庫存量,m3
Qs——總銷氣量,m3
Qf——自用氣量,m3
Qc——索賠氣量,m3
Qd——放散氣量,m3
購銷差μ的計(jì)算式為:
式中μ——購銷差
總購氣量包括管輸購氣量、CNG購氣量、LNG購氣量。統(tǒng)計(jì)初期總庫存量包括統(tǒng)計(jì)初期管存量、CNG庫存量、LNG庫存量。統(tǒng)計(jì)末期總庫存量包括統(tǒng)計(jì)末期管存量、CNG庫存量、LNG庫存量??備N氣量包括工商業(yè)用戶銷氣量、廠站銷氣量、居民用戶銷氣量、商業(yè)用戶銷氣量、供暖用戶銷氣量、加氣站用戶銷氣量、轉(zhuǎn)供量、其他銷氣量。
自用氣量包括生產(chǎn)自用氣量、生活自用氣量。索賠氣量包括非法用氣索賠氣量、外力破壞索賠氣量。放散氣量包括生產(chǎn)放散氣量、工程放散氣量。
② 預(yù)測方法
對購銷差管理系統(tǒng)采集的歷史數(shù)據(jù)、流式數(shù)據(jù)進(jìn)行建模分析,采用Spark Mllib機(jī)器學(xué)習(xí)方法對總購氣量、統(tǒng)計(jì)初期總庫存量、統(tǒng)計(jì)末期總庫存量、總銷氣量、自用氣量、索賠氣量、放散氣量等進(jìn)行預(yù)測。將預(yù)測結(jié)果用于購銷差預(yù)測計(jì)算,從而根據(jù)預(yù)測購銷差制定購氣、銷氣策略。
通過表具數(shù)據(jù)上報(bào),將銷氣數(shù)據(jù)放入Kafka(分布式消息隊(duì)列)中。使用分布式并行編程模型、計(jì)算框架(MapReduce)、數(shù)據(jù)挖掘算法(Spark MLlib)對Kafka中的數(shù)據(jù)進(jìn)行提取-轉(zhuǎn)化-加載(Extract-Transform-Load,ETL)。可對表具上傳失敗的數(shù)據(jù)進(jìn)行特定的算法填充,并對無效數(shù)據(jù)進(jìn)行過濾。
使用Kettle、MapReduce、Spark等工具對所有數(shù)據(jù)進(jìn)行ETL,并將ETL后的數(shù)據(jù)存放到數(shù)據(jù)倉庫Hive。使用HQL(Hibernate Query Language,查詢語言)對數(shù)據(jù)倉庫Hive中全量歷史數(shù)據(jù)進(jìn)行批量的各維度(區(qū)域、時(shí)間等維度)的分析。將分析結(jié)果及其他經(jīng)常使用的數(shù)據(jù)存放到HBase數(shù)據(jù)庫中,并提供交互式查詢。
① 使用Hive QL語言對數(shù)據(jù)倉庫Hive中存放的全量數(shù)據(jù)進(jìn)行各種維度的分析,如用戶畫像分析、時(shí)段統(tǒng)計(jì)等。
a.用戶畫像分析(用戶使用習(xí)慣分析)。以用戶為主要條件,時(shí)間為次要條件分組聚合,聚合后得到用戶每日的數(shù)據(jù)。將用戶每日的數(shù)據(jù)進(jìn)行特定的算法對比過濾,得到用戶每日的用氣習(xí)慣數(shù)據(jù),并加以分析。
b.時(shí)段統(tǒng)計(jì)。以季度為統(tǒng)計(jì)時(shí)段為例,將數(shù)據(jù)倉庫Hive中的全量數(shù)據(jù)(包括購銷差計(jì)算模型中的各項(xiàng)歷史數(shù)據(jù))按季度為主要條件分組聚合。將聚合后的數(shù)據(jù)按時(shí)間排序,實(shí)現(xiàn)對季度數(shù)據(jù)的統(tǒng)計(jì)。
② 對HBase數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行高效率的交互式查詢,建立查詢數(shù)據(jù)模型。可實(shí)現(xiàn)按經(jīng)常使用的字段(如用戶ID、時(shí)間、區(qū)域等字段)單獨(dú)建模,從而實(shí)現(xiàn)按特定字段的數(shù)據(jù)查詢。
③ 流式計(jì)算(對實(shí)時(shí)數(shù)據(jù)進(jìn)行分析計(jì)算,如實(shí)時(shí)報(bào)警)。使用SparkStreaming、Flink、Storm等流式計(jì)算框架,實(shí)時(shí)拉取Kafka中的數(shù)據(jù)。對實(shí)時(shí)拉取的數(shù)據(jù)進(jìn)行分析,若發(fā)現(xiàn)某些數(shù)據(jù)變化異常,則將些數(shù)據(jù)標(biāo)記為異常數(shù)據(jù),并進(jìn)行異常報(bào)警,以短信、微信、郵件等方式發(fā)送報(bào)警數(shù)據(jù)。
根據(jù)分析結(jié)果,可實(shí)現(xiàn)各個(gè)維度(區(qū)域、時(shí)間等)購銷差、購銷差率等數(shù)據(jù)的屏幕顯示。
建立了燃?xì)馄髽I(yè)購銷差管理系統(tǒng)。購銷差管理系統(tǒng)主要包括基礎(chǔ)數(shù)據(jù)管理、日常管理、購銷差管理、數(shù)據(jù)查詢分析功能模塊,對購銷差計(jì)算模型與預(yù)測方法、歷史數(shù)據(jù)處理流程進(jìn)行分析。