一种数据处理方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
目前,机构管理中心可根据每个月的机构汇总值判断机构集下的机构每个月的经营情况,如果经营情况较差,对机构集包含的所有机构进行惩罚;如果经营情况较优,对机构集包含的所有机构进行奖励。
一般通过解析器对机构汇总值进行求解,常用的解析器通过将中缀表达式转换成后缀表达式,对后缀表达式进行入栈出栈操作从而获取表达式计算结果。
然而,在实现本发明的过程中,发明人发现:虽然现有解析器虽然能够解决大部分表达式的运算,并且解析算法可扩展,但是随着需求中运算符类型运算逻辑的变动和数据结构的多样性,常用解析器在解析这种场景中的表达式时无法满足需求,造成了指标表达式不能有效解析的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种数据处理方法、装置、电子设备及存储介质。
第一方面,本申请提供了一种数据处理方法,包括:
获取待解析的指标表达式,所述指标表达式包括多个表达式元素;
从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型;
若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈;
若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈;
基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。
可选的,所述基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,包括:
确定出栈的两个元素数据的数据类型;
若出栈的两个所述元素数据的数据类型均为列表类型,确定所述运算符类型的表达式元素所对应的符号类型;
若所述符号类型为除法运算符类型,则将每个所述元素数据内以列表形式组合的多个元素值分别进行求和,得到第一求和结果和第二求和结果;
将所述第一求和结果除以所述第二求和结果,得到所述汇总结果。
可选的,所述基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,还包括:
若所述符号类型为除除法运算符类型之外的其它运算符类型,则将两个所述元素数据内以列表形式组合的多个元素值按照所述运算符类型进行列表间计算,得到所述汇总结果。
可选的,所述基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,还包括:
若出栈的两个所述元素数据的数据类型分别为列表类型和数字类型,将列表类型内以列表形式组合的多个元素值与所述数字类型的元素数据的元素值按照所述运算符类型进行向量运算,得到所述汇总结果。
可选的,所述基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,还包括:
若出栈的两个所述元素数据的数据类型均为数字类型,将两个所述元素数据对应的数值按照所述运算符类型进行数值运算,得到所述汇总结果。
可选的,所述非运算符类型包括:指标类型和数字类型,所述在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈,包括:
若所述表达式元素的元素类型为指标类型,在预设层级关系表中获取与所述表达式元素对应的元素值,将获取到的元素值以列表形式进行组合,得到与所述表达式元素对应的元素数据,将所述元素数据入栈;
若所述表达式元素的元素类型为数字类型,获取所述表达式元素的数值,将所述表达式元素的数值入栈。
可选的,所述方法还包括:
获取多个机构上传的元素数据集合,所述元素数据集合中包括多个表达式元素及与所述表达式元素对应的元素值;
按照预设层级关系图所述元素数据集合内的表达式元素及与其对应的元素值进行排列,得到预设层级关系表。
第二方面,本申请提供了一种数据处理装置,包括:
第一获取模块,用于获取待解析的指标表达式,所述指标表达式包括多个表达式元素;
确定模块,用于从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型;
第二获取模块,用于若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈;
出栈模块,用于若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈;
解析模块,用于基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。
可选的,所述解析模块,包括:
第一确定单元,用于确定出栈的两个元素数据的数据类型;
第二确定单元,用于若出栈的两个所述元素数据的数据类型均为列表类型,确定所述运算符类型的表达式元素所对应的符号类型;
求和单元,用于若所述符号类型为除法运算符类型,则将每个所述元素数据内以列表形式组合的多个元素值分别进行求和,得到第一求和结果和第二求和结果;
除法运算单元,用于将所述第一求和结果除以所述第二求和结果,得到所述汇总结果。
可选的,所述解析模块,还用于:
若所述符号类型为除除法运算符类型之外的其它运算符类型,则将两个所述元素数据内以列表形式组合的多个元素值按照所述运算符类型进行列表间计算,得到所述汇总结果。
可选的,所述解析模块,还用于:
若出栈的两个所述元素数据的数据类型分别为列表类型和数字类型,将列表类型内以列表形式组合的多个元素值与所述数字类型的元素数据的元素值按照所述运算符类型进行向量运算,得到所述汇总结果。
可选的,所述解析模块,还用于:
若出栈的两个所述元素数据的数据类型均为数字类型,将两个所述元素数据对应的数值按照所述运算符类型进行数值运算,得到所述汇总结果。
可选的,所述非运算符类型包括:指标类型和数字类型,所述第二获取模块,包括:
第一获取单元,用于若所述表达式元素的元素类型为指标类型,在预设层级关系表中获取与所述表达式元素对应的元素值,将获取到的元素值以列表形式进行组合,得到与所述表达式元素对应的元素数据,将所述元素数据入栈;
第二获取单元,用于若所述表达式元素的元素类型为数字类型,获取所述表达式元素的数值,将所述表达式元素的数值入栈。
可选的,所述装置还包括:
第三获取模块,用于获取多个机构上传的元素数据集合,所述元素数据集合中包括多个表达式元素及与所述表达式元素对应的元素值;
排列模块,用于按照预设层级关系图所述元素数据集合内的表达式元素及与其对应的元素值进行排列,得到预设层级关系表。
第三方面,本申请提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的数据处理方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理方法的程序,所述数据处理方法的程序被处理器执行时实现第一方面任一所述的数据处理方法的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例通过获取待解析的指标表达式,从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型,若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈,若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈,可以基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。
本申请实施例能够在指标表达式中表达式元素的元素类型为非运算符类型时,在预设层级关系表中获取与表达式元素对应的元素数据,并在表达式元素的元素类型为运算符类型时,基于获取到的元素数据及元素类型为运算符类型的表达式元素对指标表达式进行解析,通过在预设层级关系表中获取与表达式元素对应的元素数据,可以获取到与指标表达式的表达式元素不同的数据,相对于现有技术只能基于指标表达式内的表达式元素进行计算,数据获取范围更大,而预设层级关系表中可以预先存储各种复杂的指标数据,实现对包含复杂指标数据的指标表达式进行解析,使指标表达式的解析更加符合对复杂指标数据进行解析的应用场景。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据处理方法的流程图;
图2为本申请实施例提供的一种数据处理方法的完整流程图;
图3为本申请实施例提供的预设层级关系的示意图;
图4为本申请实施例提供的一种数据处理装置的流程图;
图5为本申请实施例提供的一种电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在实现本发明的过程中发明人发现:虽然现有解析器能够通过将中缀表达式转换成后缀表达式,对后缀表达式进行入栈出栈操作,从而获取表达式计算结果,虽然能够解决大部分表达式的运算,并且解析算法可扩展,但是,由于,中缀表达式转换成后缀表达式的基本过程为:从左至右遍历中缀表达式,遇到数字时直接输出;遇到左括号时,入栈;遇到右括号时,出栈直至遇到左括号;遇到其他运算符类型时,对比其与栈顶元素的优先级。若栈顶元素优先级高,出栈直至遇到更低优先级操作符;若栈顶优先级低,入栈。重复上述过程直到表达式最右端,即可获取后缀表达式。后缀表达式解析的基本过程为:从左至右扫描后缀表达式,遇到数字时入栈;遇到操作符时弹出栈顶两个元素,以(栈顶元素op次顶元素)的规则计算,将计算结果入栈。重复上述过程直到表达式最右端,最后运算的结果即为表达式的结果。所以,随着需求中运算符类型运算逻辑的变动和数据结构的多样性,在指标表达式中,不仅包含复杂的指标数据,还包含数字类型。常用解析器不能处理复合的数据运算,常用解析器在解析这种场景中的表达式时无法满足需求,造成了指标表达式不能有效解析的问题。为此,本发明实施例提供了一种数据处理方法、装置、电子设备及存储介质,所述数据处理方法可以应用于计算机中,如图1所示,所述数据处理方法包括:
步骤S101,获取待解析的指标表达式;
在本发明实施例中,待解析的指标表达式指机构集汇总的应用场景下,供机构管理中心使用的、用于计算机构集下的机构每个月汇总结果的表达式,机构管理中心可以依据汇总结果判断机构的经营情况,根据经营情况好坏对机构进行奖惩。
指标表达式包括多个表达式元素,示例性的,表达式元素可以指表达式的基础组成部分,可以为运算符类型,也可以为指标数据等,指标数据可以指机构集、机构、指标、分析项、日期或者指标值等。
示例性的,指标表达式可以如下所示:
加法形式的指标表达式:(1机构A指标的指标值+1机构B指标的指标值)+…+(2机构A指标的指标值+2机构B指标的指标值)。
减法形式的指标表达式:(1机构A指标的指标值-1机构B指标的指标值)+…+(2机构A指标的指标值-2机构B指标的指标值)。
乘法形式的指标表达式:(1机构A指标的指标值*1机构B指标的指标值)+…+(2机构A指标的指标值*2机构B指标的指标值)。
除法形式的指标表达式:(1机构A指标的指标值+…+2机构A指标的指标值)/(1机构B指标的指标值+…+2机构B指标的指标值)。
在实际应用中还可以有其他形式的指标表达式,此处仅为举例说明,不对本发明的保护范围作出限制。并且根据上述指标计算规则,可以看到指标计算的加法,减法,乘法是指标向量间的运算;除法是先进行指标向量内的加法,再进行除法。常用的解析器提供的加法,减法,乘法,除法无法提供这种逻辑的运算。
步骤S102,从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型;
在遍历指标表达式时,可以根据表达式的每一个元素中的指标和分析项名,从分层的指标数据中快速查询机构的指标值列表,从而通过栈参与运算。
表达式元素的类型可以包括非运算符类型(非运算符类型包括:指标类型和数字类型)和运算符类型,指标表达式每一个指标类型的表达式元素的格式为:指标名|分析项名。
示例性的,一种指标表达式为:
(不良贷款率|当期值+拨备覆盖率|环比)*2
“(”、“不良贷款率|当期值”、“+”、“拨备覆盖率|环比”、“)”、“*”和“2”均可以为表达式元素,其中,“(”、“不良贷款率|当期值”、“拨备覆盖率|环比”和“)”为指标类型,“+”和“*”为运算符类型,“2”为数字类型。
步骤S103,若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈;
在该步骤中,若所述表达式元素的元素类型为非运算符类型,可以首先在预设层级关系表中在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,在本发明实施例中,元素数据中包含若干个与所述表达式元素对应的元素值,若干个元素值以列表形式进行组合,即可得到与所述表达式元素对应的元素数据,然后再将获取到的元素数据存入堆栈。
步骤S104,若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈;
在该步骤中,若所述表达式元素的元素类型为运算符类型,则可以取出堆栈顶部的两个元素数据。
步骤S105,基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。
在经过上述解析流程后,即可获得每个机构集对应每个日期的解析值。在将指标值信息制作成表后,其指标列表页面如下表1所示:
表1
本申请实施例通过获取待解析的指标表达式,从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型,若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈,若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈,可以基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。
本申请实施例能够在指标表达式中表达式元素的元素类型为非运算符类型时,在预设层级关系表中获取与表达式元素对应的元素数据,并在表达式元素的元素类型为运算符类型时,基于获取到的元素数据及元素类型为运算符类型的表达式元素对指标表达式进行解析,通过在预设层级关系表中获取与表达式元素对应的元素数据,可以获取到与指标表达式的表达式元素不同的数据,相对于现有技术只能基于指标表达式内的表达式元素进行计算,数据获取范围更大,而预设层级关系表中可以预先存储各种复杂的指标数据,实现对包含复杂指标数据的指标表达式进行解析,使指标表达式的解析更加符合对复杂指标数据进行解析的应用场景。
在本发明的又一实施例中,所述步骤S105基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,包括:
确定出栈的两个元素数据的数据类型;
若出栈的两个所述元素数据的数据类型均为列表类型,确定所述运算符类型的表达式元素所对应的符号类型;
若所述符号类型为除法运算符类型,则将每个所述元素数据内以列表形式组合的多个元素值分别进行求和,得到第一求和结果和第二求和结果;
在该步骤中,若所述符号类型为除法运算符类型,可以先将列表内的所有值相加,再将两个列表的和进行相除。
将所述第一求和结果除以所述第二求和结果,得到所述汇总结果。
本发明实施例能够在出栈的两个元素数据数据类型均为列表类型且运算符类型的符号类型为除法运算符类型时,通过先表内运算再进行触发运算的运算方式,使得指标表达式的解析更加简单、快速,提高指标表达式的解析效率。
在本发明的又一实施例中,所述步骤S105基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,还包括:
若所述符号类型为除除法运算符类型之外的其它运算符类型,则将两个所述元素数据内以列表形式组合的多个元素值按照所述运算符类型进行列表间计算,得到所述汇总结果。
在本发明实施例中,列表间运算是指将列表中每个位置对应的元算全部相加,假设每个[]内的数据代表一个列表中的数据,例如:对列表[2,1,3,4]、[2,3,4,1]和[2,3,4,5]进行列表间的加法运算可以如下所示:
[2,1,3,4]+[2,3,4,1]+[2,3,4,5]=[2+2+2,1+3+3,3+4+4,4+1+5]=[6,7,11,10];
列表间的减法运算可以如下所示:
[2,1,3,4]-[2,3,4,1]-[2,3,4,5]=[2-2-2,1-3-3,3-4-4,4-1-5]=[-2,-5,-5,-2];
以上两个的进行列表间运算的表达式中,每个列表表示在特定机构集,特定时间下,特定指标和特定分析项对应的机构指标值列表。
例如:在(不良贷款率|当期值+拨备覆盖率|环比+良好贷款率|环比)*2的公式中,[2,1,3,4]就表示在设定好的机构集下的指定时间上的所有机构的不良贷款率|当期值。即2代表机构A的不良贷款率|当期值,1代表机构B的不良贷款率|当期值,3代表机构C的不良贷款率|当期值,4代表机构D的不良贷款率|当期值。机构集下有多少子机构,那么列表的长度就是子机构的数目。
[2,3,4,1]中2代表机构A的拨备覆盖率|环比,3代表机构B的拨备覆盖率|环比,4代表C的拨备覆盖率|环比,1代表机构D的拨备覆盖率|环比。
[2,3,4,5]中2代表机构A的良好贷款率|环比,3代表机构B的良好贷款率|环比,4代表机构C的良好贷款率|环比,5代表机构D的良好贷款率|环比。
公式中每一个指标名|分析项名就对应一个列表,例如:
(不良贷款率|当期值+拨备覆盖率|环比+良好贷款率|环比)*2
公式中有3个指标名|分析项名就会查出3个列表,如果有四个指标|分析项就有4个列表。
本发明实施例能够在出栈的两个元素数据数据类型均为列表类型且运算符类型的符号类型为除除法运算符类型之外的其它运算符类型时,通过将两个列表形式的元素数据进行表间运算的运算方式,使得指标表达式的解析更加简单、快速,提高指标表达式的解析效率。
在本发明的又一实施例中,所述步骤S105基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,还包括:
若出栈的两个所述元素数据的数据类型分别为列表类型和数字类型,将列表类型内以列表形式组合的多个元素值与所述数字类型的元素数据的元素值按照所述运算符类型进行向量运算,得到所述汇总结果。
例如:向量与数字的乘法:[1,2,3,4]*2=[2,4,6,8];向量与数字的除法:[2,4,6,8]/2=[1,2,3,4]。
本发明实施例能够在出栈的两个元素数据数据类型分别为列表类型和数字类型时,通过将列表和数字进行向量运算的运算方式,使得指标表达式的解析更加简单、快速,提高指标表达式的解析效率。
在本发明的又一实施例中,所述步骤S105基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果,还包括:
若出栈的两个所述元素数据的数据类型均为数字类型,将两个所述元素数据对应的数值按照所述运算符类型进行数值运算,得到所述汇总结果。
本发明实施例能够在出栈的两个元素数据数据类型均为数字类型时,通过将数字和数字进行数值运算的运算方式,使得指标表达式的解析更加简单、快速,提高指标表达式的解析效率。
在本发明的又一实施例中,所述非运算符类型包括:指标类型和数字类型,所述步骤S103在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈,包括:
若所述表达式元素的元素类型为指标类型,在预设层级关系表中获取与所述表达式元素对应的元素值,将获取到的元素值以列表形式进行组合,得到与所述表达式元素对应的元素数据,将所述元素数据入栈;
若所述表达式元素的元素类型为数字类型,获取所述表达式元素的数值,将所述表达式元素的数值入栈。
本发明实施例能够在表达式元素的元素类型为指标类型时,在预设层级关系表中获取元素值,并将元素值以列表形式组合成元素数据,并入栈,在表达式元素的元素类型为数字类型时,直接将数值入栈,实现对元素数据的初步整理,便于后续指标表达式解析时使用,使得指标表达式的解析更加简单、快速,提高指标表达式的解析效率。
为便于理解,结合实际应用场景,基于以上实施例内容本发明实施例提供了如图2所示的完整流程图,图2中示出了整个数据处理方法的流程。
在本发明的又一实施例中,所述方法还包括:
获取多个机构上传的元素数据集合,所述元素数据集合中包括多个表达式元素及与所述表达式元素对应的元素值;
元素数据集合中可以包含机构名,日期,指标名,分析项等信息的杂乱无章的数据。该元素数据集合由每家机构每月上传一次,每条记录包含机构在指定日期,特定指标的不同的分析项的值。
其数据表格如下表2所示:
表2
机构名 |
日期 |
指标名 |
同比值 |
环比值 |
年初比值 |
AA机构 |
2019年5月 |
不良贷款率 |
1.315325 |
3.273839 |
4.479426 |
BB机构 |
2019年5月 |
拨备覆盖率 |
1.496712 |
4.193791 |
4.122354 |
上表中,同比值,环比值,年初比值均为所有指标共有的不同的分析项。
机构集信息由机构管理中心管理,其表示每个机构集下包含的机构信息,每条记录表示一个机构集包含的众多机构之一。机构集表格如下表3所示:
表3
机构集名 |
机构名 |
外资机构 |
aaa机构(中国)有限公司北京分部 |
外资机构 |
bbb机构(中国)有限公司北京分部 |
股份机构 |
ccc机构股份有限公司 |
股份机构 |
ddd机构股份有限公司 |
在实际应用中,可以预先开发数据筛选页面,数据筛选页面用于指定要汇总的机构集信息,月份信息等等。通过数据筛选页面中的筛选信息,指标系统从数据库中查询机构集下的子机构在指定月份信息下的指标的分析项的值。通过该页面输入信息的筛选后,得到的信息即是海量指标数据中所使用到的月份信息和机构集信息。
按照预设层级关系图所述元素数据集合内的表达式元素及与其对应的元素值进行排列,得到预设层级关系表。
通过数据筛选页面获取的的指标数据和机构集数据十分分散,为了能使解析系统能够便捷地使用这种复杂的数据类型,需要为指标设计合适的数据层次关系。
设计合理的数据层次需要由机构汇总的结构决定,机构汇总结构表格如下表4所示:
表4
机构集名 |
2019年9月 |
2019年10月 |
2019年11月 |
2019年12月 |
股份机构 |
12.252152% |
65.982573% |
89.127807% |
45.290746% |
由上表可知,指标表达式系统最后需要输出每个机构集在指定月份的汇总值。因此需要将机构集放在第一层,月份放在第二层,后续的层次用于存放机构集在不同日期的指标信息。
由于指标表达式解析系统是针对不同机构在指定指标分析项的运算,最后需要将不同的机构的指标分析项的值放在一个列表中进行运算,因此机构和指标值应该放在最后一层。而不同指标都包含了多个相同的分析项,因此指标放在第三层,分析项放在第四层。
按照上述思路,本发明设计了指标数据的机构集-日期-指标-分析项-机构的层级关系图,如图3所示。在指标表达式解析系统将指标数据分层后,可以得到有层次的数据信息,即:预设层级关系表。
在指标表达式解析系统将指标数据分层后,得到了有层次的数据信息,指标表达式解析器通过数据筛选页面输入的机构集信息和日期信息,再加上表达式输入页面的指标信息和分析项信息,从分层的数据中获取各机构对应的指标值列表,从而通过栈参与运算。
本发明实施例通过对复杂的指标数据进行分层,使得在对指标表达式进行解析时,按照表达式元素获取对应的元素数据时可以逐个层级的获取指标护具,提高获取表达式元素对应的元素数据的效率。
在本发明的又一实施例中,还提供一种数据处理装置,如图4所示,包括:
第一获取模块11,用于获取待解析的指标表达式,所述指标表达式包括多个表达式元素;
确定模块12,用于从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型;
第二获取模块13,用于若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈;
出栈模块14,用于若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈;
解析模块15,用于基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。
可选的,所述解析模块,包括:
第一确定单元,用于确定出栈的两个元素数据的数据类型;
第二确定单元,用于若出栈的两个所述元素数据的数据类型均为列表类型,确定所述运算符类型的表达式元素所对应的符号类型;
求和单元,用于若所述符号类型为除法运算符类型,则将每个所述元素数据内以列表形式组合的多个元素值分别进行求和,得到第一求和结果和第二求和结果;
除法运算单元,用于将所述第一求和结果除以所述第二求和结果,得到所述汇总结果。
可选的,所述解析模块,还用于:
若所述符号类型为除除法运算符类型之外的其它运算符类型,则将两个所述元素数据内以列表形式组合的多个元素值按照所述运算符类型进行列表间计算,得到所述汇总结果。
可选的,所述解析模块,还用于:
若出栈的两个所述元素数据的数据类型分别为列表类型和数字类型,将列表类型内以列表形式组合的多个元素值与所述数字类型的元素数据的元素值按照所述运算符类型进行向量运算,得到所述汇总结果。
可选的,所述解析模块,还用于:
若出栈的两个所述元素数据的数据类型均为数字类型,将两个所述元素数据对应的数值按照所述运算符类型进行数值运算,得到所述汇总结果。
可选的,所述非运算符类型包括:指标类型和数字类型,所述第二获取模块,包括:
第一获取单元,用于若所述表达式元素的元素类型为指标类型,在预设层级关系表中获取与所述表达式元素对应的元素值,将获取到的元素值以列表形式进行组合,得到与所述表达式元素对应的元素数据,将所述元素数据入栈;
第二获取单元,用于若所述表达式元素的元素类型为数字类型,获取所述表达式元素的数值,将所述表达式元素的数值入栈。
可选的,所述装置还包括:
第二获取模块,用于获取多个机构上传的元素数据集合,所述元素数据集合中包括多个表达式元素及与所述表达式元素对应的元素值;
排列模块,用于按照预设层级关系图所述元素数据集合内的表达式元素及与其对应的元素值进行排列,得到预设层级关系表。
在本发明的又一实施例中,还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现前述方法实施例任一所述的数据处理方法。
本发明实施例提供的电子设备,处理器通过执行存储器上所存放的程序实现了本申请实施例通过获取待解析的指标表达式,从左至右逐个扫描所述指标表达式中的表达式元素,确定扫描到的表达式元素的元素类型,若所述表达式元素的元素类型为非运算符类型,则在预设层级关系表中在预设层级关系表中获取与所述表达式元素对应的元素数据,并将所述元素数据入栈,若所述表达式元素的元素类型为运算符类型,将栈顶的两个元素数据出栈,可以基于出栈的两个所述元素数据和运算符类型的表达式元素对所述指标表达式进行解析,得到汇总结果。本申请实施例能够在指标表达式中表达式元素的元素类型为非运算符类型时,在预设层级关系表中获取与表达式元素对应的元素数据,并在表达式元素的元素类型为运算符类型时,基于获取到的元素数据及元素类型为运算符类型的表达式元素对指标表达式进行解析,通过在预设层级关系表中获取与表达式元素对应的元素数据,可以获取到与指标表达式的表达式元素不同的数据,相对于现有技术只能基于指标表达式内的表达式元素进行计算,数据获取范围更大,而预设层级关系表中可以预先存储各种复杂的指标数据,实现对包含复杂指标数据的指标表达式进行解析,使指标表达式的解析更加符合对复杂指标数据进行解析的应用场景。
上述电子设备提到的通信总线1140可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1120用于上述电子设备与其他设备之间的通信。
存储器1130可以包括随机存取存储器(RandomAccessMemory,简称RAM),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器1110可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DigitalSignalProcessing,简称DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明的又一实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理方法的程序,所述数据处理方法的程序被处理器执行时实现前述方法实施例任一所述的数据处理方法的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。