一种切合电力客服业务的数据仓库系统及其构建方法
技术领域
本发明公开了一种切合电力客服业务的数据仓库构建方法,属于计算机科学技术领域。
背景技术
目前,针对电力客服各业务系统以及业务数据存储分布现况分析,电力客服存在以下几个问题:
1)缺少数据整合平台。
首先由于业务系统分别建设,电力客服核心业务数据分散在各个业务系统中,数据存储过于分散。此外数据缺乏有效整合,因为中心各个系统间汇总数据困难,统计分析前期数据准备与预处理较为困难,影响统计分析的效率。同时,数据质量有待提高,各业务系统经历了多年的升级改造,造成数据应用的歧义等数据质量问题,还包括各个系统间数据模型差异较大,重复存储现象较为普遍等问题。
2)数据获取和交换困难。
目前,针对相关业务部门,电力客服缺少面向业务人员的公共数据查寻平台,数据查询受到业务系统的限制,缺少海量存储数据基础平台以及高效数据交换平台,系统间的数据交换很难实现。
3)数据应用支持有待完善。
缺少统一的客户信息数据视图以及缺少强有力的数据挖掘平台,无法充分利用现有数据提供对各种业务场景研究和评估的数据支持,缺乏对各式报表分析提供数据支持的能力。
为了电力客服良好数据生态发展,充分发挥数据在企业发展中的重要作用。要求全面加强数据的完整性、准确性、一致性,实现海量数据管理和数据集中,实现对电力客服数据的深入分析和挖掘,从而为电力客服管理和决策提供强有力的依据,为营销业务管理与分析提供有效的支撑;通过数据中心建设实现电力客服业务数据大集中,现开展数据中心底层数据仓库建设。
发明内容
针对现有技术存在的问题,本发明提出一种切合电力客户业务的数据仓库构建方法,利用国网公司SG-MPP数据仓库软件,结合电力客服业务现状,对电力客服业务数据进行统一管理、加工、汇总、清洗,提升数据管理水平,充分发挥数据价值。
本发明所采用的技术方案为:一种切合电力客服业务的数据仓库系统,基于GBase8a MPP Cluster数据库作为数据仓库底层组件,包括明细数据层、轻度汇总层和中度汇总层;
所述明细数据层,用于为数据仓库提供基础数据;
所述轻度汇总层,用于存储按照业务应用要求进行清洗、整合后的明细数据层的结构化数据,并可对该数据进行整合和操作;
所述中度汇总层,用于存储适合数据仓库处理的数据格式为星型模型或雪花型模型的数据;
所述数据格式为星型模型或雪花型模型的数据包括对来自轻度汇总层的数据进行数据加工后或轻度汇总层的数据汇总而成。
进一步的,根据可适用场景数量不同将轻度汇总层、中度汇总层中的汇总数据区分别分为通用轻度汇总区、私有轻度汇总区、通用中度汇总区和私有中度汇总区;
在轻度汇总层中,通用轻度汇总区为可同时适用于多个场景同时使用的汇总数据区,私有轻度汇总区为用于单个特殊场景独立使用的汇总数据区;
在中度汇总层中,通用中度汇总区为可同时适用于多个场景同时使用的汇总数据区,私有中度汇总区为用于单个特殊场景独立使用的汇总数据区。
进一步的,所述明细数据层中的基础数据从贴源区的业务数据进行抽取,并经过清洗、归类、结构化和规范化后加载到明细数据层,将对接入至明细层的数据进行主题域划分,并保存在对应的主题域下。
进一步的,所述轻度汇总层的数据操作包括字段标准化和整合操作,该整合操作包括多表关联运算,将分散到多个表的某一主题的属性整合到一张表中。
进一步的,所述中度汇总层还包括各数据处理模型,该数据处理模型包括数据分解、数据转换、数据集成、数据聚集、数据预算推导、数据翻译和格式化。
所述通用汇总区,用于可同时适用于多个场景同时使用的汇总数据区,包括轻度汇总层和中度汇总层;
所述私有汇总区,用于单个特殊场景独立使用的汇总数据区,包括轻度汇总层和中度汇总层;
本发明还公开了一种切合电力客服业务的数据仓库构建方法,采用GBase 8a MPPCluster分布式并行分析型数据库进行建设,包括以下步骤:
S1:从贴源区的业务数据进行抽取,经过初步处理、转换后加载到明细数据层;
S2:将明细数据层中的数据根据电力行业分析域业务分析主题,进行轻度汇总后形成轻度汇总层的数据;
S3:轻度汇总层为明细数据层提供明细查询、数据的标准化和整合操作,该数据的标准化依次包括维度表的标准化和事实表的标准化;
S4:中度汇总层中通过数据模型处理来将标准关系模式的轻度汇总层的数据向适合数据仓库处理的星型模型或雪花型模型的数据格式进行数据转换并进行存储;
S5:将中度汇总层的数据和基础指标进行组合形成分析指标,配合视角体系、算法体系完成具体的分析处理,不同层级或部门的用户就可以按照自己的需求构建数据分析应用。
进一步的,所述S1中的初步处理包括清洗、归类、结构化和规范化。
进一步的,所述S3中,轻度汇总层中的整合操作具体为:通过进行多表关联运算将分散到多个表的某一主题的属性整合到一张表中。
进一步的,所述S4中的数据模型处理具体为:
当关联对象数据直交性底分片在各个节点上,通过生成静态Hash的JOIN查询计划将轻度汇总层的操作型数据与主数据关联生成宽表;
当关联对象数据非非直交性地分片在各个节点上,通过生成动态Hash的JOIN查询计划,对数据进行最小限的动态Hash重分布来将将轻度汇总层的操作型数据与主数据关联生成宽表;
在进行模型转换时,通过生成大小表间的JOIN查询计划将轻度汇总层的操作型数据与中度汇总层内的维度表关联生成维度上事实表;
在进行数据分组和聚合运算时,在各节点并行执行分组和聚合运算,并产生中间结果,而后对各节点的中间结果在各节点间进行Hash重分布,最后,在各节点对重分布后的中间结果进行分组和聚合运算。
有益效果:本发明与现有技术相比,具有以下优点:
1.基于GBase 8a MPP Cluster分布式并行分析型数据库进行建设,在数据汇总、计算方面具备较高的性能,能够快速实现千万行数据的汇总和计算。
2.在明细层中对原始业务数据按照主题域进行划分,对各业务系统数据进行了整合,实现了业务数据的归类,提升数据管理水平。
3.重新定义轻度汇总及中度汇总标准,从数据加工维度上针对需求进行划分,同时采用GBase 8a MPP Cluster出色的计算能力,利用Hash JION高效的实现汇总数据加工。
4.采用通用汇总区和私有汇总区按需满足各场景需求,将多个场景可重复使用的汇总数据及模型进行模型固化,对于特殊需求的数据及模型单独处理,提高了数据和模型的利用率。
附图说明
图1为数据仓库逻辑层次说明示意图;
图2为数据仓库构建示意图;
图3为业务明细层的建设过程示意图;
图4为informatica工作说明示意图;
图5为事实表的模型实例示意图。
具体实施方式
下面结合实施例和附图进一步阐述本发明。
架构说明
中度汇总层含有大量详细的数据,也含有大量冗余的或聚集的数据,这些数据具有不易改变性和面向历史性。对于中度汇总层中比较全面,比较明细的数据部分称为数据仓库明细层数据,而对于有一定轻度程度的聚合数据称为数据仓库汇总层数据,这些数据被用在电力行业的多种分析决策中。数据仓库逻辑层次说明如下图1:
技术实现
电力客服数据仓库建设采用GBase 8a MPP Cluster分布式并行分析型数据库建设,构建电力客服全业务数据仓库,实现全业务类型数据的接入、汇聚及统一存储管理,提供跨域分布式计算能力,支撑分析类应用的统一构建,详见图2。
明细数据层实现
采用ETL调度平台将贴源区的业务数据进行抽取,经过初步的清洗、转换后加载到明细数据层。对数据的初步处理主要包括数据进行清洗、归类、结构化、规范化:
清洗:在数据采集后,需要将不符合数据质量要求的数据清洗出去,避免脏数据对后续数据加工、数据模型构建和数据挖掘带来不可预知的影响。清洗的过程会严格遵守数据质量管理规范。
归类:数据基础层的建设过程中,将相同分类的数据整合和组织在一起,并归属到相应的分类中去。比如把分布在不同地市的数据整合到同一个数据表中,将不同版本的相同含义的数据,归类到相同的数据存储结构。
结构化:对于非结构化数据的应用,比如日志类数据、文本类数据,根据业务需要,将这种类型的数据结构化成二维关系数据,为后续数据加工过程服务。
规范化:同一个数据项会随着业务的发展、业务系统的演进以及不同数据源的数据引入,出现表述方式不统一的现象,需要将同一含义的数据以相同的标准化方式表述,避免后续加工过程出现歧义。
对于数据的加载过程,需要根据数据源体量大小、业务需求等方面的特点采用全量或增量的方式。
明细数据层用于存储源业务系统接入的结构化数据,是数据加载到数据仓库时的过渡领域,用以满足轻度汇总层、数据仓库、数据集市的数据应用要求。明细数据层仅仅含有当前的、详细的数据,不含有累计的、聚合类的数据。明细数据层中的明细数据将被进一步加工、集成和汇总,并形成轻度汇总层、中度汇总层和数据集市层的数据。
轻度汇总层实现
明细数据层的数据根据电力行业分析域业务分析主题,进行轻度汇总,形成轻度汇总层。轻度汇总层用于存储按照业务应用要求清洗、整合后的明细数据层结构化数据,支持对业务数据的整合与操作,以满足数据仓库、数据集市的数据应用要求。
在轻度汇总层采用GBase 8a MPP数据库,以其海量数据高速分析处理能力,为明细数据层提供快速明细查询、数据的轻度汇总与整合操作。
轻度汇总层会涉及到字段的标准化(避免代码不一致、数据歧义等问题)。实施时需要先进行维度表的标准化,然后进行事实表的标准化。在标准化过程中采用GBase 8aMPP数据库默认的批量UPDATE方式,以提高执行效率。由于GBase 8a MPP数据采取了列存储的方式,可以单独更新需要标准化的列,加快了标准化处理的效率。对于列式存储数据库,UPDATE更新少量行的数据时,操作效率相对来说是耗时的,可采用GBase8a MPP数据专门设计的快速UPDATE模式,即先删除符合更新条件的数据,然后再向表的末尾插入需要更新的新数据,用以提高数据更新操作。在实施中,更新大批量数据的时候建议使用默认UPDATE模式,更新少量数据的时候建议使用快速UPDATE模式。标准化过程中使用的代码转换表可作为复制表,在每个节点都存一份,以提高关联的效率。
轻度汇总层的属性整合操作中,涉及到把分散到多个表的某一主题的属性整合到一张表中,这种操作会进行多表关联运算。在实施中把这些表以关联键作为分布键形成分布表,在执行关联运算时即可采用GBase 8a MPP数据库的静态HASH JOIN运算,提高运算效率。
中度汇总层实现
中度汇总层是核心数据部分,含有大量详细的数据,也含有大量冗余的或聚集的数据,这些数据具有不易改变性和面向历史性。对于中度汇总层中比较全面,比较明细的数据部分称为数据仓库明细层数据,而对于有一定轻度程度的聚合数据称为数据仓库轻度汇总层数据,这些数据被用在电力行业的多种分析决策中。数据仓库内要完成将标准关系模式的轻度汇总层数据向适合数据仓库处理的星型模型或雪花型模型的数据格式的转换。数据来源主要为从轻度汇总层被加工或轻度汇总而成的数据。
对于中度汇总层频繁进行的数据模型处理如数据模型转换、数据集成、数据聚集等操作,GBase 8a MPP数据库提供了多种特性,在实际处理时能够大幅提升性能。
在中度汇总层的数据加工主要涉及到如下表中的种类。
数据加工种类 |
备注 |
数据分解 |
按照日期、地域、行业等维度进行分解 |
数据集成 |
按照各主题分析使用要求,将不同操作型数据集成在一起 |
数据聚集 |
根据某一属性或某一维度将数据进行汇总 |
数据预算推导 |
预算与推导是事先进行的算术运算,其结果作为数据仓库的字段存储 |
数据的翻译和格式化 |
对于来自不同数据源的数据进行翻译和格式化处理,便于今后的统一处理 |
数据模型转换、数据集成、数据聚集--两大表JOIN查询计划(静态hash)
对于轻度汇总层到中度汇总层的数据加工,需要从关系型标准范式向星型或雪花型转换。为生成易于聚集计算的事实表,将通过轻度汇总层的操作型数据与主数据等关联生成宽表,这时就需要在两个大表之间的JOIN查询。对于有些场景,则在中度汇总层将不同轻度汇总层操作型数据集成在一起,此时这些轻度汇总层操作型数据表之间将发生关联运算。此外对某些场景,聚集运算直接在大表关联基础之上,通过Group by的聚集函数直接聚集出结果。这些运算特点是一般发生在轻度汇总层到中度汇总层、以及中度汇总层到数据集市层的处理当中,由于关联对象在这一阶段还处于低粒度阶段,所以关联表对象的数据量往往很大,而且作为对象数据的存储特征,各种关联对象数据往往直交性地分片在各个节点上。对以上情形,GBase 8a MPP数据库内部将生成静态Hash的JOIN查询计划以解决此类场景下的大表关联问题。
数据模型转换、数据集成、数据聚集--两大表JOIN查询计划(动态hash)
此种场景与上述的静态Hash两大表JOIN查询的业务场景基本相同,但是作为数据存储分布特征有所不同,例如以不同属性分片的两个大表进行关联时,各种关联数据往往非直交性地分片在各个节点上。GBase 8a MPP数据库内部会生成动态Hash的JOIN查询计划,通过对数据进行最小限的动态Hash重分布以解决对这类数据模型下的大表关联问题。
数据模型转换、数据聚集、OLAP多维分析、数据翻译和格式化--大小表间JOIN查询计划(小表拉成复制表)
对于轻度汇总层到中度汇总层的数据加工,需要从关系型标准范式向星型或雪花型转换。在进行模型转换时,需要通过轻度汇总层的操作型数据与中度汇总层内的维度表等关联生成维度上事实表。对于某些聚集运算和多维分析运算的场景,则需要在事实表与维度表关联运算的基础之上,通过Group by的聚集函数进行维度上指标汇总。此外对于数据仓库中的数据翻译和格式化转换场景,需要统一数据的表现格式,其中也会发生大表与维度表之间的关联。这些运算特点是关联运算的一端往往是事实表、操作表等大表,关联运算的另一端是维度表等小表。GBase 8a MPP数据库内部针对以上场景,将生成大小表间的JOIN查询计划以解决对这些数据模型下的大小表关联问题。
立方体生成、OLAP多维分析--星型模型的查询计划
此种情形与上述的大小表间JOIN查询计划的业务场景基本相同。但是作为数据存储分布特征有所不同。本场景下,维度等小表事先作为复制表重复分布到集群内各个节点上。GBase 8a MPP数据库内部会生成星型模型的查询计划,解决对这类星型模型下典型查询问题。
数据聚集、立方体生成、OLAP多维分析、维度关联分析--优化集群层分组和聚合算子。
对于在中度汇总层内的轻度汇总、中度汇总层到数据集市层的立方体生成以及对各种汇总、聚集结果的多维分析和维度关联分析场景,分组和聚合运算成为最常用的分析算子。
与普通函数不同的是对单条数据进行处理,可以简单的下推到多个节点并行执行,而聚合运算是对数据集合进行处理。GBase 8a MPP数据库内部对分组和聚合运算进行了优化,产生专门的两阶段执行计划。第一阶段,在各节点并行执行分组和聚合运算。经过第一阶段的分组和聚合运算后,产生的中间结果的数据规模被大大缩小。然后系统将各节点的第一阶段中间结果在各节点间进行Hash重分布。第二阶段分组和聚合运算并行在各节点对重分布后的中间结果进行分组和聚合运算。通过两阶段分组和聚合运算,系统实现了高效的并行式分组和聚合算子处理。
GBase 8a MPP数据库作为中度汇总层,为存储在数据仓库中的海量历史数据提供复杂查询、表连接、子查询、分组查询、排序、count、sum、avg等聚集函数、OLAP函数等多种能力,并在此基础上,提供满足深度分析的模型转换、立方体生成、ROLAP的星型模型和雪花模型上的多维分析等的深度分析能力。
由于轻度汇总层和中度汇总层都处在GBase 8a MPP数据库当中,所以数据的实际抽取不会发生,只涉及GBase 8a MPP数据库内部库表间的转换工作。
电力行业的主题库包括电网主题域、资产主题域、客户主题域、财务主题域、人员组织主题域、物资主题域等。根据不同的电力业务主题,把中度汇总层的基础数据及基础指标进行组合,成为分析指标,并配合视角体系、算法体系完成具体的分析处理,不同层级或部门的用户就可以按照自己的需求快速构建数据分析应用,为管理和决策提供数据支持。
主题域设计
业务明细层为数据仓库的基础数据层,是整个数据仓库的核心。在明细层中,将对接入的贴源区数据进行主题域的划分,然后保存在对应的主题域下。主题域说明如下:
业务明细层的模型采用近缘设计原则,以贴源区的MySQL模型为基础,在数据仓库Gbase 8a中创建对应的模型,然后增加一些操作信息,如数据加载时间,源系统标识、服务名称等信息,形成业务明细层的模型,其建设过程如下图3描述。
明细层的数据源是贴源区,使用informatica工具先从贴源区抽取出数据,然后再informatica内部,对数据进行清洗和转换,最后将数据加载到明细区的表中,其过程如图4所示:
通用汇总区实现
通用汇总区又称数据汇聚库,根据应用主题场景,对明细库的数据进行汇总加工后,用于支撑集市库的需求,最终协助决策人员、业务人员等快速高效地实现统计需求。汇总层包含明细数据汇聚层、轻度汇总层、中度汇总层等概念对象,轻度汇总表是侧重于从常用维度和分析指标的角度,将业务明细层的逐笔数据进行加工、汇总,中度汇总层是在轻度汇总层的基础上,结合集市层的需求,进行高粒度的汇总结果汇总表一般是逆范式化的宽表,通常采用星型模型建模的方法。尽可能保证类似业务需求由同一个事实表支撑,以保证加工逻辑的一致性和业务需求展现的灵活性。
1)事实表设计
通用汇总区的汇总表会以事实表的方式存储数据,事实表的范围说明如下:
2)维度表设计
通用汇总区的维度表从业务角度出发,建立不同的仓库数据存储分区的维度,部分维度表的说明如下:
序号 |
表名 |
注释 |
1 |
DWCD_SERV_METH |
服务渠道方式 |
2 |
DWCD_CITY_TYPE |
城市类别 |
3 |
DWCD_BUSI_TYPE |
受理业务类型 |
4 |
DWCD_VIP_LEVEL |
重要客户星级 |
5 |
DWCD_ORD_UNSOVLED |
工单未完成原因 |
6 |
DWCD_REPO_LEVEL |
举报等级 |
3)模型设计
事实表的模型信息包括业务提炼信息,并增加通用的维度,用于分析数据,其模型设计结果实例如下图5:
4)汇总表实现
汇总表一般来源多个表,需制定准确的加工规则,将源表的数据加工到汇总表中,满足统计业务场景的需要,过程主要体现以下方面:
·预链接
将分散在明细层的很多实体为了访问便捷的目的进行预先连接,以宽表的形式呈现。预连接可以有不同的实现方式,可以采用物理表或视图。
·预计算
将在明细层中以及应用主题中难于计算,通常是规则比较复杂,或者计算一次所需的时间比较长的数据预先计算出来,比如满意度、故障处理时长等。
·预聚合
以维度建模方式对基础数据进行汇总和聚合,支持粗粒度的对于预聚合粒度比较粗的,数据量上会减少很多,所以适当的多采用物理表的方式,以节约系统资源,提高查询效率。
5)数据加载
通用汇总表的数据,通过informatica工具实现,在informatica内部,创建汇总表对应的任务,按照设计的加工逻辑对源表数据进行加工,然后加载到通用汇总表。
私有汇总区实现
私有汇总区主要对接需求业务,一般为统计指标提供基础数据。私有汇总区的建设是一个长期持续的过程,随着统计需求的增长,会不断扩充私有汇总区的内容。
私有汇总区按照实际业务需求,由各业务场景按照实际需求开展,相关建模、命名、存储要求均遵循电力客服数据仓库设计模型规范。