System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种跨数据库多维数据层级汇总方法及装置制造方法及图纸_技高网

一种跨数据库多维数据层级汇总方法及装置制造方法及图纸

技术编号:43500374 阅读:12 留言:0更新日期:2024-11-29 17:06
本发明专利技术公开一种跨数据库多维数据层级汇总方法及装置,其中方法包括:S01、初始化参数,定义查询参数;S02、生成SQL查询列表,构建统计数据的SQL查询语句,构建统计的总记录SQL查询语句;S03、并行执行SQL查询,针对查询参数中的数据源信息建立与数据库的链接,对上一步构建的SQL查询语句集合中的每一条语句开启一个独立线程,一对一的到数据源中执行查询;S04、数据编织,针对上一步产生的多个数据集合进行数据合并,相同统计维度个数的记录相邻,并且按照维度层级从高到低排列,形成与rollup查询同样的效果。本发明专利技术一种跨数据库多维数据层级汇总方法及装置,既能实现跨越数据库平台差异、又能高效执行高级聚合操作,同时确保分页查询准确无误。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,尤其是一种跨数据库多维数据层级汇总方法及装置


技术介绍

1、在当代数据密集型应用中,高级数据分析功能已成为支撑业务决策与洞察市场趋势的关键。其中,对数据进行多维度的小计和统计需要复杂的数据聚合操作,如使用rollup、cube等高级聚合函数,对于生成多维度汇总数据至关重要。然而,这些功能在实际应用中暴露了一系列技术和实施上的挑战,特别是当涉及跨数据库平台的一致性、性能效率及分页查询的准确性时,问题尤为突出。

2、第一、跨平台差异与兼容性困境

3、尽管sql标准为高级聚合函数提供了一定的规范指导,但在具体实现层面,不同的数据库管理系统(dbms)之间存在着显著的差异。例如,oracle、sql server、mysql和postgresql等主流数据库,它们在支持rollup和cube的具体语法、功能细节及性能优化策略上各有千秋。这种不一致性给开发者带来了额外的负担,需要针对不同数据库编写和调试特定的查询语句,降低了代码的可移植性和维护性。

4、第二、性能挑战与资源消耗

5、应用如cube这样的全维度聚合功能,尽管能够提供详尽的汇总视图,但其计算成本高昂。随着参与聚合的维度数量增加,产生的结果集呈指数级膨胀,不仅消耗大量内存和cpu资源,还可能导致查询响应时间大幅延长,影响系统的实时性和用户体验。在大数据应用场景中,这种性能瓶颈尤为严重,成为制约分析效率的瓶颈。

6、第三、分页查询的复杂性

7、在实现分页功能时,传统的数据聚合查询设计往往忽视了聚合结果对分页逻辑的影响。直接对包含汇总行的结果集进行分页,不仅会导致记录数统计不准确,还可能引起页面内容的逻辑混乱,影响用户对数据的正常浏览和理解。尤其是在需要同时展示明细数据和汇总统计时,如何精确控制分页边界,保证每一页数据的完整性与连贯性,成为一大技术难题。


技术实现思路

1、为解决现有技术存在的问题,本专利技术提供一种跨数据库多维数据层级汇总方法及装置,既能实现跨越数据库平台差异、又能高效执行高级聚合操作,同时确保分页查询准确无误。

2、为实现上述目的,本专利技术采用下述技术方案:

3、在本专利技术一实施例中,提出了一种跨数据库多维数据层级汇总方法,该方法包括:

4、s01、初始化参数,定义查询参数,包括:数据源信息、查询表名、统计维度信息、统计指标信息、过滤信息、分页信息;

5、进一步地,所述s01中定义查询参数具体包括:

6、数据源信息,source:数据库连接信息;

7、查询表名,table:数据源表名;

8、统计维度信息,dims:定义了用于分组的维度数组;

9、统计指标信息,metrics:定义了指标聚合信息的二维数组,需要指定的聚合函数、对应统计列名、别名;

10、过滤信息,filter:是用户数据过滤的条件,即用户自定义输入;

11、分页信息,page:包含当前页和每页展示记录数。

12、s02、生成sql查询列表,构建统计数据的sql查询语句,构建统计的总记录sql查询语句;

13、进一步地,所述s02包括:

14、s021、构建统计数据的sql查询语句,在每次循环中,对于给定维度数组dims从后往前递减循环,从最高维度组合到最低维度,逐步减少维度数组的长度,以生成不同粒度的分组,直到没有分组维度,即从最全组合到最小子集,为降维处理;

15、所述dims为统计维度信息。

16、进一步地,所述s021包括:

17、s0211、创建基础sql结构,包括固定的结构:select${dims},${metrics}from${table}group by${dims},其中${dims}标识递减的统计维度,${metrics}标识参数中的统计指标,${table}标识查询表;

18、s0212、生成针对不同维度组合的sql查询,动态添加计数列_dim_cnt记录当前查询维度的数量,_dim_cnt作为一列被添加到查询中,其值等于当前查询所使用的维度数量;

19、s0213、查询参数中设置了过滤信息filter,需要拼接查询条件;

20、s0214、查询参数中设置了分页信息page,需要添加分页限制条件。

21、s022、构建统计的总记录sql查询语句,将上述sql中第一条包含全部维度分组的sql,去除分页条件后作为子查询统计记录数,结构如:select count(*)as total from(${去除分页条件的第一条sql})t;

22、s023、生成构建出统计维度数+1条统计数据sql查询语句和一条统计总记录数sql。

23、s03、并行执行sql查询,针对查询参数中的数据源信息建立与数据库的链接,对上一步构建的sql查询语句集合中的每一条语句开启一个独立线程,一对一的到数据源中执行查询;

24、这种方式可以有效利用多核cpu资源,加快数据处理速度,尤其在处理大数据量时效果更为明显。

25、进一步地,所述s03中每一条sql查询语句都会查询出一个数据集合,最后一条记录排除作为分页总记录数total,用于用户计算分页;剩余的数据集合为统计数据集合,对这些数据集合进行数据编织,合并成一个集合。

26、s04、数据编织,针对上一步产生的多个数据集合,在统计分组维度上是无序的,不够直观,需要进行数据合并,确保具有相同统计维度个数的记录相邻,并且按照维度层级从高到低排列,形成与rollup查询同样的效果。

27、进一步地,所述rollup函数在sql中主要用于数据分组汇总,中文可解释为“滚动汇总”或“层次化聚合”;rollup不仅对数据进行基本的分组计算,如同group by操作,还能自动计算出所有子分组以及整个数据集的汇总结果。

28、在group by子句中使用rollup时,rollup会依次生成从最细粒度到最高层级的所有汇总。

29、进一步地,所述s04包括:

30、s041、所有查询结果根据sql查询语句的顺序,逐一合并追加到一个列表中,该集合为统计数据集合;

31、s042、获取分页总记录数,从数据集中获取最后一条记录作为分页总记录数total,用于用户计算分页,将该记录从集合中排除,不参与后续排序;

32、s043、记录第一个集合记录数,即最细粒度数据记录数begin,作为排序开始位置;

33、s044、遍历数据,通过两层嵌套循环遍历数据列表,外层循环从特定的起始位置begin开始,获取每一个数据项为t,内层循环则逐对比较数据列表中的相邻项,对于每一对相邻的数据项a和b,然后会将a、b、t项的维度值,根据t的维度计数(_dim_cnt)的值转换成一个字符串形式,得到字符串a、b、t。同本文档来自技高网...

【技术保护点】

1.一种跨数据库多维数据层级汇总方法,其特征在于,该方法包括:

2.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述S01中定义查询参数具体包括:

3.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述S02包括:

4.根据权利要求3所述的跨数据库多维数据层级汇总方法,其特征在于,所述S021包括:

5.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述S03中每一条SQL查询语句均对应查询出一个数据集合,最后一条记录排除作为分页总记录数total,用于用户计算分页;剩余的数据集合为统计数据集合,对这些数据集合进行数据编织,合并成一个集合。

6.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述S04中ROLLUP函数在SQL中主要用于数据分组汇总,中文解释为“滚动汇总”或“层次化聚合”;ROLLUP不仅对数据进行基本的分组计算,还自动计算出所有子分组以及整个数据集的汇总结果。

7.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述S04包括:

8.一种跨数据库多维数据层级汇总装置,其特征在于,该装置包括:

9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7任一项所述方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-7任一项所述方法的计算机程序。

...

【技术特征摘要】

1.一种跨数据库多维数据层级汇总方法,其特征在于,该方法包括:

2.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述s01中定义查询参数具体包括:

3.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述s02包括:

4.根据权利要求3所述的跨数据库多维数据层级汇总方法,其特征在于,所述s021包括:

5.根据权利要求1所述的跨数据库多维数据层级汇总方法,其特征在于,所述s03中每一条sql查询语句均对应查询出一个数据集合,最后一条记录排除作为分页总记录数total,用于用户计算分页;剩余的数据集合为统计数据集合,对这些数据集合进行数据编织,合并成一个集合。

6.根据权利要求1所述的跨数据库多维数...

【专利技术属性】
技术研发人员:闫一帅
申请(专利权)人:中盈优创资讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1