CN115495508A - 报表用sql语句的生成方法、装置及电子设备 - Google Patents

报表用sql语句的生成方法、装置及电子设备 Download PDF

Info

Publication number
CN115495508A
CN115495508A CN202211162195.0A CN202211162195A CN115495508A CN 115495508 A CN115495508 A CN 115495508A CN 202211162195 A CN202211162195 A CN 202211162195A CN 115495508 A CN115495508 A CN 115495508A
Authority
CN
China
Prior art keywords
report
node
directed graph
subunit
chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211162195.0A
Other languages
English (en)
Inventor
黄记新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202211162195.0A priority Critical patent/CN115495508A/zh
Publication of CN115495508A publication Critical patent/CN115495508A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供报表用SQL语句的生成方法、装置及电子设备,其中方法包括:获取业务人员编辑的多个报表的链式有向图;链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段;获取业务人员通过人机交互界面选择并传送至后台的筛选条件;基于链式有向图中的报表顺序,依次查询各报表中是否存在用于达到筛选条件的筛选要素;根据查询结果、链式有向图中连线的属性,拼接形成目标SQL语句。本方案能够较便捷、灵活地调整SQL语句生成方式,且能够避免遗漏筛选要素信息,不容易出现bug。

Description

报表用SQL语句的生成方法、装置及电子设备
技术领域
本申请涉及自动化技术领域,特别涉及报表用SQL语句的生成方法、装置及电子设备。
背景技术
规模较大的公司通常业务量的种类及数量较多,业务人员面临着大量的报表制作任务。业务人员通常不动数据库操作技术,因此无法自行编写SQL语句以实现报表的制作。为此,通常需要技术人员编写好通用的SQL语句以及业务人员调用SQL语句的交互方式代码,业务人员才可以根据实际需求自行得到SQL语句,执行SQL,进而实现报表制作任务。
然而,通过现有生成SQL语句的解决方案制作报表容易出现bug,灵活性较差。
发明内容
本申请的目的是提供一种报表用SQL语句的生成方法、装置及电子设备,以解决现有生成SQL语句的解决方案制作报表容易出现bug、灵活性较差的问题。
为解决上述技术问题,本说明书第一方面提供一种报表用SQL语句的生成方法,包括:获取业务人员编辑的多个报表的链式有向图;所述链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段;
获取业务人员通过人机交互界面选择并传送至后台的筛选条件;基于所述链式有向图中的报表顺序,依次查询各报表中是否存在用于达到所述筛选条件的筛选要素;根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句。
在一些实施例中,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将各报表节点对应的筛选要素拼接至SQL语句中,拼接形成目标SQL语句:查询链式有向图中当前报表节点中是否有筛选要素,在有的情况下记录当前报表节点对应的筛选要素;判断在链式有向图中当前报表节点后是否有连线;在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到并显示的字段;相应地,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将各报表节点对应的被筛选出的字段拼接形成select语句段;查询链式有向图中当前报表节点中的报表标识所对应的报表中的字段,筛选出业务人员所勾选的字段;判断在链式有向图中当前报表节点后是否有连线;在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到的字段所在的表的名称;相应地,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将各报表节点对应的连接关系语句拼接形成from语句段;判断链式有向图中当前报表节点后是否有连线;在有的情况下,根据连线属性标记连线关联的两个报表的连接关系,并根据连线定位下一报表节点,将下一报表节点作为当前报表节点:在没有的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括筛选条件,所述筛选条件传送至后台后作为对应报表对象中的目标属性;相应地,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将所获取的目标属性拼接形成where语句段;获取链式有向图中当前报表节点中的报表标识所对应的报表对象中的目标属性;判断在链式有向图中当前报表节点后是否有连线;在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述链式有向图是由业务人员通过将图形化编辑界面上第一区域中的图形化报表组件拖动至第二区域时,根据第二区域内各图形化报表组件之间的位置关系确定的。
本说明书第二方面提供一种报表用SQL语句的生成装置,包括:第一获取单元,用于获取业务人员编辑的多个报表的链式有向图;所述链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段;第二获取单元,用于获取业务人员通过人机交互界面选择并传送至后台的筛选条件;查询单元,用于基于所述链式有向图中的报表顺序,依次查询各报表中是否存在用于达到所述筛选条件的筛选要素;拼接单元,用于根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句。
在一些实施例中,所述拼接单元包括:第一查询子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操纵,直至到达链式有向图的尾节点后,将各报表节点对应的筛选要素拼接至SQL语句中,拼接形成目标SQL语句;其中,所述第一查询子单元用于查询链式有向图中当前报表节点中是否有筛选要素,在有的情况下记录当前报表节点对应的筛选要素;所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到并显示的字段;相应地,所述拼接单元包括:第二查询子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将各报表节点对应的被筛选出的字段拼接形成select语句段;其中,所述第二查询子单元用于查询链式有向图中当前报表节点中的报表标识所对应的报表中的字段,筛选出业务人员所勾选的字段;所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到的字段所在的表的名称;相应地,所述拼接单元包括:判断子单元、标记子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将各报表节点对应的连接关系语句拼接形成from语句段;其中,所述判断子单元用于判断链式有向图中当前报表节点后是否有连线;所述标记子单元用于在有的情况下,根据连线属性标记连线关联的两个报表的连接关系,并根据连线定位下一报表节点,将下一报表节点作为当前报表节点:所述第二确定子单元用于在没有的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括筛选条件,所述筛选条件传送至后台后作为对应报表对象中的目标属性;相应地,所述拼接单元包括:获取子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将所获取的目标属性拼接形成where语句段;其中,所述获取子单元用于获取链式有向图中当前报表节点中的报表标识所对应的报表对象中的目标属性;所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述链式有向图是由业务人员通过将图形化编辑界面上第一区域中的图形化报表组件拖动至第二区域时,根据第二区域内各图形化报表组件之间的位置关系确定的。
本说明书第三方面提供一种电子设备,包括:存储器和处理器,所述处理器和所述存储器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而实现第一方面任一项所述方法的步骤。
本说明书第四方面提供一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被处理器执行时实现第一方面任一项所述方法的步骤。
本说明书第五方面提供一种计算机程序产品,包含有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述方法的步骤。
本说明书提供的报表用SQL语句的生成方法、装置及电子设备,根据链式有向图中的报表顺序、连线属性拼接形成SQL语句,由于链式有向图是由业务人员编辑的得到的,因此当数据库表及其之间的连接关系有变动的情况下,能够较便捷、灵活地调整SQL语句生成方式;根据链式有向图中的报表顺序查询筛选要素,而不是依据筛选条件来查询筛选要素,能够避免遗漏筛选要素信息。
附图说明
为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本说明书提供的一种报表用SQL语句的生成方法的流程图;
图2示出了数据库中所存储的三个数据库表的示意图;
图3示出了用于链式有向图的图形化编辑界面的示意图;
图4示出了根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句的一种实施方式的流程图;
图5示出了根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句的另一种实施方式的流程图;
图6示出了根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句的又一种实施方式的流程图;
图7示出了根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句的又一种实施方式的流程图;
图8示出了本说明书提供的一个报表用SQL语句的生成装置的原理框图;
图9示出了本说明书提供的电子设备的原理框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。
发明人发现,技术人员为业务人员提供的生成SQL语句的解决方案中,将各数据表固定存入第一数组中,在根据业务人员选取的筛选条件生成SQL时遍历数组中的各数组元素,将各数组元素关联的筛选要素拼接SQL语句。在一些实施例中,还将业务人员选取的筛选条件存入第二数组,查找与各筛选条件关联的表,并根据查找结果来拼接SQL语句。上述两种基于数组的操作方式使得现有生成SQL语句的解决方案的扩展性较差,容易出问题。
基于上述发现,本说明书提供一种报表用SQL语句的生成方法,以解决现有生成SQL语句的解决方案制作报表容易出现bug的问题。
如图1所示,该报表用SQL语句的生成方法包括如下步骤:
S10:获取业务人员编辑的多个报表的链式有向图;所述链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段。
在数据库中,数据库表与业务人员通过人机交互界面所看到的报表是同名的,并且字段相同。例如,图2示出了数据库中所存储的三个数据库表:报表A(字段:a1、a2、a3)、报表B(字段:b1、b2、b3)、报表C(字段:c1、c2、c3),报表A、报表B、报表C中的至少部分数据是业务人员能够看到的。
图2所示三个报表之间的链式有向图可以为:A—>B—>C。
多个报表之间的链式有向图可以是业务人员在人机交互界面上自行编辑的。例如,可以自行编辑链式有向图中的第一个报表节点、第二个报表节点、第三个报表节点对应的报表标识,后台程序可以根据报表节点的序号自动确定每个报表节点的下一报表节点。
在一些实施例中,如图3所示,可以在人机交互界面上提供链式有向图的图形化编辑界面,该图形化编辑界面包括第一区域、第二区域,第一区域中包括图形化编辑界面的图形化报表组件,图形化报表组件可以包括报表节点组件、连线组件等,第二区域为链式有向图的编辑区域,业务人员可以将第一区域中的图形化报表组件拖动至第二区域,并设置各图形化报表组件的属性、各图形化报表组件之间的关联关系,从而得到链式有向图。
报表节点组件的属性可以包括:报表标识,连线组件的属性可以包括:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式(例如内连接、左连接、右连接等)、连线两端报表的连接字段等。
由图3中编辑区域所示的链式有向图可以看出,本说明书中的链式有向图并不是指数据存储方式中链表存储结构,二者属于不同的领域。在代码实现方式上,链式有向图的实现方式可以采用数组来实现,也可以采用链表来实现。
S20:获取业务人员通过人机交互界面选择并传送至后台的SQL筛选要素。
SQL语句通常为:select X from Y where Z,其中,X表示业务人员所要获取的数据字段,Y表示用于筛选数据的数据集合,Z表示筛选条件。
业务人员可以在人机交互界面上通过在报表中勾选字段的方式将所要获取的数据字段传送至程序后台,得到上述X;可以根据链式有向图中信息得到上述Y;可以在人机交互界面上编辑筛选条件并发送至程序后台,得到上述Z。
筛选要素是指SQL语句中两个相邻SQL关键词之间的内容,SQL关键词是指select、from、where、group等。
在一些实施例中,SQL筛选要素传送至后台后,可以作为对应报表对象的属性。在后台程序中,为每个报表建立一个对象,将报表中的字段作为对象中的第一类属性,将传送至后台的SQL筛选要素作为报表对象的第二类属性。对象、属性等是面向对象编程方法中常用的概念,在此不再详细介绍。
在一些实施例中,SQL筛选要素传送至后台后,也可以作为SQL语句生成方法对应的代码段中全局变量,即并不作为对应报表的属性。
S30:基于链式有向图中的报表顺序,依次查询各报表中是否存在用于达到所述筛选条件的筛选要素。
S40:根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句。
步骤S30在查询筛选要素时,按照链式有向图中的报表顺序来查询,能够防止根据其他顺序(例如按照筛选条件)来查询筛选要素时,容易遗漏筛选要素而出现bug的情况。
上述报表用SQL语句的生成方法,根据链式有向图中的报表顺序、连线属性拼接形成SQL语句,由于链式有向图是由业务人员编辑的得到的,因此当数据库表及其之间的连接关系有变动的情况下,能够较便捷、灵活地调整SQL语句生成方式;根据链式有向图中的报表顺序查询筛选要素,而不是依据筛选条件来查询筛选要素,能够避免遗漏筛选要素信息。
在一些实施例中,如图4所示,S40包括以下步骤:
S41:查询链式有向图中当前报表节点中是否有筛选要素,在有的情况下记录当前报表节点对应的筛选要素。
S42:判断在链式有向图中当前报表节点后是否有连线。在是的情况下,执行S43,然后跳转至S41继续执行;在否的情况下,执行S44和S45。
S43:根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点。
S44:确定到达链式有向图的尾结点。
S45:将各报表节点对应的筛选要素拼接至SQL语句中,拼接形成目标SQL语句。
该实施例给出了基于链式有向图的报表顺序依次查询各报表中是否存在用于达到所述筛选条件的筛选要素,即采用了深度遍历算法,生成SQL的效率较高、准确率较高。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到并显示的字段。相应地,如图5所示,S40包括如下步骤:
S411:查询链式有向图中当前报表节点中的报表标识所对应的报表中的字段,筛选出业务人员所勾选的字段。
S412:判断在链式有向图中当前报表节点后是否有连线。在是的情况下,执行S413,然后跳转至S411继续执行;在否的情况下,执行S414和S415。
S413:根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点、
S414:确定到达链式有向图的尾结点。
S415:将各报表节点对应的被筛选出的字段拼接形成select语句段。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到的字段所在的表的名称。相应地,如图6所示,S40包括如下步骤:
S421:判断链式有向图中当前报表节点后是否有连线。在有的情况下,执行S422,然后跳转至S421继续执行;在没有的情况下,执行S423和S424。
S422:根据连线属性标记连线关联的两个报表的连接关系,并根据连线定位下一报表节点,将下一报表节点作为当前报表节点。
S423:确定到达链式有向图的尾结点。
S424:将各报表节点对应的连接关系语句拼接形成from语句段。
在一些实施例中,所述SQL筛选要素包括筛选条件,所述筛选条件传送至后台后作为对应报表对象中的目标属性。相应地,如图7所示,S40包括如下步骤:
S431:获取链式有向图中当前报表节点中的报表标识所对应的报表对象中的目标属性。
S432:判断在链式有向图中当前报表节点后是否有连线。在是的情况下,执行S433,然后跳转至S431继续执行;在否的情况下,执行S434和S435。
S433:根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点。
S434:确定到达链式有向图的尾结点。
S435:将所获取的目标属性拼接形成where语句段。
下面以图2所示的报表为例来说明本说明书所提供的报表用SQL语句的生成方法。
业务人员预先编辑三个表之间的指向关系为:A—>B—>C。当业务人员需要从数据库中搜索数据时,1、通过显示界面显示报表中字段,业务人员从显示界面选取所要搜索的目标字段,例如,A-a1、B-b2、C-c3,这些字段作为一个“数组”发送至后台程序;2、业务人员在显示界面所显示的对话框中,输入筛选条件,例如,A-a2>X,C-c2<Y,后台会将这些筛选条件转变为对应报表的“类”/对象中的一个filter属性。
后台程序在接收到业务人员输入的上述2个方面的信息之后,拼接得到SQL语句:select A.a1,B.b2,C.c3 from A left join B on A.a1=B.b2 left join on B.b2=C.3where A.a2>X and C.C2<Y,拼接方法如下:
1、调用“第一函数”,该函数执行循环递归操作,将前台传来的数组中的各个字段拼接成select后的“A.a1,B.b2,C.c3”。该循环递归方法为:首先查看链式有向图中的第一个报表A,取报表A中的字段“A.a1”;然后判断报表A后是否有连线(即报表A是否存在下一报表节点),有连线指向报表B(即报表A存在下一报表节点B),则去取报表B的字段“B.b2”;然后判断报表B后是否有连线(即报表B是否存在下一报表节点),有连线指向表C(即报表B存在下一报表节点C),则去取报表C中的字段“C.c3”;然后判断报表C后是否有连线(即报表C是否存在下一报表节点),没有连线,则结束取字段的操作,将取出的字段拼接成select语句段,得到:select A.a1,B.b2,C.c3。
2、调用“第二函数”,该函数执行循环递归操作,得到from后的“A left join B onA.a1=B.b2 left join on B.b2=C.3”。该循环递归方法为:首先查看链式有向图中的第一个报表A,判断报表A后是否有连线(即报表A是否存在下一报表节点),有(记为第一连线),则取出第一连线的关联字段,标记A left join B on A.a1=B.b2;然后根据第一连线定位到下一个报表B,判断报表B后是否有连线(即报表B是否存在下一报表节点),有(记为第二连线),则取出第二连线的关联字段,标记left join on B.b2=C.3;然后根据第二连线定位到报表C,判断报表C后没有连线了(即报表C不存在下一报表节点),则结束取字段的操作,将标记的内容拼接成from语句段,得到:A left join B on A.a1=B.b2 left joinon B.b2=C.3。
3、调用“第三函数”,该函数执行循环递归操作,得到where后的“A.a2>X and C.C2<Y”。该循环递归方法为:首先查看链式有向图中的第一个报表A,判断报表A中是否有filter属性值,有A.a2>X,则记录该属性值;然后判断报表A后是否有连线(即报表A是否存在下一报表节点),有连线指向报表B(即报表A存在下一报表节点B),则判断报表B中是否有filter属性值,无;然后判断报表B后是否有连线(即报表B是否存在下一报表节点),有连线指向表C(即报表B存在下一报表节点C),则判断报表C中是否有filter属性值,有C.C2<Y,则记录该属性值;然后判断报表C后是否有连线(即报表C是否存在下一报表节点),没有连线,则结束记录filter属性值的操作,将记录的各属性值拼接成where语句段,得到:whereA.a2>X and C.C2<Y。
本说明书提供一种报表用SQL语句的生成装置,可以用于实现图1所示的报表用SQL语句的生成方法。如图8所示,该装置包括第一获取单元10、第二获取单元20、查询单元30和拼接单元40。
第一获取单元10用于获取业务人员编辑的多个报表的链式有向图;所述链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段。
第二获取单元20用于获取业务人员通过人机交互界面选择并传送至后台的筛选条件。
查询单元30用于基于所述链式有向图中的报表顺序,依次查询各报表中是否存在用于达到所述筛选条件的筛选要素。
拼接单元40用于根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句。
在一些实施例中,所述拼接单元包括:第一查询子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操纵,直至到达链式有向图的尾节点后,将各报表节点对应的筛选要素拼接至SQL语句中,拼接形成目标SQL语句;其中,所述第一查询子单元用于查询链式有向图中当前报表节点中是否有筛选要素,在有的情况下记录当前报表节点对应的筛选要素;所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到并显示的字段;相应地,所述拼接单元包括:第二查询子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将各报表节点对应的被筛选出的字段拼接形成select语句段;其中,所述第二查询子单元用于查询链式有向图中当前报表节点中的报表标识所对应的报表中的字段,筛选出业务人员所勾选的字段;所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括业务人员勾选的需要查询到的字段所在的表的名称;相应地,所述拼接单元包括:判断子单元、标记子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将各报表节点对应的连接关系语句拼接形成from语句段;其中,所述判断子单元用于判断链式有向图中当前报表节点后是否有连线;所述标记子单元用于在有的情况下,根据连线属性标记连线关联的两个报表的连接关系,并根据连线定位下一报表节点,将下一报表节点作为当前报表节点:所述第二确定子单元用于在没有的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述SQL筛选要素包括筛选条件,所述筛选条件传送至后台后作为对应报表对象中的目标属性;相应地,所述拼接单元包括:获取子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将所获取的目标属性拼接形成where语句段;其中,所述获取子单元用于获取链式有向图中当前报表节点中的报表标识所对应的报表对象中的目标属性;所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
在一些实施例中,所述链式有向图是由业务人员通过将图形化编辑界面上第一区域中的图形化报表组件拖动至第二区域时,根据第二区域内各图形化报表组件之间的位置关系确定的。
上述报表用SQL语句的生成装置的描述及有益效果可以参阅方法部分的描述及有益效果,不再赘述。
本发明实施例还提供了一种电子设备,如图9所示,该电子设备可以包括处理器901和存储器902,其中处理器901和存储器902可以通过总线或者其他方式连接,图9中以通过总线连接为例。
处理器901可以为中央处理器(Central Processing Unit,CPU)。处理器901还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的报表用SQL语句的生成方法对应的程序指令/模块(例如,图8所示的第一获取单元10、第二获取单元20、查询单元30和拼接单元40)。处理器901通过运行存储在存储器902中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据分类,即实现上述方法实施例中的报表用SQL语句的生成方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器902中,当被所述处理器901执行时,执行上述报表用SQL语句的生成方法。
上述电子设备具体细节可以参阅上述实施例中的相关描述和效果进行理解,此处不再赘述。
本说明书提供一种计算机存储介质,该计算机存储介质存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种报表用SQL语句的生成方法的步骤。
本说明书提供一种计算机程序产品,该计算机程序产品包含有计算机程序,该计算机程序被处理器执行时实现上述任一种报表用SQL语句的生成方法的步骤。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。
上述实施方式阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式的某些部分的方法。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (15)

1.一种报表用SQL语句的生成方法,其特征在于,包括:
获取业务人员编辑的多个报表的链式有向图;所述链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段;
获取业务人员通过人机交互界面选择并传送至后台的筛选条件;
基于所述链式有向图中的报表顺序,依次查询各报表中是否存在用于达到所述筛选条件的筛选要素;
根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句。
2.根据权利要求1所述的方法,其特征在于,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将各报表节点对应的筛选要素拼接至SQL语句中,拼接形成目标SQL语句:
查询链式有向图中当前报表节点中是否有筛选要素,在有的情况下记录当前报表节点对应的筛选要素;
判断在链式有向图中当前报表节点后是否有连线;
在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;在否的情况下,确定到达链式有向图的尾结点。
3.根据权利要求1所述的方法,其特征在于,所述SQL筛选要素包括业务人员勾选的需要查询到并显示的字段;
相应地,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将各报表节点对应的被筛选出的字段拼接形成select语句段;
查询链式有向图中当前报表节点中的报表标识所对应的报表中的字段,筛选出业务人员所勾选的字段;
判断在链式有向图中当前报表节点后是否有连线;
在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;在否的情况下,确定到达链式有向图的尾结点。
4.根据权利要求1所述的方法,其特征在于,所述SQL筛选要素包括业务人员勾选的需要查询到的字段所在的表的名称;
相应地,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将各报表节点对应的连接关系语句拼接形成from语句段;
判断链式有向图中当前报表节点后是否有连线;
在有的情况下,根据连线属性标记连线关联的两个报表的连接关系,并根据连线定位下一报表节点,将下一报表节点作为当前报表节点:
在没有的情况下,确定到达链式有向图的尾结点。
5.根据权利要求1所述的方法,其特征在于,所述SQL筛选要素包括筛选条件,所述筛选条件传送至后台后作为对应报表对象中的目标属性;
相应地,根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句,包括:循环执行以下步骤,直至到达链式有向图的尾节点后,将所获取的目标属性拼接形成where语句段;
获取链式有向图中当前报表节点中的报表标识所对应的报表对象中的目标属性;
判断在链式有向图中当前报表节点后是否有连线;
在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;在否的情况下,确定到达链式有向图的尾结点。
6.根据权利要求1所述的方法,其特征在于,所述链式有向图是由业务人员通过将图形化编辑界面上第一区域中的图形化报表组件拖动至第二区域时,根据第二区域内各图形化报表组件之间的位置关系确定的。
7.一种报表用SQL语句的生成装置,其特征在于,包括:
第一获取单元,用于获取业务人员编辑的多个报表的链式有向图;所述链式有向图包括多个报表节点和连线,报表节点包括以下属性:报表标识,连线包括以下属性:连线首端报表节点中的报表标识、连线尾端报表节点中的报表标识、连线两端报表的连接方式、连线两端报表的连接字段;
第二获取单元,用于获取业务人员通过人机交互界面选择并传送至后台的筛选条件;
查询单元,用于基于所述链式有向图中的报表顺序,依次查询各报表中是否存在用于达到所述筛选条件的筛选要素;
拼接单元,用于根据所述查询结果、所述链式有向图中连线的属性,拼接形成目标SQL语句。
8.根据权利要求7所述的装置,其特征在于,所述拼接单元包括:第一查询子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操纵,直至到达链式有向图的尾节点后,将各报表节点对应的筛选要素拼接至SQL语句中,拼接形成目标SQL语句;其中,
所述第一查询子单元用于查询链式有向图中当前报表节点中是否有筛选要素,在有的情况下记录当前报表节点对应的筛选要素;
所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;
所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;
所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
9.根据权利要求7所述的装置,其特征在于,所述SQL筛选要素包括业务人员勾选的需要查询到并显示的字段;
相应地,所述拼接单元包括:第二查询子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将各报表节点对应的被筛选出的字段拼接形成select语句段;其中,
所述第二查询子单元用于查询链式有向图中当前报表节点中的报表标识所对应的报表中的字段,筛选出业务人员所勾选的字段;
所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;
所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;
所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
10.根据权利要求7所述的装置,其特征在于,所述SQL筛选要素包括业务人员勾选的需要查询到的字段所在的表的名称;
相应地,所述拼接单元包括:判断子单元、标记子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将各报表节点对应的连接关系语句拼接形成from语句段;其中,
所述判断子单元用于判断链式有向图中当前报表节点后是否有连线;
所述标记子单元用于在有的情况下,根据连线属性标记连线关联的两个报表的连接关系,并根据连线定位下一报表节点,将下一报表节点作为当前报表节点:
所述第二确定子单元用于在没有的情况下,确定到达链式有向图的尾结点。
11.根据权利要求7所述的装置,其特征在于,所述SQL筛选要素包括筛选条件,所述筛选条件传送至后台后作为对应报表对象中的目标属性;
相应地,所述拼接单元包括:获取子单元、判断子单元、第一确定子单元和第二确定子单元,用于循环执行操作,直至到达链式有向图的尾节点后,将所获取的目标属性拼接形成where语句段;其中,
所述获取子单元用于获取链式有向图中当前报表节点中的报表标识所对应的报表对象中的目标属性;
所述判断子单元用于判断在链式有向图中当前报表节点后是否有连线;
所述第一确定子单元用于在是的情况下,根据所述连线定位下一个报表节点,并将下一个报表节点作为当前报表节点;
所述第二确定子单元用于在否的情况下,确定到达链式有向图的尾结点。
12.根据权利要求7所述的装置,其特征在于,所述链式有向图是由业务人员通过将图形化编辑界面上第一区域中的图形化报表组件拖动至第二区域时,根据第二区域内各图形化报表组件之间的位置关系确定的。
13.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器和所述存储器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而实现权利要求1至6任一项所述方法的步骤。
14.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求1至6任一项所述方法的步骤。
15.一种计算机程序产品,其特征在于,包含有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述方法的步骤。
CN202211162195.0A 2022-09-23 2022-09-23 报表用sql语句的生成方法、装置及电子设备 Pending CN115495508A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211162195.0A CN115495508A (zh) 2022-09-23 2022-09-23 报表用sql语句的生成方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211162195.0A CN115495508A (zh) 2022-09-23 2022-09-23 报表用sql语句的生成方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN115495508A true CN115495508A (zh) 2022-12-20

Family

ID=84470097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211162195.0A Pending CN115495508A (zh) 2022-09-23 2022-09-23 报表用sql语句的生成方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN115495508A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827644A (zh) * 2023-02-13 2023-03-21 明度智云(浙江)科技有限公司 一种基于可视化视图配置的报表生成方法、系统和服务器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827644A (zh) * 2023-02-13 2023-03-21 明度智云(浙江)科技有限公司 一种基于可视化视图配置的报表生成方法、系统和服务器

Similar Documents

Publication Publication Date Title
CN107273286B (zh) 针对任务应用的场景自动化测试平台及方法
US10338960B2 (en) Processing data sets in a big data repository by executing agents to update annotations of the data sets
US9122540B2 (en) Transformation of computer programs and eliminating errors
CN109491857B (zh) 一种基于规则引擎的数据监控方法、系统及终端设备
JP2000148461A (ja) ソフトウェアモデル及び既存のソ―スコ―ドを同期化させる方法及びその装置
CN106293891B (zh) 多维投资指标监督方法
Porkoláb et al. Codecompass: an open software comprehension framework for industrial usage
JP5745932B2 (ja) グラフデータに写像の像であるオブジェクトに対する操作を反映する方法、プログラム、および、システム
CN111400288A (zh) 数据质量检查方法及系统
Al-Saiyd Source code comprehension analysis in software maintenance
CN115495508A (zh) 报表用sql语句的生成方法、装置及电子设备
CN114116065A (zh) 获取拓扑图数据对象的方法、装置、及电子设备
CN108897678B (zh) 静态代码检测方法和静态代码检测系统、存储设备
CN108345658A (zh) 算法计算轨迹的分解处理方法、服务器及存储介质
Basirati et al. Towards systematic inconsistency identification for product service systems
US8949859B2 (en) Event-driven application systems and methods
Cabanillas et al. A mashup-based framework for business process compliance checking
JP2010140407A (ja) ソースコード検査装置
CN115757174A (zh) 一种数据库的差异检测方法及装置
CN102707956B (zh) 用于处理触发器返回结果不确定性的方法
CN104536897A (zh) 基于关键字的自动测试方法及系统
CN112463596B (zh) 测试用例数据的处理方法、装置、设备以及处理设备
CN113918204A (zh) 一种元数据脚本管理方法、装置、电子设备和存储介质
CN114020852A (zh) 知识图谱的展示方法和装置
CN112558959A (zh) 一种可视化的配置表联动修改方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination