掌桥专利:专业的专利平台
掌桥专利
首页

一种基于流式数据的复杂图表在线计算系统与方法

文献发布时间:2023-06-19 09:52:39


一种基于流式数据的复杂图表在线计算系统与方法

技术领域

本申请涉及数据处理技术领域,具体而言,涉及一种基于流式数据的复杂图表在线计算系统与方法。

背景技术

目前,在医院内数据处理的数据场景下,会不断的有患者数据进入到专病库中,需要针对数据从不同维度进行准实时的数据统计,然后通过图表方式呈现给用户。

由于累积的患者数据会越来越大,图表的统计处理速度会越来越慢。一方面图表的响应时间越来越慢,导致系统可用性减低。另外一方面,通过定时的脚本处理数据,会导致数据的有效性会有延后,无法实时了解系统的当前数据状态。

针对相关技术中图表响应慢以及有效性延时的问题,目前尚未提出有效的解决方案。

发明内容

本申请的主要目的在于提供一种基于流式数据的复杂图表在线计算系统与方法,以解决相关技术中图表响应慢以及有效性延时的问题。

为了实现上述目的,第一方面,本申请提供了一种基于流式数据的复杂图表在线计算系统。

其中,系统包括:采集模块、图表计算模块、图表输出模块;

所述采集模块、图表计算模块、图表输出模块依次顺序连接;

所述采集模块,通过kafka接收数据并且实时进行更新,将所述接收数据分发到所述图表计算模块;

所述图表计算模块,经过图表插件计算,将所述接收数据计算为中间层数据以及图表数据;

所述图表输出模块,当用户进行请求查看图表数据时,根据用户需要经过输出插件计算,生成不同的数据组织形式,显示给用户。

所述图表插件计算包括:第一插件计算与第二插件计算;

所述第一插件计算包括选择需要的数据维度,将所述接收数据经过计算,并将计算结果以及计算逻辑存储在中间层文件中;

所述第二插件计算包括根据中间层文件中的计算结果以及计算逻辑,将所述接收数据生成图表数据,保存在数据库中。

所述计算逻辑包括以下一种或几种情况的组合:基本算数运算、取若干个数据的最大值、取若干个数据的首次数据、取若干个数据的均值。

所述输出插件计算包括根据用户对图组织形式的要求,对所述图表数据进行加工计算,生成用户需要的组织形式图表。

所述加工计算包括:分组数据统计、均值统计、百分比统计、累加数统计、区间范围统计。

所述组织形式包括:折线图、条形图、饼图、散点图、地图、仪表盘、面板、环形图。

所述第一插件计算还包括通过shell命令执行awk脚本根据患者编号,进行数据内容的去重,保证只有一条最新的数据。

第二方面,本申请还提供了一种基于流式数据的复杂图表在线计算方法,采用所述的基于流式数据的复杂图表在线计算系统实现,包括如下步骤:

通过kafka接收数据并且实时进行更新,将所述接收数据分发到所述图表计算模块;

经过图表插件计算,将所述接收数据计算为中间层数据以及图表数据;

当用户进行请求查看图表数据时,根据用户需要经过输出插件计算,生成不同的数据组织形式,显示给用户。

所述经过图表插件计算,将所述接收数据计算为中间层数据以及图表数据,包括如下步骤:

按照指定长度截取所述接收数据;

判断是否遍历所有插件;

若没有遍历所有插件,则进行第一插件计算,生成中间层文件,并继续遍历其他插件;

若已经遍历所有插件,则进行第二插件计算,生成图表数据。

所述根据用户需要经过输出插件计算,过程如下:

用户进行请求查看图表数据;

进行输出插件计算;

将图表数据生成不同的数据组织形式,显示给用户。

有益技术效果:

1.本申请通过kafka接收实时数据流,动态处理系统的患者数据变化,可以通过图表系统实时反馈出系统数据的变化。

2.本申请通过插件形式的图表逻辑处理机制,提升系统的可维护性,实现功能的可插拔操作。

3.本申请通过对中间层数据和图表数据的逐级处理,是最终的图表查询只需针对很少的数据进行计算,提高图表系统的响应速度。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例提供的一种基于流式数据的复杂图表在线计算系统原理框图;

图2是根据本申请实施例提供的一种基于流式数据的复杂图表在线计算方法流程图;

图3是根据本申请实施例提供的图表插件计算流程图;

图4是根据本申请实施例提供的输出插件计算流程图;

图5根据本申请实施例提供的一种基于流式数据的复杂图表在线计算原理框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。

并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。

另外,术语“多个”的含义应为两个以及两个以上。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

第一方面,本申请提供了一种基于流式数据的复杂图表在线计算系统。

其中,系统包括:采集模块、图表计算模块、图表输出模块,如图1所示;

所述采集模块、图表计算模块、图表输出模块依次顺序连接;

所述采集模块,通过kafka接收数据并且实时进行更新,将所述接收数据分发到所述图表计算模块;kafka是一种高吞吐量的分布式发布订阅消息系统,它可以用来推送整个系统的患者数据流到后续的计算模块。

所述图表计算模块,经过图表插件计算,将所述接收数据计算为中间层数据以及图表数据;

所述图表输出模块,当用户进行请求查看图表数据时,根据用户需要经过输出插件计算,生成不同的数据组织形式,返回去前端页面使用,显示给用户。

所述图表插件计算包括:第一插件计算与第二插件计算;

所述第一插件计算包括选择需要的数据维度,将所述接收数据经过计算,并将计算结果以及计算逻辑存储在中间层文件中;

所述第二插件计算包括根据中间层文件中的计算结果以及计算逻辑,将所述接收数据生成图表数据,保存在数据库中。

比如我们在计算“患者人口学特征-性别分布”这个图表插件的时候,需要准备的数据维度主要是两项<患者编号,性别>,我们会从单个用户上百个维度的数据中,抽取出这两个维度的数据,进行简单的计算之后,存储在中间层文件中。针对这个插件的计算逻辑:如果原始数据点位'基线情况.人口统计学.性别'的值为1,那么性别数据的计算结果就为‘男’;如果原始数据点位的值为2,那么性别数据的计算结果就为‘女’;其他情况为‘不详’。其他的逻辑计算方法,包括并不限于以下多种情况或者情况的组合:基本算数运算、取若干个数的最大值、取若干个数据的首次数据、取若干个数据的均值等。

所述输出插件计算包括根据用户对图组织形式的要求,对所述图表数据进行加工计算,生成用户需要的组织形式图表。

所述计算逻辑包括以下一种或几种情况的组合:基本算数运算、取若干个数据的最大值、取若干个数据的首次数据、取若干个数据的均值。

所述输出插件计算包括根据用户对图组织形式的要求,对所述图表数据进行加工计算,生成用户需要的组织形式图表。

所述加工计算包括:分组数据统计、均值统计、百分比统计、累加数统计、区间范围统计;

所述组织形式图表通过JavascriJpt的各种类库(如echarts、highchart)、BI报表功能据等多种形式,使用计算出的数据,组织成给用户可视化的报表。

所述组织形式包括:折线图、条形图、饼图、散点图、地图、仪表盘、面板、环形图。

所述第一插件计算,通过shell命令执行awk脚本,根据患者编号,进行数据内容的去重,保证只有一条最新的数据。

Awk脚本是集成在系统中的固定脚本。由于是增量的流式数据,所以需要根据每行数据的患者编号对整个中间文件中的数据去重,保证每个中间文件中只有患者最新的一条数据,自动删除之前患者的旧数据。

第二方面,本申请还提供了一种基于流式数据的复杂图表在线计算方法,如图2所示,包括如下步骤:

步骤S1:通过kafka接收数据并且实时进行更新,将所述接收数据分发到所述图表计算模块;

步骤S2:经过图表插件计算,将所述接收数据计算为中间层数据以及图表数据;

步骤S3:当用户进行请求查看图表数据时,根据用户需要经过输出插件计算,生成不同的数据组织形式,显示给用户。

所述经过图表插件计算,将所述接收数据计算为中间层数据以及图表数据,如图3所示,包括如下步骤:

步骤S21:按照指定长度截取所述接收数据;

如图5中,Caclulate是指从接收到的原始数据流中取出一份数据,进行数据的预计算。

步骤S22:判断是否遍历所有插件;

根据需求系统里预保存很多插件,每条数据都需要被所有的插件计算一遍,第一步生成中间层文件,第二步生成图表文件。

步骤S23:若没有遍历所有插件,则进行第一插件计算,生成中间层文件,并继续遍历其他插件;

步骤S25:若已经遍历所有插件,则进行第二插件计算,生成图表数据。

所述根据用户需要经过输出插件计算,如图4所示,过程如下:

步骤S31:用户进行请求查看图表数据;

步骤S32:进行输出插件计算;

图5中图表插件是针对不同的图表需求开发出来的,每个插件都需要实现所指的计算步骤里的计算方法run、afterRun、export。

步骤S33:将图表数据生成不同的数据组织形式,显示给用户。

最终的图表组织形式可以通过JavascriJpt的各种类库(如echarts、highchart)、BI报表功能据等多种形式,使用计算出的数据,组织成给用户可视化的报表。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种基于流式数据的复杂图表在线计算系统与方法
  • 流式计算系统及流式计算系统的日志数据处理方法
技术分类

06120112334715