**以下实例中以HuaWei BOSS表为参考
简单先说说项目的情况。
项目基于全省HuaWei BOSS系统数据来源,根据当地客户实际需要指标做分析。目前省公司将原来BOSS1.0升级到BOSS1.5,经营分析也做了第二期,整合了CRM系统、1860 CallCenter系统。
这些大大小小的系统中,BOSS系统是必不可少的,但是对于经营分析、CRM系统,用户使用起来都不怎么好,客户反映存在的问题有:
1)要的指标没有;现在经分中存在的指标也有几百个,但是不是完全能够满足用户的要求;
2)统计口径不符;比如客户需要各个县市放号存活率,经分是按照全年的指标进行统计分析,而地市公司希望看到的是在每个月放号,在后期使用过程间隔每个月后的离网情况;
3)要的数据给用户的感觉不真实;可能也因为是统计口径的原因吧,造成提供的数据有偏差。
我们从这个角度出发,结合用户的实际工作,进行项目的实施。 现在正在做的项目就主要实现用户大量OLTP报表的生成,涵盖有对竞争对手分析、呼转分析、客户通话指标、客户数据业务指标、业务稽核、营销活动效果分析、基站通话分析等等,其中还涉及到一些业务流程上的辅助功能,这点也是很让人伤脑筋的一点,把DW的东西和business flow上的东西搅和到一起是很糟糕的。
一、数据的ETL的初步实现
对于BOSS的取数,需要通过FTP接口从BOSS中取数,地市做数据的预处理。 省公司会在每天同步打包成文件下载数据,地市然后解包进行同步文件中的数据ftp到本地,建立SOURCE Data,ODS,DW。
省公司下载文件列表参照图:
上图的数据列表中表数据类型主要分为有:
1、参数字典文件,例如:privset_item(产品表),FeeType(费用类别表),NetType(网络类型表)等。
此类数据FTP需要注意的是:
1)本地BOSS库表中原来存在数据,而在下载的省分表中次数据有可能删掉;
2)本地BOSS库表中没有,而在省分BOSS库表中增加新的记录;
3)省分BOSS库表中记录属性做了变更。
对于上面3种情况的解决策略:
1)->仍然保留本地BOSS库表中多出来的数据,在本地BOSS库表中用新增字段维护来维护数据的状态(例如:default “1”表示两个库中都存在,0表示省分已经删除这条数据);
2)->往本地BOSS库表中新增省分BOSS库表中新增的数据(通过主键来比较);
3)->只同步与省分BOSS库表数据中需要关注的属性值,本地建立需要关注同步的属性(字段)维护表;
2、OD文件的下载,例如:subscriber(入网表)、subs_privilege(优惠办理表)、subs_service(服务办理表)等等,这些表的特征是 在每条记录增加一个起始日和终止日,对当前纪录可以使用特殊终止日作为标记,使用时间戳作为删除标识。这可能是建立ODS中最费功夫的地方。省公司不保留所有的操作记录,OD会把历史的作废的记录剔除掉,本地BOSS需要保留所有的记录作为分析。
解决这个问题的策略是:跟踪主键OID的值,做前期的对应数据同步后进行入库。
3、日OD的下载,此类数据不存在上面2的问题,例如:GSM、GPRS、VPMN、MMS、SMS话单表以及帐单表等。
实现策略:只需要把每日下载文件解压上传SQLLDR到本地库中。
4、月OD文件的下载,存在个别表的数据每个月只把当月的操作数据下发一次。
实现策略:解压直接上传SQLLDR到本地BOSS。
对于上面ODS数据的初步建立后面会做仔细的描述。下面先描述从省公司FTP中下载数据->>unzip->>SQLLDR到本地库的过程。 省分下载文件的命名规则是:例如2007年3月5日这天的GSM话单数据根据文件大小分解成多个文件上传到FTP,每天一般有2G-3G的数据量,如图:
下载的文件没有固定的顺序,文件也没有固定的个数,通过后台shell结合SQLPLUS生成脚本SCRIPT对文件FTP/unzip/sqlldr/sqlplus等操作。这一层数据导入的操作在我的项目中我定义为SOURCE Data层,下一步按照我上面的不同文件数据的不通导入到ODS数据库中。

没有评论:
发表评论