CN109697211B - 交叉表导出数据的处理方法及系统、计算机可读存储介质 - Google Patents

交叉表导出数据的处理方法及系统、计算机可读存储介质 Download PDF

Info

Publication number
CN109697211B
CN109697211B CN201811497891.0A CN201811497891A CN109697211B CN 109697211 B CN109697211 B CN 109697211B CN 201811497891 A CN201811497891 A CN 201811497891A CN 109697211 B CN109697211 B CN 109697211B
Authority
CN
China
Prior art keywords
cross
sql
acquiring
execution
execution sql
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.)
Active
Application number
CN201811497891.0A
Other languages
English (en)
Other versions
CN109697211A (zh
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.)
Yonyou Network Technology Co Ltd
Original Assignee
Yonyou Network Technology Co Ltd
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 Yonyou Network Technology Co Ltd filed Critical Yonyou Network Technology Co Ltd
Priority to CN201811497891.0A priority Critical patent/CN109697211B/zh
Publication of CN109697211A publication Critical patent/CN109697211A/zh
Application granted granted Critical
Publication of CN109697211B publication Critical patent/CN109697211B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种交叉表导出数据的处理方法及系统、计算机可读存储介质。其中该处理方法,包括:获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;获取一个交叉指标,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句;获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中。本发明在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免交叉表执行SQL数据行数过大,并且有效的提高交叉表的导出速度。

Description

交叉表导出数据的处理方法及系统、计算机可读存储介质
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种交叉表导出数据的处理方法,一种交叉表导出数据的处理系统,及一种计算机可读存储介质。
背景技术
报表数据的输出是用户在使用包含报表的软件产品的常见操作。通常情况下,开发人员都会在产品上提供导出的选项,然而实际中使用的交叉表虽然在展现上体现的行数不多,但是实际SQL查询出的数据量是非常大的,并且在导出的过程中还要填充表格模型等,这就给服务器及客户端造成不小的压力,导出的时间也很长。图1示出了现有技术中的交叉表导出数据的原理,例如:select部门,姓名,年份,薪资项目,sum(money)from tablegroup by部门,姓名,年份,薪资项目order by部门,姓名,年份,薪资项目。导出结果如表1所示:
表1
Figure BDA0001897358180000011
续表
Figure BDA0001897358180000021
现有技术中的交叉表的导出方式存在以下的几点问题:
1、一次性查询展现并按照显示输出的问题。
查询行数放大后,会导致客户端内存占用较大,如果同时打开多张报表或多个查询节点,可能会导致内存溢出,系统无法响应,必须要重新进入系统才可以,造成非常差的用户体验。并且查询行数过多时,用户在前端查看也并不方便,如果多个用户同时在前端反复去查询展现这么大的数据量,那么对服务器来说也是一个不小的压力,因此大多数软件产品会对此有一定的行数限制。
2、交叉表全部数据导出遇到数据量大的问题。
使用交叉表时用户虽然在表中看上去展现的行数不多,但是实际上SQL搜索出的数据量还是非常大的,如果在行维度或是列维度设置较多时,数据集呈现上百万的量是很常见的。这样会给中间件造成不小的压力。例如一个900行,DL(自定义)列的交叉表,实际在SQL执行后搜索出的行数就有10万多行,在实际应用中几千行的交叉表还是很常见的,那么这样就会达到上百万行的数据量。
3、现有的导出方式无法实现分批导出,需要在后台代码中转换成交叉表模型,可能会造成分批行的行数据不全。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的一方面在于提出了一种交叉表导出数据的处理方法。
本发明的另一方面在于提出了一种交叉表导出数据的处理系统。
本发明的再一方面在于提出了计算机可读存储介质。
有鉴于此,本发明提出了一种交叉表导出数据的处理方法,包括:获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;获取一个交叉指标,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句,SQL语句用于对交叉指标的交叉数据进行行对列的转换;获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中。
根据本发明的交叉表导出数据的处理方法,在获得原始交叉表模型的执行SQL后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行SQL中,形成第一执行SQL;在获取到一个交叉指标后,对第一执行SQL进行转化,获得一个交叉指标的SQL语句,通过执行SQL语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行SQL进行转化,从而获得每个交叉指标的SQL语句,最后将多个SQL语句合并起来,形成最终的执行SQL,即目标执行SQL,根据最终的执行SQL进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理方法,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行SQL数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。
在上述技术方案中,优选地,所述获取一个交叉指标的步骤,具体包括:根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标。
在该技术方案中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行SQL进行一次改变,得到该交叉指标的SQL语句,通过这个SQL语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行SQL数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。
在上述任一技术方案中,优选地,交叉表导出数据的处理方法,还包括:在获得目标执行SQL的步骤之后,根据交叉指标的数量,向目标执行SQL增加排序与分组SQL语句。
在该技术方案中,在获得目标执行SQL后,根据交叉指标的数量向目标执行SQL中增加排序与分组SQL语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。
在上述任一技术方案中,优选地,交叉表导出数据的处理方法,还包括:获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。
在该技术方案中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。
在上述任一技术方案中,优选地,获取原始交叉表模型的执行SQL的步骤,具体包括:获取执行SQL的参数,根据执行SQL的参数确定原始交叉表模型的执行SQL。
在该技术方案中,根据用户输入的执行SQL的参数,可以获得原始交叉表模型的执行SQL,基于原始交叉表模型及其执行SQL进行转化,在数据库层面实现行对列的转换,减少一次性执行SQL查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。
本发明还提出了一种交叉表导出数据的处理系统,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序以:获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;获取一个交叉指标,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句,SQL语句用于对交叉指标的交叉数据进行行对列的转换;获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中。
根据本发明的交叉表导出数据的处理系统,在获得原始交叉表模型的执行SQL后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行SQL中,形成第一执行SQL;在获取到一个交叉指标后,对第一执行SQL进行转化,获得一个交叉指标的SQL语句,通过执行SQL语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行SQL进行转化,从而获得每个交叉指标的SQL语句,最后将多个SQL语句合并起来,形成最终的执行SQL,即目标执行SQL,根据最终的执行SQL进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理系统,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行SQL数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。
在上述技术方案中,优选地,处理器,具体用于执行计算机程序以:根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标。
在该技术方案中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行SQL进行一次改变,得到该交叉指标的SQL语句,通过这个SQL语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行SQL数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。
在上述任一技术方案中,优选地,处理器,还用于执行计算机程序以:在获得目标执行SQL的步骤之后,根据交叉指标的数量,向目标执行SQL增加排序与分组SQL语句。
在该技术方案中,在获得目标执行SQL后,根据交叉指标的数量向目标执行SQL中增加排序与分组SQL语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。
在上述任一技术方案中,优选地,处理器,还用于执行计算机程序以:获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。
在该技术方案中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。
在上述任一技术方案中,优选地,处理器,具体用于执行计算机程序以:获取执行SQL的参数,根据执行SQL的参数确定原始交叉表模型的执行SQL。
在该技术方案中,根据用户输入的执行SQL的参数,可以获得原始交叉表模型的执行SQL,基于原始交叉表模型及其执行SQL进行转化,在数据库层面实现行对列的转换,减少一次性执行SQL查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。
本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现了如上述技术方案中任一项的交叉表导出数据的处理方法的步骤。
根据本发明的计算机可读存储介质,其上存储的计算机程序被处理器执行时实现了如上述技术方案中任一项的交叉表导出数据的处理方法的步骤,因而该计算机可读存储介质能够实现该交叉表导出数据的处理方法的全部有益效果,不再赘述。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了相关技术中的交叉表导出数据的原理示意图;
图2示出了根据本发明的一个实施例的交叉表导出数据的处理方法的流程示意图;
图3示出了根据本发明的另一个实施例的交叉表导出数据的处理方法的流程示意图;
图4示出了根据本发明的再一个实施例的交叉表导出数据的处理方法的流程示意图;
图5示出了根据本发明的一个具体实施例的交叉表导出数据的处理方法的流程示意图;
图6示出了根据本发明的一个实施例的交叉表导出数据的处理系统的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
如图2所示,根据本发明的一个实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:
步骤102,获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;
步骤104,获取一个交叉指标,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句,SQL语句用于对交叉指标的交叉数据进行行对列的转换;
步骤106,获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;
步骤108,根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中。
本发明实施例提供的交叉表导出数据的处理方法,在获得原始交叉表模型的执行SQL后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行SQL中,形成第一执行SQL;在获取到一个交叉指标后,对第一执行SQL进行转化,获得一个交叉指标的SQL语句,通过执行SQL语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行SQL进行转化,从而获得每个交叉指标的SQL语句,最后将多个SQL语句合并起来,形成最终的执行SQL,即目标执行SQL,根据最终的执行SQL进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理方法,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行SQL数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。
如图3所示,根据本发明的另一个实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:
步骤202,获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;
步骤204,根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标;
步骤206,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句,SQL语句用于对交叉指标的交叉数据进行行对列的转换;
步骤208,获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;
步骤210,根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中。
在该实施例中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行SQL进行一次改变,得到该交叉指标的SQL语句,通过这个SQL语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行SQL数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。
在上述任一实施例中,优选地,交叉表导出数据的处理方法,还包括:在获得目标执行SQL的步骤之后,根据交叉指标的数量,向目标执行SQL增加排序与分组SQL语句。
在该实施例中,在获得目标执行SQL后,根据交叉指标的数量向目标执行SQL中增加排序与分组SQL语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。
如图4所示,根据本发明的再一个实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:
步骤302,获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;
步骤304,根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标;
步骤306,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句,SQL语句用于对交叉指标的交叉数据进行行对列的转换;
步骤308,获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL,并根据交叉指标的数量,向目标执行SQL增加排序与分组SQL语句;
步骤310,根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中;
步骤312,获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。
在该实施例中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。
在上述任一实施例中,优选地,获取原始交叉表模型的执行SQL的步骤,具体包括:获取执行SQL的参数,根据执行SQL的参数确定原始交叉表模型的执行SQL。
在该实施例中,根据用户输入的执行SQL的参数,可以获得原始交叉表模型的执行SQL,基于原始交叉表模型及其执行SQL进行转化,在数据库层面实现行对列的转换,减少一次性执行SQL查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。
如图5所示,根据本发明的一个具体实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:
步骤402,转换原始SQL,在数据库层面实现行对列的转换等;
步骤404,填充交叉表,分批导出。
本发明实施例提供的交叉表导出数据的处理方法,通过这种SQL的转换方式既满足交叉表的全部导出又减轻了给服务器带来的一次性SQL数据行数过多的压力,并且导出全部数据时效率明显增快很多,有良好的用户体验。
如图6所示,根据本发明的一个实施例的交叉表导出数据的处理系统的示意图。其中,该交叉表导出数据的处理系统500,包括:
存储器502,用于存储计算机程序;
处理器504,用于执行计算机程序以:获取原始交叉表模型的执行SQL;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行SQL增加计算字段,得到第一执行SQL;获取一个交叉指标,根据交叉指标对第一执行SQL进行转换,以获得交叉指标对应的SQL语句,SQL语句用于对交叉指标的交叉数据进行行对列的转换;获得所有交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;根据目标执行SQL进行查询,得到结果集,将结果集展现在目标交叉表模型中。
本发明实施例的交叉表导出数据的处理系统500,在获得原始交叉表模型的执行SQL后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行SQL中,形成第一执行SQL;在获取到一个交叉指标后,对第一执行SQL进行转化,获得一个交叉指标的SQL语句,通过执行SQL语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行SQL进行转化,从而获得每个交叉指标的SQL语句,最后将多个SQL语句合并起来,形成最终的执行SQL,即目标执行SQL,根据最终的执行SQL进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理系统500,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行SQL数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。
在本发明的一个实施例中,优选地,处理器504,具体用于执行计算机程序以:根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标。
在该实施例中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行SQL进行一次改变,得到该交叉指标的SQL语句,通过这个SQL语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行SQL数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。
在本发明的一个实施例中,优选地,处理器504,还用于执行计算机程序以:在获得目标执行SQL的步骤之后,根据交叉指标的数量,向目标执行SQL增加排序与分组SQL语句。
在该实施例中,在获得目标执行SQL后,根据交叉指标的数量向目标执行SQL中增加排序与分组SQL语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。
在本发明的一个实施例中,优选地,处理器504,还用于执行计算机程序以:获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。
在该实施例中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。
在本发明的一个实施例中,优选地,处理器504,具体用于执行计算机程序以:获取执行SQL的参数,根据执行SQL的参数确定原始交叉表模型的执行SQL。
在该实施例中,根据用户输入的执行SQL的参数,可以获得原始交叉表模型的执行SQL,基于原始交叉表模型及其执行SQL进行转化,在数据库层面实现行对列的转换,减少一次性执行SQL查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。
具体实施例,提供了一种交叉表导出数据的处理系统。该交叉表导出数据的处理系统,包括:原始交叉表模型执行SQL的构建装置,转化前的字段构建装置,SQL转化装置,填充模型装置,分批导出装置。其中,
原始交叉表模型执行SQL的构建装置,用于获取执行sql的参数,根据执行sql的参数获得原始交叉表模型的执行sql。
转化前的字段构建装置,用于从交叉区域中获得列维度字段集;根据列维度字段集构建计算字段;以及往执行sql中增加计算字段,例如:
select*from table pivot sum(money)for年份_薪资项目in(2017_底薪,2017_奖金,2017_期权,2018_底薪,2018_奖金,2018_期权)。
SQL转化装置,具体用于:
(1)获得一个指标的交叉SQL,具体为:根据查询参数获得交叉指标信息;获得列维度的值,用于构建行转列之后的表头,如select distinct(#colFieldName#)from tableorder by(#colFieldName#);通过在数据库中行转列的转换方式,获得一个指标的交叉sql,select*from table pivot(sum(#mesaseFldname#)for(#colFieldName#)in(#values#));
(2)获得所有指标的交叉sql;
(3)获得最终的执行sql,具体为:如果存在多个指标,则将所有指标的sql进行join,例如:select*from temp1 left join temp2 on temp1.x1=temp2.x1 andtemp1.x2=temp2.x2 left join temp3 on temp2.x1=temp3.x1 and emp2.x2=temp3.x2;
根据最终的交叉sql执行查询,查询最终的结果集:
单一指标:finalSql=finalSql+orderSql;
多个指标:finalSql=finalSql+groupSql+orderSql
填充模型装置,用于获得表格中需要展现的列头;将结果集展现在模型中;执行导出之前的处理,可用户扩展;
分批导出装置,用于获取用户的导出路径等信息;按照固定行数(例如每批5000行)进行分批导出;分批导出结束获得最终的导出文件。
采用本发明实施例提供的交叉表导出数据的处理系统,导出交叉表如表2所示:
表2
Figure BDA0001897358180000141
本发明实施例提供的交叉表导出数据的处理系统,通过这种SQL的转换方式既满足交叉表的全部导出又减轻了给服务器带来的一次性SQL数据行数过多的压力,并且导出全部数据时效率明显增快很多,有良好的用户体验。
本发明的实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现了如上述任一实施例中的交叉表导出数据的处理方法的步骤,因而该计算机可读存储介质能够实现该交叉表导出数据的处理方法的全部有益效果,不再赘述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种交叉表导出数据的处理方法,其特征在于,包括:
获取原始交叉表模型的执行SQL;
从所述原始交叉表模型的交叉区域中获取列维度字段集,根据所述列维度字段集构建计算字段,向所述执行SQL增加所述计算字段,得到第一执行SQL;
获取一个交叉指标,根据所述交叉指标对所述第一执行SQL进行转换,以获得所述交叉指标对应的SQL语句,所述SQL语句用于对所述交叉指标的交叉数据进行行对列的转换;
获得所有所述交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;
根据所述目标执行SQL进行查询,得到结果集,将所述结果集展现在目标交叉表模型中。
2.根据权利要求1所述的交叉表导出数据的处理方法,其特征在于,所述获取一个交叉指标的步骤,具体包括:
根据查询参数获得交叉指标信息;
根据所述交叉指标信息获取列维度的值;
根据所述列维度的值,确定一个所述交叉指标。
3.根据权利要求2所述的交叉表导出数据的处理方法,其特征在于,还包括:
在获得所述目标执行SQL的步骤之后,根据所述交叉指标的数量,向所述目标执行SQL增加排序与分组SQL语句。
4.根据权利要求3所述的交叉表导出数据的处理方法,其特征在于,还包括:
获取导出路径信息,并按照预设行数分批导出所述目标交叉表模型中的数据。
5.根据权利要求1至4中任一项所述的交叉表导出数据的处理方法,其特征在于,所述获取原始交叉表模型的执行SQL的步骤,具体包括:
获取执行SQL的参数,根据所述执行SQL的参数确定所述原始交叉表模型的执行SQL。
6.一种交叉表导出数据的处理系统,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序以:
获取原始交叉表模型的执行SQL;
从所述原始交叉表模型的交叉区域中获取列维度字段集,根据所述列维度字段集构建计算字段,向所述执行SQL增加所述计算字段,得到第一执行SQL;
获取一个交叉指标,根据所述交叉指标对所述第一执行SQL进行转换,以获得所述交叉指标对应的SQL语句,所述SQL语句用于对所述交叉指标的交叉数据进行行对列的转换;
获得所有所述交叉指标对应的SQL语句,并进行合并,得到目标执行SQL;
根据所述目标执行SQL进行查询,得到结果集,将所述结果集展现在目标交叉表模型中。
7.根据权利要求6所述的交叉表导出数据的处理系统,其特征在于,所述处理器,具体用于执行所述计算机程序以:
根据查询参数获得交叉指标信息;
根据所述交叉指标信息获取列维度的值;
根据所述列维度的值,确定一个所述交叉指标。
8.根据权利要求7所述的交叉表导出数据的处理系统,其特征在于,所述处理器,还用于执行所述计算机程序以:
在获得所述目标执行SQL的步骤之后,根据所述交叉指标的数量,向所述目标执行SQL增加排序与分组SQL语句。
9.根据权利要求8所述的交叉表导出数据的处理系统,其特征在于,所述处理器,还用于执行所述计算机程序以:
获取导出路径信息,并按照预设行数分批导出所述交叉表模型中的数据。
10.根据权利要求6至9中任一项所述的交叉表导出数据的处理系统,其特征在于,所述处理器,具体用于执行所述计算机程序以:
获取执行SQL的参数,根据所述执行SQL的参数确定所述原始交叉表模型的执行SQL。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现了如权利要求1至5中任一项所述的交叉表导出数据的方法的步骤。
CN201811497891.0A 2018-12-07 2018-12-07 交叉表导出数据的处理方法及系统、计算机可读存储介质 Active CN109697211B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811497891.0A CN109697211B (zh) 2018-12-07 2018-12-07 交叉表导出数据的处理方法及系统、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811497891.0A CN109697211B (zh) 2018-12-07 2018-12-07 交叉表导出数据的处理方法及系统、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109697211A CN109697211A (zh) 2019-04-30
CN109697211B true CN109697211B (zh) 2020-12-01

Family

ID=66230392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811497891.0A Active CN109697211B (zh) 2018-12-07 2018-12-07 交叉表导出数据的处理方法及系统、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109697211B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427849A (zh) * 2020-02-27 2020-07-17 深圳壹账通智能科技有限公司 数据处理方法、电子装置及存储介质
CN112115683A (zh) * 2020-09-29 2020-12-22 深圳市汉云科技有限公司 一种基于二维报表转换的数据统计方法、装置及终端设备
CN115544153B (zh) * 2022-12-01 2023-03-10 北京维恩咨询有限公司 数据多维度交叉分析方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021839A (zh) * 2007-03-23 2007-08-22 北京润乾信息系统技术有限公司 非线性报表生成方法
US8589337B2 (en) * 2007-11-02 2013-11-19 International Business Machines Corporation System and method for analyzing data in a report
CN103886085A (zh) * 2014-03-28 2014-06-25 浪潮软件集团有限公司 一种通用的可行列变换交叉报表方法
JP2015153000A (ja) * 2014-02-12 2015-08-24 一般社団法人日本マーケティング・リテラシー協会 データ分析システム
CN108874894A (zh) * 2018-05-21 2018-11-23 平安科技(深圳)有限公司 交叉表导出方法、装置、计算机设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021839A (zh) * 2007-03-23 2007-08-22 北京润乾信息系统技术有限公司 非线性报表生成方法
US8589337B2 (en) * 2007-11-02 2013-11-19 International Business Machines Corporation System and method for analyzing data in a report
JP2015153000A (ja) * 2014-02-12 2015-08-24 一般社団法人日本マーケティング・リテラシー協会 データ分析システム
CN103886085A (zh) * 2014-03-28 2014-06-25 浪潮软件集团有限公司 一种通用的可行列变换交叉报表方法
CN108874894A (zh) * 2018-05-21 2018-11-23 平安科技(深圳)有限公司 交叉表导出方法、装置、计算机设备和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
automatic data mining cross tables with dominate cells using mpt models;You Yuan,Qi Huan,Hu Xiangen;《2010IEEE》;20101231;全文 *
Semi-automatic Extraction of Cross-Table Data from a set of Spreadsheets;Alaaeddin Swidan,Felienne Hermans;《End-User Development: 6th International Symposium》;20170531;全文 *
动态交叉表Web直接呈现的研究与实现;刘宗斗;《电脑编程技巧与维护》;20150831;全文 *
对于交叉表的实现及多重表头的应用;oldkingsir;《https://www.cnblogs.com/oldkingsir/archive/2008/07/10/2365647.html》;20080710;1-11 *

Also Published As

Publication number Publication date
CN109697211A (zh) 2019-04-30

Similar Documents

Publication Publication Date Title
CN109697211B (zh) 交叉表导出数据的处理方法及系统、计算机可读存储介质
JP7000341B2 (ja) 機械学習に基づくウェブインタフェース生成及びテストシステム
US10558659B2 (en) Techniques for dictionary based join and aggregation
US9436672B2 (en) Representing and manipulating hierarchical data
CN105488073A (zh) 一种生成报表表头的方法和装置
US20180129964A1 (en) Method, apparatus, and computer storage medium for pre-selecting and sorting push information
CN112256684B (zh) 一种报表生成方法、终端设备及存储介质
CN106294301B (zh) 报表生成方法和装置
EP3617910A1 (en) Method and apparatus for displaying textual information
US20200050695A1 (en) Navigation platform for performing search queries
CN116468010A (zh) 报表生成方法、装置、终端及存储介质
CN114943013A (zh) 一种效能评估方法、系统、计算设备以及存储介质
US10769162B2 (en) Generating business intelligence analytics data visualizations with genomically defined genetic selection
US20170255752A1 (en) Continuous adapting system for medical code look up
CN113535916B (zh) 一种基于表格的问答方法、装置及计算机设备
US12056446B2 (en) Method and system for improved spreadsheet analytical functioning
CN112508119A (zh) 特征挖掘组合方法、装置、设备及计算机可读存储介质
CN110245341B (zh) 标识码批量生成方法及装置
CN111611267A (zh) 一种将数据库数据转换为json对象配置可视化图表的方法
CN107977459B (zh) 报表生成方法及装置
Teate SQL for Data Scientists: A Beginner's Guide for Building Datasets for Analysis
US20070255746A1 (en) Method for Processing Associated Software Data
CN115237940A (zh) 一种数据查询方法、装置和设备
CN111177236B (zh) 基于医养照护场景的量表生成方法、系统、设备及介质
CN112259099B (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
GR01 Patent grant
GR01 Patent grant