商业智能(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]。
标签:
上一篇: 分析数据仓库技术在商业信息系统中的运用
下一篇: 把握数字化仓库发展的新机遇和新要求