本发明属于数据实时指标计算领域,尤其涉及一种基于流数据的实时指标计算方法、系统、设备及介质。
背景技术:
1、随着新信息技术的发展,数据指标逐步被大众认可并广泛应用。数据指标区别于传统意义上的统计指标,它是通过对数据进行分析得到的一个汇总结果,是将业务单元精分和量化后的度量值,使得业务目标可描述、可度量、可拆解。数据指标需要对业务需求进行进一步抽象,通过进行数据采集,设计一套计算规则,并通过行为识别系统和数据可视化呈现,最终能够解释用户行为变化及业务变化。
2、但传统的指标处理较为分散,指标处理过程的数据链路并不清晰,且处理过程需要通过编写代码等形式进行,这对项目人员的结构化查询语言熟练度要求较高。随着计算机技术的发展,出现了大数据技术,在大数据技术中有海量的数据需要进行处理。为了实现数据高效处理,通过数据仓库的方式来实现数据的缓存、提取与处理是非常常见的一种方式。
3、传统的解决方案一般分为实时计算和离线计算,离线计算指标的时间期一般都是天级别(t+1)、小时级别(t+h),离线计算无法满足实时性要求高的指标统计,且一般离线计算需要开发人员根据不同业务手动写sql方式查询指标,维护成本高。
4、实时指标计算常见的方案有基于数据库sql查询的计算方案、基于事件驱动的计算方案,基于sql查询的指标统计计算方式比较简单,但不够灵活,当变更时需要重新开发且基于sql统计计算当数据量达到一定程度就会出现性能瓶颈。还有普遍的做法是定制化开发,设置一个指标,开发展示一个指标。指标的计算和查询,散落在各个业务系统中,且普遍存在重复开发的现象。比如某大屏需要指标数据,在大屏业务系统中,需要从业务系统中重新获取相关数据,重新进行开发计算生成指标任务。另外一个明显的缺点是,缺乏统一的生成管理,导致指标生成效率低下。
5、基于事件解决方案一般是将交易数据、埋点数据、日志数据等转化成消息到消息中间件中,通过定义时间窗口方式进行指标统计、该方案存在数据延迟导致指标结果不准确、数据无法回放、指标无法变更等问题。
技术实现思路
1、本发明的技术目的是提供一种基于流数据的实时指标计算方法、系统、设备及介质,以解决准确性差、响应慢、指标变更繁琐等技术问题。
2、为解决上述问题,本发明的技术方案为:
3、一种基于流数据的实时指标计算方法,包括如下步骤:
4、从用户端接收etl任务,利用etl工具对源数据进行抽取并加工转换成指定数据格式后封装,并发送至中间介质进行保存;同时,对源数据采集etl任务中同步数据的元数据信息;
5、从用户端接收指标定义,基于元数据信息和指标定义构建指标模型,并通过广播方式下发至计算引擎;
6、接收指标模型,从中间介质接收消费数据,通过解析指标模型对消费数据进行数据处理以及指标计算,得到指标结果并保存。
7、其中,抽取的源数据需满足:源数据中的指标数据的来源表名与元数据信息中的id唯一;源数据中的cdc加载数据需要指定数据操作类型,包括新增、删除以及修改;抽取的源数据按照key-va l ue形式平铺处理存储于中间介质中。
8、具体地,元数据信息包括关系型数据库的数据、异构数据,以及数据结构信息,且上述数据来源名称唯一。
9、其中,指标模型的生成包括定义、业务板块、主题域、模型名称和别名,以及元数据信息中的字段信息和用户端可自定义名称、数据类型的字段信息,其中,模型名称和别名保证唯一性;
10、构建指标模型,根据元数据信息或用户端自定义的字段信息与etl同步数据相互关联,选择两个数据源的字段信息进行一对一连接,通过字段信息来设置指标的计算方式,选择维度字段、或者时间字段作为时间期统计,或选择已经计算过的指标来进行二次指标计算生成派生指标。
11、进一步优选地,指标模型还具备数据清洗功能,通过元语言的描述方式进行自由组态方式来定义数据清洗过程,定义数据清洗过滤方式包括:某字段值为空或为逻辑运算符或为比较运算符进行过滤清洗处理。
12、进一步优选地,指标模型还具备数据加工处理功能:通过元语言描述方式进行自由组态定义数据加工处理逻辑,选择字段可定义缺失值处理、数据类型转换,缺失值处理包括设置缺失值为常量值,或者某个字段值;类型转换包括数值类型转换为字符,字符转换为数值类型,数值类型向上转换。
13、其中,初始化用于保存指标结果的存储单元,接收指标模型和消费数据,对消费数据实现下发,解析指标模型进行数据处理以及指标计算;
14、下发消费数据时,需验证消费数据的完整性以及是否关联指标模型,若未关联则直接存储到中间介质中,若关联则对消费数据进行下发分配。
15、其中,解析指标模型进行数据处理以及指标计算具体包括如下步骤:
16、通过累加器方式计算时间期或者维度范围内数据,支持逻辑运算符、表达式的计算方式,计算得到指标结果存储到存储单元中;
17、若为普通指标计算,则根据接收的消费数据的维度或者时间期查询到当前指标数据,进行最大值、最小值数据对比替换,按照累加值进行求和、计数计算,根据求和和计数两个指标相除计算出平均值指标,计算完成后,根据指标模型的id、维度或者时间期存储到存储单元中;
18、若为自定义表达式计算,包括操作符、逻辑计算符以及数据函数,判断自定义表达式是否符合规则,首先解析大括号内的表达式,而后解析加减乘除进行解析计算,整体呈自左向右计算指标结果。
19、一种基于流数据的实时指标计算系统,应用上述的基于流数据的实时指标计算方法,包括
20、etl采集器,用于从外部用户端接收etl任务,对源数据进行抽取并加工转换成指定数据格式后封装;
21、元数据采集器,用于对源数据采集etl任务中同步数据的元数据信息;
22、模型构建单元,用于接收从外部用户端接收指标定义,基于元数据信息和指标定义构建指标模型;
23、中间介质,用于对抽取、加工、封装后的源数据以指定格式进行储存;
24、计算引擎,用于接收指标模型,从中间介质接收消费数据,通过解析指标模型对消费数据进行数据处理以及指标计算,得到指标结果;
25、存储单元,用于接收指标结果并保存。
26、具体地,计算引擎包括数据分发引擎和数据处理引擎;
27、数据分发引擎用于下发指标模型和消费数据至数据处理引擎进行数据处理以及指标计算;
28、数据分发引擎还用于监控数据处理引擎并得到监控数据收集处理,监控数据包括数据处理引擎的状态、计算速率和内存;
29、数据分发引擎还基于监控数据得到数据处理引擎的资源占用情况,并作出判断是否下发、或者拉起新的数据计算引擎、或者等待。
30、其中,数据分发引擎基于监控数据,计算当前10分钟cpu占用或者内存占用超过阀值,若超过阈值则拉起新的数据计算引擎或等待;
31、数据分发引擎基于监控数据,计算近一小时处理数据量及平均值,若平均值大于阈值则不再会下发新的指标模型和消费数据;
32、数据分发引擎基于监控数据,针对空闲的数据计算引擎的指标计算进行合并回收,若数据计算引擎资源占用过高时,可扩展引擎进行指标处理拆分。
33、进一步优选地,数据分发引擎接收到新的消费数据后,还用于验证格式的完整性,是否关联指标模型;未关联则将消费数据直接存储到中间介质中,否则需要从缓存中查询到将关联模型数据需要下发到指定的数据计算引擎进行处理。
34、一种电子设备,电子设备包括处理器和存储器,存储器上存储有可在处理器上运行的计算机指令,处理器用于调用存储器中的计算机指令执行如上述任一项的基于流数据的实时指标计算方法。
35、一种存储介质,存储介质用于存储计算机指令,其中,在计算机指令运行时控制存储介质所在设备执行如上述任一项的基于流数据的实时指标计算方法。
36、本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
37、本发明采用实时流数据指标统计,通过元语言描述构建生成指标模型,通过自由组态可对数据进行清洗加工处理,用户可灵活的定义指标、指标更新,数据处理等。通过元语言处理的方式,自动化构建生成计算引擎可解析处理计算能力,使用户可自由进行指标定义,降低系统维护难度,降低重复劳动、节约资源。
38、通过对计算引擎数据处理、资源占用的监控,能够实时的弹性扩展和回收资源。可采集传统数据库的cdc数据,对于cdc数据变更的指标计算解决了传统指标计算需要通过离线计算来对数据的校正的问题,指标计算可对数据进行数据过滤、补全等数据加工处理解决了传统需要对数据来源进行数据过滤清洗加工处理能力。
39、采用广播的方式进行模型信息通知下发、统一指标和维度管理,指标命名、计算口径、统计来源唯一,维度定义规范、维度值一致、统一数据出口、场景化覆盖指标体系管理工具产品化落地。指标体系内容产品化落地支持决策、分析。可用于不同行业、不同数据来源的实时指标计算能力。