本文发表于期刊《天津通信技术》2003年4期。
基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统
马根峰
(广东电信公用电话管理中心 广州 510635)
摘要 在电信市场尤其是公话市场竞争激烈的今天,广东电信公话中心的有关经营分析人员比较迫切的想进行众多IC话机话务的动态分析,即不但要能从较高层面上分析全省或某些地区、所有或部分话机类型、某些地区某些话机类型的话务在某些时间段的变化,而且要能从细节上跟踪每一部IC话机的200、IC话务在不同时期的变化。从而了解IC话机话务变化的原因或找出其中的规律,为管理者决策提供依据。但目前话机资料及话务数据分散于不同数据库表的组织方式确不能提供这样的支撑,所以必须对数据进行重新组织,并且要按照不同的分析需要对数据按照不同的综合程度来组织。然而话务的动态分析还要求对话机资料更新、对话务信息表按照时间维度进行转换,通常的OLAP分析工具在对几十万条记录的数据表进行维度转换时效率就极为低下。在这种前提下笔者编写了”话务动态分析系统”,利用数据仓库技术对数据源进行挖掘、按照不同的粒度来组织;在数据仓库设计时兼顾动态分析的需要,在数据仓库数据生成时自已编写程序实现话务按照时间维度转换,轻松地实现了话务的动态分析。
关键词 数据仓库;OLAP;维度;分布式数据库访问技术;事务
The system dynamic analyse of charge of pay phone for IC card in Public Payphone Center, Guangdong Telecom Corporation based on Data Warehousing & dimension conversion
MA Gen-feng
(Public Payphone Center, Guangdong Telecom Corporation, Guangzhou 510635)
ABSTRACT: Today, the competition becomes more severe in telecom market, especially in public pay phone market. The analyst in Public Payphone Center, Guangdong Telecom Corporation want to analyze the change of 200 & IC charge of many pay phone for IC card in different time as well as the influence on the change of the charge of all or part areas, all or part user types of pay phone, part areas and part user types of pay phone. If they do this they can find the reason for those change or the rule hide in those change so that they can support the decision-maker to make decision well. But the data of pay phone for IC card and the charge of them every month is distributed in many tables in database in On-Line operating environment now, it result in the huge difficulty to supply the analyst with sufficient proof to analyze the change of those charge above. So it is necessary to organize these data and store them in different integration level. What is more, it is necessary to update the information of pay phone and convert the time dimensionality because of the analysis above. While the OLAP tools for Data Warehousing shows quite low efficient in the process of this conversion of table with millions records well. So I develop a system to process the analysis of the change of the charge of two hundred thousand pay phone for IC card easily. In the system, it is the first step to dig the detail data of phones and those charge to the Data Warehousing, followed by the high efficient time dimensionality conversion of phones and those charge to a table then data in different integration level is created.
KEY WORDS:Data Warehousing; OLAP; Dimensionality; Access to distributed Database; Transaction
1 引言
200及IC卡业务是广东电信的一项重要业务,因而对于众多IC话机上发生的200及IC话务分析显得非常必要。目前对于它们的分析主要包括层面比较高的地区级话务的变化以及某一计费月IC话机的话务情况。但经营分析人员即使知道了全省或部分地区的话务变化,却不能找出其中的原因或规律。这所以采取这样的分析方式,就是因为IC卡业务及200业务数据分散于操作型环境之中,并且都是以细节级数据存贮的(每个月IC话机的资料、IC话机的IC话费、全省200业务的话费分别存放在一个数据库表中)。在这种操作型的环境中要想进行”先高层后低层”的话务动态分析,即按照地区→市县→支局的层次,结合IC话机的用户类型来一级一级地找出IC话机话费变化原因或规律,显然是不现实的。
要想解决上面的问题,必须利用数据仓库技术对话机资料数据及话务数据包括200及IC话务数据重新组织,对其按照不同的细节程度来设置不同的粒度来满足不同层次上话务动态分析目标的需要,形成一个综合的、面向分析的环境;然后去掉各级粒度表中的时间维度,来满足不同层次上话务动态分析目标的需要。
但这些OLAP工具通常用于处理记录较少的表的维度转换,对于处理电信运营商中存在的每个月都是几十万、几百万乃至几千万条记录的表的维度转换时从执行时间上讲是不可行的(处理百万级数据表的维度转换时运行几百个小时也得不到结果),所以笔者首先利用数据仓库技术将数据进行挖掘,在数据仓库设计时兼顾动态分析的需要,在数据生成时自已编写程序实现维度转换,然后基于维度转换后的数据表来生成不同粒度的综合级表。最终在PC机上仅用了十五分钟就完成了二十多万部200专用话机资料的更新及二十几万条记录的话费表的处理并生成了数据仓库中的不同粒度的数据,从而轻松地实现了话务的动态分析。
2 数据仓库与OLAP
2.1数据仓库的特点
数据仓库技术是用以更好地支持企业或组织的决策分析处理的,面向主题的,集成的,不可更新的、随时间不断变化的数据集合。它通过将数据按照不同的综合程度(即粒度)来组织,以满足不同分析的需要。
2.2 联机分析处理OLAP
OLAP是针对特定问题的联机数据访问与分析。通过对信息(这里的信息已经从原始的数据进行了转换,以反映用户所能理解的企业的真实的”维”)的很多种可能的观察形式进行快速、稳定一致和交互性的存取,允许管理决策人员对数据进行深入观察。
维是OLAP中的一个基本概念,它反映了人们观察数据的特定角度,如电信业务分析中从不同的计费月来观察话机的话务,这里的时间(计费月)就是一个维。
一个维往往具有多个层次,如时间维可以从日期、月份、季度、年等不同的层次来描述。但在广东电信公话管理中心,对IC话机话务的动态话务分析主要从月份这个层次来进行。
2.3数据仓库中的星型模式及改进
2.3.1数据仓库中的星型模式
星型模式是用关系数据库系统来实现的数据仓库中最常见的模式,在这种模式下,数据仓库由事实表和维表构成。事实表中包含着用于分析的指标和联接维表的主键。如下面细节级话机话务和话机资料的关系模式
话机话务(电话号码,时间代码,200话费,IC话费)
话机(电话号码,地区代码,市县代码,支局代码,话机类型代码,话机安装地址,…)
地区(地区代码,地区名,…)
…
时间(时间代码,时间)
在这种模型下,可以很轻松地分析出某个维(如时间维中各月份)的话务总体情况,这就是在事实表中增加维度的好处;对于事实表中记录不多的情况下,可以用OLAP的一些工具(如Brio)将时间维从事实表去掉,在事实表中增加时间维表的各个取值来作为事实表中的几个字段,这样就可以轻松地分析几个时段的某个或某些维的话费、某些话机的话费的变化这类问题了。
2.3.2本系统中对于传统星型模式的改进
对于广东电信来说,每个月的IC话务数据都在二十多万条记录以上,n个月累加起来就是n*几十万,这样庞大的表用OLAP工具来进行维度转换显然是不现实,也是不可行的;并且它还无法处理每个月二十多万部IC话机的资料更新。笔者在<<广东电信公话IC话机动态话务分析系统>>中的解决方法是,直接在数据仓库各级粒度的话务表中去掉时间维度,增加时间维表中的值(各个月)作为各级粒度话务表的字段;又将话机资料和话务表合为一个表,这样不但在进行维度转换时同时更新话机资料,而且能够提高以后用户查询的响应速度。在系统中用自己编写的程序在PC机上仅运行了十五分钟的时间就完成了一个月二十多万条记录的话机资料表的更新和话务表的维度转换、并且生成了各级粒度的综合表。数据仓库采取这种设计方案的另一个好处理就是每一次处理只需要处理一个月的数据,而不是像OLAP工具那样一次需要处理n个月的数据。
3系统中的数据仓库设计
3.1 广东电信公话中心操作型环境下的数据组织情况
在广东电信公用电话管理中心,200话机资料、所有200业务费用的关系模式
l IC话机资料的关系模式
A84_xxxx(电话号码,地区代码,市县代码,支局代码,…,话机使用标志)
l IC话机话务关系模式
A92_IC_xxxx(电话号码,总次数,总时长秒,总时长分,总金额,…,免费次数,免时长秒,免时长分,地区代码)
l 全省200业务话费的关系模式
Fee_200_xxxx(电话号码,总次数,总通话时长秒,总计费时长分,总金额,…,IP国际次数,IP国际通话时长秒,IP国际计费时长分,IP国际金额,地区)
xxxx表示年月,如0302代表2003年2月的话机资料或话机话费
3.2 系统的中数据仓库设计
考虑到篇幅,各步骤经过简化如下:
l 概念模型设计
l 逻辑模型设计
l 数据仓库生成
3.2.1概念模型设计中的界定系统边界
在广东电信公话中心,管理者最迫切进行的分析主要有:
l 分析各地区IC话机的200、IC话务的总体情况及不同时期的变化
l 分析各种类型IC话机的200、IC话务总体情况及不同时期的变化
l 分析各地区各种类型IC话机的200、IC话务情况及不同时期的变化
l 分析各IC话机(包括新增、拆机的IC话机)的200、IC话务情况及不同时期的变化
要进行以上的分析,所需数据应包括:
l 各地区不同时期IC话机的200、IC话务
l 各种类型不同时期IC话机的200、IC话务
l 各地区各种类型IC话机不同时期的200、IC话务
l IC话机在不同时期的200、IC话务
3.2.2逻辑模型设计
l 确定粒度层次划分
粒度是数据综合级别的程度。在数据仓库中,多重粒度是必不可少的。数据仓库的主要作用是DSS分析,因而其绝大部分查询都基于一定程度的综合数据之上,而只有较少的查询涉及细节。在本系统中采用了五重重粒度,早期细节级的IC话机资料表A84_src和话费细节级的表Fee_IC_src;维度转换后的细节级话机话费表PhoneICFee_detail;轻度综合级的各地区、市县、支局、话机类型的话务表phonefeeIC_littleuplvl表;较高综合级的各地区、话机类型的话务表phonefeeIC_midlvl;以及高度综合级的各地区话务表phonefeeIC_Areahighlvl、各话机类型话务表phonefeeIC_Userhighlvl。
l 关系模式定义;
A84_src(G200_xxxx表各个字段,话机资料日期)
Fee_IC_src(电话号码,年月,200总金额,IC总金额,地区)
PhoneICFee_detail(A84_xxxx表各字段,话机资料日期,200301_200金额,200301_IC金额,…,200412_200金额, 200412_IC金额)这里及以下综合级表中的话机资料日期字段都经过了编码来反映话机的存在时间,不同于A84_src上边的话机资料日期字段
phonefeeIC_littleuplvl(地区,市县,支局,话机类型,话机资料日期, 200301_200金额,200301_IC金额,…,200412_200金额, 200412_IC金额)
phonefeeIC_midlvl(地区,话机类型,话机资料日期, 200301_200金额,200301_IC金额,…,200412_200金额, 200412_IC金额)
phonefeeIC_Areahighlvl(地区,话机资料日期, 200301_200金额,200301_IC金额,…,200412_200金额, 200412_IC金额)
phonefeeIC_Userhighlvl(话机类型,话机资料日期,200301_200金额,200301_IC金额,…,200412_200金额, 200412_IC金额)
对于关系模式的这种设计,大家可能会一方面质疑它的扩展性,即它能用来分析其它年月的话务吗?另一方面可能会质疑如果它可以扩展来统计更多时间的话务情况,那最多可以统计几年的话务?只要向几个话务表中增加几个年月的金额字段,在我编写的维度转换程序中只要增加几个变量及几条赋值语句,就可以统计许多年的数据;两者,MS SQL SERVER7.0最多支持1024列的表,这可以用来统计分析40多年的数据。
3.3选定数据库产品来建立数据仓库
目前数据仓库的实现还主要借助于关系数据库系统,两者由于本系统中数据仓库数据来自于远程数据库,因此要用到分布式访问技术。而远程数据库系统是MS SQL SERVER7.0,加上MS SQL SERVER与其它数据库系统的连接性能又比较好,更不用说与MS SQL SERVER的连接性能了,因此选用了MS SQL SERVER7.0来建立数据仓库。同时这也符合分布式数据库系统建立时尽量采用”同构同质”型局部数据库管理系统的建议。
3.4数据仓库中数据的生成
3.4.1操作型环境数据的挖掘和数据仓库中综合级数据的生成
在数据仓库设计步骤中,数据仓库的生成是其中的关键部分,它为DSS系统提供了基础数据的支持。在这一步里所要做的工作是接口编程,以实现将操作型环境下的数据装载进入数据仓库环境。建立和设计这个接口,不仅要对数据进行抽取,而且还要从面向应用和操作的环境生成完整的数据。
数据挖掘的方法主要有DTS工具,用客户端开发语言的编程,以及DBMS的存贮过程。我在进行数据仓库数据挖掘及数据生成时均采用了存贮过程,原因在于它在数据库/数据仓库中的预编译特性及在数据库访问时的高效率。
3.4.2数据生成时的数据完整性控制
数据仓库中数据挖掘及综合级数据生成时都完成了大量数据的INSERT操作,如果在某一时刻发生了某种错误或系统掉电,那么加载到数据仓库中的数据的完整性就会遭到破坏,因此必须采取一定的措施来保障数据的完整性。MS SQL SERVER提供了事务,使得一个事务内的所有语句被作为一个整体来执行,遇到错误时,可以回滚事务,取消事务内所做的所有改变,从而保证数据的完整性、一致性。
在数据仓库数据挖掘时,由于用到了公布式数据访问技术,所以要使用分布式事务;而在进行维度转换时只需使用本地事务即可。
3.4.3系统中的分布式数据库访问技术
在数据仓库数据挖掘时,由于用到了远程数据库的访问,所以必须使用分布式数据访问技术。MS SQL SERVER提供了远程数据库访问技术,具体访问远程数据表的方法为
SELECT [Column1,…,Column] FROM Remote_Server.DbName.Owner.TableName
3.3.4 数据挖掘的具体流程
4结束语
在广东电信公话业务的经营分析中,目前使用的静态话务分析在电信市场竞争日益加剧的今天,越来越不能满足决策者的需要,只有使用话务的动态分析方法,才能使经营分析人员不但能从高层面上发现话务的变化,而且又能低层面乃至具体每一部新增、拆除或一直都存在的IC话机的话务上找出这种变化的原因或规律性,从而帮助决策者制定对应的决策来更加有效地阻止坏的因素的影响,利用规律来制定决策进一步促进广东电信公话业务的发展。为了能够实现话务的动态分析,笔者编写了自己的维度转换程序为话务的动态分析提供目前OLAP工具所缺乏的大型数据库表维度转换的支持以及每月都要进行的几十万部IC话机资料的更新问题,在实际中也显示出了相当高的效率。在数据库/数据仓库进行关系模式设计时采取对数据按照不同的粒度来组织,充分满足了不同分析的需要。这种数据仓库+用户的OLAP维度转换的做法,同样会给电信企业已有或将来的CRM系统在计算每个客户的价值时提供有力的支撑,同时它便于查询每个客户在不同时期的话务,从而为CRM系统中开展”一对一”的销售模式提供了更有力的支持。
参考文献:
[1] 王珊 ·数据仓库技术与联机分析处理 · 北京:科学出版社,1998.6
[2] Michael Corey(美),Michael Abbey(美)·SQL SERVER 7 Data Warehousing·北京:希望电子出版社,2000.1
[3] 邵佩英 ·分布式数据库系统及其应用 · 北京:科学出版社,2000.6
[4] 张龙祥,黄正端,陶影 ·数据库原理与设计 ·成都:西南交通大学出版社,1995.4
[5] 袁鹏飞 ·SQL Server 7.0数据库系统管理与应用开发·北京:人民邮电出版社,1999.5