一种指标生成sql的方法及装置与流程

文档序号:38337676发布日期:2024-06-19 11:51阅读:7来源:国知局
一种指标生成sql的方法及装置与流程

本申请涉及大数据,尤其是一种指标生成sql的方法及装置。


背景技术:

1、指标管理系统是一个用于统一管理和维护企业或组织中各类指标的重要工具。通过明确的指标定义、建模、数据落地和分析功能,系统可以帮助企业更好地理解和利用数据,提升业务决策的准确性和效率,表格是指标体系最常用的展现形式,通过将大量数据和信息进行分类、排列,能够以直观的方式展示各个指标之间的关系和数据变化情况。

2、现有技术中根据计算逻辑生成sql语句通常有下面两种方式:

3、1、直接使用stringbuilder拼接关键字以及字段名称,虽然可以实现动态构建查询,但可维护性较差。因为拼接逻辑通常较为复杂,不易阅读和理解,当数据库结构或业务逻辑变更时,需要手动修改多处拼接代码,容易出错且维护困难;

4、2、使用sql模板,然后替换可变的内容,这种拼接方式虽然可以复用一些sql模板,可以提高开发效率,但也存在可维护性差的问题。因为模板中的逻辑和条件判断往往较为复杂,不易阅读和理解。当业务需求变更时,需要修改模板中的多个地方,容易引发错误。此外,模板的复用性也可能受限,导致大量相似但略有差异的模板出现,进一步增加了维护难度。


技术实现思路

1、本申请的目的在于克服现有技术中将指标生成的sql语句可维护性较差的问题,提供一种指标生成sql的方法及装置。

2、第一方面,提供了一种指标生成sql的方法,包括:

3、获取主表和关联表的信息,并根据所述主表和关联表的信息生成表关联条件;

4、处理表的度量以及维度字段并生成查询sql;

5、根据表设置的分区字段或条件拼接sql查询条件;

6、判断所述查询字段是否包含聚合函数,并拼接分组条件sql。

7、进一步的,获取主表信息和关联表信息,并根据所述主表信息和关联表信息生成表关联条件,包括:

8、查询主表和关联表的信,其中,所述信息包括表名、表别名、表唯一标识、表类型和第一查询条件;

9、解析主表并判断所述主表是否为原生表,若所述主表为非原生表则根据主表的查询条件生成子查询;

10、解析关联表并根据关联类型生成表关联条件;

11、判断关联类型是否为全关联,若所述关联类型为全关联,则在表关联条件的关联字段上拼接coalesce关键字。

12、进一步的,处理所述表的度量以及维度字段并生成查询sql,包括:

13、定义abstractcolumnaction为抽象类;

14、获取查询列并将查询列的所有字段经过列计算器处理,并判断查询列是否为度量列;

15、若为度量列,则依次经过列聚合器、空值处理器和精度处理器处理;

16、若不是度量列,则将经过合并处理器处理;

17、根据精度处理器和合并处理器的处理结果生成查询sql。

18、进一步的,根据所述表设置的分区字段或条件并拼接sql查询条件,包括:

19、创建树形结构的查询条件,根节点用于存储计算逻辑,其中,计算逻辑包括:与、或、等于,若计算逻辑为等于,则查询条件的conditionfield属性存储具体的条件;

20、获取表的表类型,并判断表是否为分区表或拉链表,若为分区表,则根据分区字段拼接分区查询条件,若为拉链表,则根据开始时间字段和结束时间字段拼接分区查询条件;

21、递归查询条件拼接成表查询条件;

22、将所述分区查询条件和表查询条件拼接成sql查询条件。

23、进一步的,判断所述查询字段是否包含聚合函数,并拼接分组条件sql,包括:

24、判断查询字段是否包含聚合函数;

25、获取需要分组的列信息:若查询字段中包含聚合函数,则获取聚合列之外的其他列信息,若查询字段中不包含聚合函数,则列信息为空;

26、拼接分组条件sql:判断是否有需要分组的列,若有,则拼接依次拼接为分组条件sql,若无,则为空。

27、进一步的,通过查询字段的字符串中的是否包含聚合函数所对应的关键字来判断查询字段是否包含聚合函数。

28、第二方面,提供了一种指标生成sql的装置,包括:

29、表关联条件生成模块,用于获取主表和关联表的信息,并根据所述主表和关联表的信息生成表关联条件;

30、查询sql生成模块,用于处理表的度量以及维度字段并生成查询sql;

31、sql查询条件拼接模块,用于根据表设置的分区字段或条件拼接sql查询条件;

32、分组条件sql拼接模块,用于判断所述查询字段是否包含聚合函数,并拼接分组条件sql。

33、第三方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。

34、第四方面,提供了一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如上述第一方面中的任意一种实现方式中方法的步骤。

35、第五方面,提供了一种电子设备,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如上述第一方面中的任意一种实现方式中的方法。

36、本申请具有如下有益效果:本申请通过将sql语句抽象为对象,使用责任链设计模式、模板设计模式结合sql基本的语法以及sql开发规范,能够通过代码实现sql语句的半自动拼接,使得拼接sql的效率更快、正确率更高,另外,由于只需要维护抽象出来的对象,从而能够有效的提高sql语句的可维护性。



技术特征:

1.一种指标生成sql的方法,其特征在于,包括:

2.根据权利要求1所述的指标生成sql的方法,其特征在于,获取主表信息和关联表信息,并根据所述主表信息和关联表信息生成表关联条件,包括:

3.根据权利要求2所述的指标生成sql的方法,其特征在于,处理所述表的度量以及维度字段并生成查询sql,包括:

4.根据权利要求2所述的指标生成sql的方法,其特征在于,根据所述表设置的分区字段或条件并拼接sql查询条件,包括:

5.根据权利要求1-4中任一项所述的指标生成sql的方法,其特征在于,判断所述查询字段是否包含聚合函数,并拼接分组条件sql,包括:

6.根据权利要求5所述的指标生成sql的方法,其特征在于,通过查询字段的字符串中的是否包含聚合函数所对应的关键字来判断查询字段是否包含聚合函数。

7.一种指标生成sql的装置,其特征在于,包括:

8.一种计算机程序产品,其特征在于,所述计算机程序产品内存储有计算机指令,所述计算机指令被处理器执行时实现权利要求1-6任一所述的方法。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储用于设备执行的程序代码,该程序代码包括用于执行如权利要求1-6中任一项所述方法的步骤。

10.一种电子设备,其特征在于,所述电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-6中任一项所述的方法。


技术总结
本申请涉及大数据技术领域,解决了现有技术中将指标生成的sql语句可维护性较差的问题,公开了一种指标生成sql的方法及装置,该方法包括:获取主表和关联表的信息,并根据所述主表和关联表的信息生成表关联条件;处理表的度量以及维度字段并生成查询sql;根据表设置的分区字段或条件拼接sql查询条件;判断所述查询字段是否包含聚合函数,并拼接分组条件sql,该方法能够通过代码实现sql语句的半自动拼接,使得拼接sql的效率更快、正确率更高,另外,由于只需要维护抽象出来的对象,从而能够有效的提高sql语句的可维护性。

技术研发人员:杨崇伦,宁海元,赵章万
受保护的技术使用者:杭州玳数科技有限公司
技术研发日:
技术公布日:2024/6/18
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1