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

基于SDL语言的统计数据处理方法和设备

文献发布时间:2023-06-19 19:28:50


基于SDL语言的统计数据处理方法和设备

技术领域

本发明属于大数据术领域,具体涉及一种基于SDL语言的统计数据处理方法和装置。

背景技术

随着统计业务的不断发展,尤其各种应用系统在信创环境上的应用,对原有统计数据加工处理工具在信创环境上的适配应用,部分工具因不支持信创环境,所以就需要对脚本中的业务场景进行重新梳理,并使用其他工具再次实现业务逻辑。统计业务脚本经过长时间的业务沉淀,脚本中融入了很多统计业务特有的处理逻辑,非专业人员很难理解。

目前多数据统计业务脚本都是在内在中计算,主要以foxpro为主,存储在单机环境、算力及处理大数据能力不足,因其无法适配信创环境,需要将脚本转为其他语言工具实现。因foxpro语言诞生较早,语法相对简单,较多数的统计业务人员都可以读懂和使用该语言脚本。调整为其他语言工具实现语法相对复杂,对业务人员来讲有一定学习成本,不利于在统计行业内推广。随着国家及公众对统计数据依赖度的不断提升,急需在算力及大数据处理上得到提升。

因此,现有技术需要一种能够有效处理统计业务数据的解决方案。

上述在背景部分公开的信息仅用于对本发明的背景做进一步的理解,因此它可以包含对于本领域普通技术人员已知的不构成现有技术的信息。

发明内容

本发明涉及一种基于SDL语言的统计数据处理方法和装置。本发明的方案能够有效处理统计业务数据,并且便于对统计业务人员读懂和使用,便于在统计行业内推广,降低业务系统开发的复杂度和周期,使得业务人员容易学统计业务流程。

本发明的第一方面提供了一种基于SDL语言的统计数据处理方法,其特征在于,所述方法包括:S1:根据用户实际调用的SDL函数的语法关系,获取当前统计数据,并且预估当前统计数据的处理量;S2:如果根据所预估的处理量为小数据量,调用本地或服务器端的小数据处理引擎来对当前统计数据进行快速数据处理;S3:如果所预估的处理量为大数据,那么在服务器端调用大数据处理引擎,并通过spark算子来对当前统计数据进行处理。

根据本发明的一个实施例,在所述S2中,使用http请求通过java程序来调用小数据处理引擎的核心处理逻辑。

根据本发明的一个实施例,在所述步骤S3中,使用py4j库通过java网关来调用大数据处理引擎的核心处理逻辑。

根据本发明的一个实施例,在所述S2中,小数据处理引擎核心处理逻辑调用SDL扩展函数来对当前数据进行快速数据处理,其中小数据处理引擎在调用SDL扩展函数时,判断当前统计数据是否已经注册,如果已经注册,则通过SDL扩展函数实现当前统计数据处理。

根据本发明的一个实施例,其中,所述S1中包括:通过导入SDL语言包以使用Api调用所述SDL函数,使用SDL函数中的读取函数SDL.f i l e来读取前统计数据,并将所述统计数据存入缓存,并且使用SDL函数中的输出函数SDL.out来输出当前统计数据的指定文件格式。

根据本发明的一个实施例,所述S2和S3中的数据处理包括:通过查询统计数据表函数SDL.tab l e来查询指定文件格式的当前统计数据,并通过查询表中数据函数SDL.f ind来查找当前统计数据中的数据内容;并且通过动态替换函数SDL.rep l ace来动态替换当前统计数据中的字段,通过动态追加函数SDL.append来动态添加当前统计数据中的一行或多行记录。

根据本发明的一个实施例,其中在所述SDL函数的参数中支持表达式,用于对当前统计数据进行过滤,其中对当前统计数据进行过滤的SDL函数的语法为:sd l.exec(‘数据集’,表达式语法),其中所述表达式支持SQL正则表达式。

根据本发明的一个实施例,其中所述SDL函数的参数中支持对当前统计数据的业务逻辑处理,其中

当前统计数据的业务逻辑处理的SDL函数的语法为:sd l.hand l e(‘数据集’,[指标1,指标2…],‘数据时期’),其中‘数据集’表示在当前统计数据提取的待处理的数据集,指标表示对数据集中所包含的当前统计数据的多个业务指标,数据时期表示数据集中的对应的统计时期或期限。

本发明的第二方面提供了一种基于SDL语言的统计数据处理装置,其特征在于,所述设备包括:数据预估算装置,用于:根据用户实际调用的SDL函数的语法关系,获取当前统计数据,并且预估当前统计数据的处理量;小数据处理引擎,设置在本地或服务器端,如果根据所预估的处理量为小数据量,所述小数据处理引擎用于对当前统计数据进行快速数据处理;大数据处理引擎,设置在服务器端,如果所预估的处理量为大数据,大数据处理引擎调用spark算子来对当前统计数据进行处理。

根据本发明的一个实施例,其中,所述数据预估算装置通过接口层调用位于服务层的小数据处理引擎和大数据处理引擎;并且其中,在接口层中,使用http请求通过java程序来调用小数据处理引擎的核心处理逻辑,使用py4j库通过java网关来调用大数据处理引擎的核心处理逻辑。

本发明的第三方面提供一种基于有限状态机的业务流程处理装置,包括:存储器和处理器,所述存储器用于存储计算机程序,当由所述处理器执行所述计算机程序时,实现上述的基于SDL语言的统计数据处理方法。

本发明的方案利用SDL语言中的函数作为工具,能自动按统计业务规则去除重复数据,有固定的统计业务语法,简单易用,本发明语法的定义基本采用统计业务中常用指标词汇及计算方法,易于统计人员使用。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图进行简单介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明的一个示例性实施例的基于SDL语言的统计数据处理方法流程图。

图2是根据本发明的一个示例性实施例的基于SDL语言的统计数据处理装置的流程图。

图3示出了根据本发明的一个实施例性实施例的统计数据处理装置的框图。

具体实施例

如在本文中所使用的,词语“第一”、“第二”等可以用于描述本发明的示例性实施例中的元件。这些词语只用于区分一个元件与另一元件,并且对应元件的固有特征或顺序等不受该词语的限制。除非另有定义,本文中使用的所有术语(包括技术或科学术语)具有与本发明所属技术领域的普通技术人员通常理解的含意相同的含意。如在常用词典中定义的那些术语被解释为具有与相关技术领域中的上下文含意相同的含意,而不被解释为具有理想或过于正式的含意,除非在本发明中被明确定义为具有这样的含意。

本领域的技术人员将理解的是,本文中描述的且在附图中说明的本发明的装置和方法是非限制性的示例性实施例,并且本发明的范围仅由权利要求书限定。结合一个示例性实施例所说明或描述的特征可与其他实施例的特征组合。这种修改和变化包括在本发明的范围内。

下文中,将参考附图详细描述本发明的示例性实施例。在附图中,省略相关已知功能或配置的详细描述,以避免不必要地遮蔽本发明的技术要点。另外,通篇描述中,相同的附图标记始终指代相同的电路、模块或单元,并且为了简洁,省略对相同电路、模块或单元的重复描述。

此外,应当理解一个或多个以下方法或其方面可以通过至少一个控制单元或控制器执行。术语“控制单元”,“控制器”,“控制模块”或者“主控模块”可以指代包括存储器和处理器的硬件设备。存储器或者计算机可读存储介质配置成存储程序指令,而处理器具体配置成执行程序指令以执行将在以下进一步描述的一个或更多进程。而且,应当理解,正如本领域普通技术人员将意识到的,以下方法可以通过包括处理器并结合一个或多个其他部件来执行。

随着大数据平台存储及计算能力的提升,可以将业务处理工作迁移到远端通过大数据存储和计算能力解决目前的存储及算力问题,并通过远端构建开放的Ap i接口,实现统计业务脚本处理能力,解决因更换工具给统计人员工作带来的不便。Ap i接口通过远程调用服务端的SDL语言包实现原foxpro脚本实现的能力。

服务端SDL语言包,是一种面象统计业务的标准语言,融合了foxpro脚本中业务处理逻辑,贴近于统计业务,是一门专门为统计行业特定业务定义的具有可扩展能力统计业务语言。具有面向统计行业,贴近统计人员使用习惯的简单的特定语法脚本。当统计业调整,现有SDL函数不满足需要时,又可根据业务逻辑扩展语言包中函数。

脚本语言SDL(spec i f i cat i on descr i pt i on l anguage)是标准的统计业务数据处理语言,扩展性强,实现业务逻辑时,本发明是在原有工具的基础上,扩展实现函数,能自动按统计业务规则去除重复数据,有固定的统计业务语法,简单易用,前一函数的输出,是后续函数的输入,语法的定义基本采用统计业务中常用指标词汇及计算方法,更易于统计人员使用

图1是根据本发明的一个示例性实施例的基于SDL语言的统计数据处理方法流程图。

如图1所示,在S1:根据用户实际调用的SDL函数的语法关系,获取当前统计数据,并且预估当前统计数据的处理量;

在S2:如果根据所预估的处理量为小数据量,调用本地或服务器端的小数据处理引擎来对当前统计数据进行快速数据处理;

在S3:如果所预估的处理量为大数据,那么在服务器端调用大数据处理引擎,并通过spark算子来对当前统计数据进行处理。

根据本发明的一个或多个实施例,使用http请求通过java程序来调用小数据处理引擎的核心处理逻辑;使用py4j库通过java网关来调用大数据处理引擎的核心处理逻辑。

图2是根据本发明的一个示例性实施例的基于SDL语言的统计数据处理装置的流程图。

如图2所示,基于SDL语言的统计数据处理装置包括数据预估算装置、小数据处理引擎和大数据处理引擎。其中,数据预估算装置根据用户实际调用的SDL函数的语法关系,获取当前统计数据,并且预估当前统计数据的处理量;小数据处理引擎,设置在本地或服务器端,如果根据所预估的处理量为小数据量(进行本地/调试的小数据运行),所述小数据处理引擎用于对当前统计数据进行快速数据处理;大数据处理引擎(进行大数据处理引擎的spark算子提交),设置在服务器端,如果所预估的处理量为大数据,大数据处理引擎调用spark算子来对当前统计数据进行处理。

根据本发明的一个或多个实施例,其中,所述小数据处理引擎和大数据处理引擎可以位于服务层,数据预估算装置通过接口层来调用服务层的大数据处理引擎和小数据处理引擎的核心逻辑。具体地,在接口层中,使用http请求通过java程序来调用小数据处理引擎的核心处理逻辑,使用py4j库通过java网关来调用大数据处理引擎的核心处理逻辑。

根据本发明的一个或多个实施例,py4j是一个用Python和Java编写的库。通过py4j,Python程序能够动态访问Java虚拟机中的Java对象,Java程序也能够回调Python对象。py4j基于BSD许可证分发。py4j通过标准Python集合方法访问Java对象,从而实现方法的调用。

根据本发明的一个或多个实施例,其中,根据本发明的一个或多个实施例,在基于SDL语言的统计数据处理装置中的处理流程为:

首先,根据用户实际调用函数的语法关系,找到处理的数据表,预估出当前的数据处理量,决定走哪种数据处理逻辑。

其次,如果预估出小数据量,则调用本地或远端小数据处理引擎,小数据处理引擎通过http请求调用服务端的java控制器中的java程序。

再次,服务端的小数据处理引擎会调用核心运算逻辑,执行数据运算,小数据处理引擎的特点就是运算速度快。

如果预估出数据量较大,则调用大数据处理引擎,通过java网关,将数据交给spark运算。

根据本发明的一个或多个实施例,在数据量较小的情况下,小数据处理引擎调用SDL扩展函数的同时会判断当前业务端是否已经注册,如果注册过,则通过SDL扩展的函数实现小数据量的数据处理,然后根据实际业务场景,将返回的对应处理的数据集。

在对统计业务数据的处理中,由于处理数据不只在数据库中处理,一部分数据是放到内存中通过算法进行的排序,常用的排序算法中使用了时间复杂度、冒泡排序、归并排序、堆排序。

在对对统计业务数据的处理过程中,使用SDL函数来进行:SDL语言包的导入、文件记录的读取、文件记录的输入、统计数据转化为统计表时的查询数据表操作、统计数据表的动态替换、统计数据表的动态追加、统计数据表的输出、统计数据表用表达式对数据的过滤、对统计数据业务逻辑的处理等操作。

根据本发明的一个或多个实施例,在引入SDL语言包时,导入SDL脚本语言包后,才能通过Api调用SDL函数。

根据本发明的一个或多个实施例,在统计数据文件记录读取中,统计业务用户通过使用“SDL.fi l e”函数,输入远程文件位置,读取到文件中的统计业务数据,并存储在远程缓存中。

根据本发明的一个或多个实施例,对统计业务数据文件记录的输入中,统计业务用户通过使用“SDL.out”函数,并在函数参数中指定相应的输出格式,并输出指定文件格式(例如Csv、Exce l)。

根据本发明的一个或多个实施例,在查询统计业务数据的数据表或数据集中的数据时,通过调用“SDL.fi nd”函数,查找相应的统计业务数据表。例如,具体的语法为:

对于统计数据中的单表:

sd l.fi nd(表名,[字段1,字段2…,字段n],条件);

sd l.fi nd(‘B201-1’,‘co l 1,co l 2’,‘co l 1=工业’);

调用B201-1表,并返回co l 1和co l2两个字段,并且满足条件co l 1是工业的数据。其中B201-1为示例的统计业务表。

对于统计数据中的多表:

sd l.fi nd([表名1,表名2…],[表间关系1,表间关系2…],[字段1,字段2…,字段n],[条件1,条件2…]);

sd l.fi nd(‘B201-1 a,B201-2 b’,‘a l eft b’,‘a.col 1,a.co l2,b.hy’,‘a.co l 1=工业’);

调用B201-1和B201-2表,并为两张表分别起了别名a和b,并返回B201-1表中的col 1和co l 2两个字段B201-2表中的行业(hy)字体,并且满足条件B201-1表字段co l 1是工业的数据,其中B201-1表和B201-2表为B201表的附表。

在多表的语法中,l eft、r i ght和i nner为处理逻辑的关联字段,分别代表多表的左关联、右关联、匹配记录取交集。

根据本发明的一个或多个实施例,在对统计数据表进行动态替换时,通过调用“SDL.rep l ace”函数,动态替换数据表中的字段及数据集中字段。例如,“SDL.rep l ace”函数的语法为:

SDL.rep l ace(‘结果集’,‘原字段1’,‘新字段1’,‘原字段2’,新字段2……)

因为在SDL函数中上一步的输出,是下一步的输入:

例如上一步为jg=sd l.fi nd(……);

那么在上一步结果的jg上做处理

sd l.rep l ace(jg,‘co l 1’,‘行业名称’,‘co l2’,‘行业代码’)

那么动态替换的SDL函数最终返回的字段就将为行业名称和行业代码,而非col 1和co l 2,其中col 1和co l2是数据库中的两个物理字段。

根据本发明的一个或多个实施例,动态追加的SDL函数为:通过调用“SDL.append”函数,动态添加数据集中一行或多行记录。

例如:如上几步(即上几步的结果t1等sd l.append第一个参数要用到上一步的结果,所以这里我提了一下,上几步,代表上几步的结果,会在sd l.append中的第一个参数里用到):

t1=sd l.tab l e();

……

jg=sd l.fi nd(……);

语法1:

sd l.append(‘数据集’,‘要追加记录’,‘i nsert’,‘索引号’)

例如:

sd l.append(t1,[‘能源行业’,‘10001’],‘i nsert’,‘0’)含义为:把“能源行业”及编码插入到t1结果集的最上边语法2:sd l.append(‘数据集’,‘数据集2’,‘i nsert’,‘索引号’)

N=sd l.append(t1,jg,‘i nsert’,-1)

含义为:把结果集jg添加到t1的后边。合并成一个新的结果集N。

根据本发明的一个或多个实施例,输出函数为:通过调用“SDL.p i nt”函数,动态输出数据结果。其语法为:

sd l.pr i nt(结果集);

根据本发明的一个或多个实施例,计数据表用表达式对数据的过滤为:在SDL函数的参数中支持表达式,用于过滤数据。语法为:

sd l.exec(‘数据集’,表达式语法);其中,表达式支持SQL正则表达式。

根据本发明的一个或多个实施例,对统计数据业务逻辑的处理等操作包括:在SDL函数的参数中支持业务逻辑,例如:(地区生产总值,dq),取当期值,(地区生产总值,sntq)取上年同期值,其他逻辑略。具体的语法为:

sd l.hand l e(‘数据集’,[指标1,指标2…],‘数据时期’);

例如:

如上几步:

t1=sd l.tab l e();

……

jg=sd l.fi nd(……);

sd l.hand l e(t1,‘’,dq);

第二个参数为空时,取数据集对应的全部字段。

第三个参数的取值可以如下表1:

表1

其中‘数据集’表示在当前统计数据提取的待处理的数据集,指标表示对数据集中所包含的当前统计数据的多个业务指标,数据时期表示数据集中的对应的统计时期或期限。

图3示出了根据本发明的一个实施例性实施例的统计数据处理装置的框图。

如图3所示,根据本发明的一个或多个实施例,还提供了一种统计数据处理装置,包括:存储器和处理器,所述存储器用于存储计算机程序,当由所述处理器执行所述计算机程序时,实现上述的基于SDL语言的统计数据处理方法。

在本申请所提供的实施例中,应该理解到,所揭露系统、设备、装置或方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

根据本发明的一个或多个实施例,本发明中的方法可以使用存储在非暂时性计算机和/或机器可读介质(例如硬盘驱动器、闪存、只读存储器、光盘、数字多功能磁盘、高速缓存、随机存取存储器和/或任何其他存储设备或存储磁盘)上的编码的指令(例如,计算机和/或机器可读指令)来实现如本发明以上系统中的流程的处理,在非暂时性计算机和/或机器可读介质中存储任何时间期间(例如,延长的时间段、永久的、短暂的实例、临时缓存和/或信息高速缓存)的信息。如本文所使用的,术语“非暂时性计算机可读介质”被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。

作为本发明示例的上文涉及的附图和本发明的详细描述,用于解释本发明,但不限制权利要求中描述的本发明的含义或范围。因此,本领域技术人员可以很容易地从上面的描述中实现修改。此外,本领域技术人员可以删除一些本文描述的组成元件而不使性能劣化,或者可以添加其它的组成元件以提高性能。此外,本领域技术人员可以根据工艺或设备的环境来改变本文描述的方法的步骤的顺序。因此,本发明的范围不应该由上文描述的实施例来确定,而是由权利要求及其等同形式来确定。

尽管本发明结合目前被认为是可实现的实施例已经进行了描述,但是应当理解本发明并不限于所公开的实施例,而相反的,意在覆盖包括在所附权利要求的精神和范围内的各种修改和等同配置。

相关技术
  • 基于代码编译器的语言处理方法、装置、设备及介质
  • 基于知识指导前缀微调的自然语言处理方法、装置、计算设备和存储介质
技术分类

06120115920384