CN110019357B - 数据库查询脚本生成方法及装置 - Google Patents

数据库查询脚本生成方法及装置 Download PDF

Info

Publication number
CN110019357B
CN110019357B CN201710908460.8A CN201710908460A CN110019357B CN 110019357 B CN110019357 B CN 110019357B CN 201710908460 A CN201710908460 A CN 201710908460A CN 110019357 B CN110019357 B CN 110019357B
Authority
CN
China
Prior art keywords
fact
dimension
tables
association
dimension table
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
CN201710908460.8A
Other languages
English (en)
Other versions
CN110019357A (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.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum 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 Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201710908460.8A priority Critical patent/CN110019357B/zh
Publication of CN110019357A publication Critical patent/CN110019357A/zh
Application granted granted Critical
Publication of CN110019357B publication Critical patent/CN110019357B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • 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
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Abstract

本发明公开了一种数据库查询脚本生成方法及装置,将各个事实表依次关联到维度表上,得到维度表与所有事实表的一个关联结果;最后,利用该关联结果构造数据库查询脚本。由此可见,每个事实表分别与上一次的关联结果进行关联,因为事实表与维度表关联后的数据量级取决于维度表的数据量级;而且,无论维度表关联几个事实表,其关联结果的数据量级都取决于维度表的数据量级,所以,整个关联过程的数据量级始终是一个维度表的数据量级,远远小于现有的关联方式产生的中间数据量。因此,大大减少了对I/O资源和内存资源的开销,从而提高了数据库查询性能。

Description

数据库查询脚本生成方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据查询脚本生成方法及装置。
背景技术
在软件系统中进行数据查询时,需要构造数据库查询脚本,即SQLScript。根据输入的业务查询参数(即,CommonQuery)构造SQLScript。
传统的生成查询脚本的方法,将业务查询参数结合元数据(Meta Data)生成分析树,再将分析树转换成SQL脚本。分析树是构造SQL脚本过程中的一种数据结构。数据库包括事实表和维度表,其中,维度表一般用来存储实体的基本属性,例如,商品的名称、单价等;事实表一般存储实体对应的实际指标数据,例如,某商品今天卖了多少件,一共卖了多少钱等等实体数据。一般情况下,一次查询都会涉及到多张表(包括事实表和维度表),即需要多张表关联才能查询出需要的结果。如果这多张表中包括多张事实表和一张维度表,则需要每一张事实表分别与维度表关联(Join),最后,再将多个关联的结果进行Full Join得到分析树。例如,本次查询涉及到的表包括:D1(维度表)、M1(事实表)、M2(事实表)和M3(事实表);按照上述的生成分析树的过程,需要经过一下四步:D1 Join M1得到D1_M1,D1 JoinM2输出D1_M2,D1 Join M3输出D1_M3,最后,D1_M1Full Join D1_M2Full Join D1_M3。
上述生成分析树的过程中,每一张事实表都要与维度表进行Join,有几张事实表就会得到几张维度量级的大结果集。上述实例中,有3个事实表,就会产生3个维度量级的结果集,例如,维度表的数据量级是10万,则会产生3个10万量级的大结果集。如果事实表的数量较多,则会产生很多个维度表量级的中间数据,这会大大增加IO资源和内存资源的开销,可能导致致命性的性能问题,例如,大量的中间数据达到数据库的处理极限,导致数据查询异常或根本查不出结果,总之,会导致数据库的查询性能大大降低。
发明内容
鉴于上述问题,提出了本发明的一种数据库查询脚本生成方法及装置,以解决数据查询性能较差的技术问题。
借由上述技术方案,本发明提供的数据库查询脚本生成方法,接收到查询请求后,获得相应的查询参数;根据查询参数获取当前查询涉及的维度表和所有事实表,将各个事实表依次关联到维度表上,得到维度表与所有事实表的一个关联结果;最后,利用该关联结果构造数据库查询脚本。由此可见,该方法直接将各个事实表依次关联到维度表上,即,每个事实表分别与上一次的关联结果进行关联,因为事实表与维度表关联后的数据量级取决于维度表的数据量级;而且,无论维度表关联几个事实表,其关联结果的数据量级都取决于维度表的数据量级,所以,整个关联过程的数据量级始终是一个维度表的数据量级,远远小于现有的关联方式产生的中间数据量。因此,大大减少了对I/O资源和内存资源的开销,从而提高了数据库查询性能。而且,整个关联过程只需要使用Left Join、Inner Join或RightJoin操作等,不需要进行Full Join操作,因为Left Join、Inner Join和Right Join占用的资源开销都小于Full Join占用的资源开销,所以,能够进一步提高数据库的查询性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例一种数据库查询脚本生成方法的流程图;
图2示出了本申请实施例一种将各个事实表依次关联到维度表过程的流程图;
图3示出了本申请实施例另一种数据库查询脚本生成方法的流程图;
图4示出了本申请实施例一种数据库查询脚本生成装置的框图;
图5示出了本申请实施例一种第一关联处理单元的框图;
图6示出了本申请实施例另一种第一关联处理单元的框图;
图7示出了本申请实施例另一种数据库查询脚本生成装置的框图;
图8示出了本申请实施例又一种第一关联处理单元的框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
请参见图1,示出了本申请实施例一种数据库查询脚本生成方法的流程图,该方法应用于服务器中,如图1所示,该方法包括以下步骤:
S110,接收查询请求。
接收客户端发送的查询请求,该查询请求中包含查询参数。
S120,根据查询请求获得查询参数。
解析查询请求,并从查询请求中提取获得查询参数,该查询参数就是用户要查询的数据信息,例如,用户要查询某个商品的销量,则查询参数包含商品名称和销量这两个参数。
S130,根据查询参数获取当前查询所涉及的维度表和至少两个事实表。
根据用户输入的查询参数确定本次查询所涉及的维度表和事实表,本实施例的应用场景是一次查询涉及多个事实表,维度表可以是多个或者一个。
S140,将至少两个事实表依次关联到所述维度表上,得到所述维度表与所述至少两个事实表进行关联的关联结果。
本实施例中,将各个事实表依次关联到维度表上,此处的依次关联是指本次需要关联的事实表与上一次的关联结果进行关联,直到所有的事实表都关联到维度表上;并非各个事实表依次单独与维度表关联。
请参见图2,示出了本申请实施例一种将各个事实表依次关联到维度表过程的流程图,如图2所示,将各个事实表依次关联到维度表过程可以包括:
S141,将至少两个事实表中的任意一个事实表与所述维度表进行关联,得到关联结果。
当首次将需要关联的事实表与维度表进行关联时,从本次查询所涉及的事实表中取任意一个事实表,并将该事实表与维度表进行关联操作,即Join操作(例如,Left Join、Inner Join,或者,Right Join)。
事实表与维度表进行关联时,一般是根据维度表标识对事实表中的数据进行聚合。
S142,检测至少两个事实表中是否存在未关联的事实表;如果是,则执行S143;如果否,则结束本次关联过程,得到最终的关联结果。
进行完S141中的关联操作后,检测事实表中是否还存在未关联的事实表,可以根据事实表的标识来区分该事实表是否关联过。
S143,将下一个未关联的事实表与所述维度表对应的上一次关联的关联结果进行关联,直到当前查询所涉及的事实表全部关联完。
获取下一个未关联的事实表,并将该未关联的事实表与上一次的关联结果进行关联,得到本次的关联结果,然后,返回执行S142,直到当前查询所涉及的事实表全部关联完。
例如,确定出当前查询涉及维度表D1、第一事实表M1、第二事实表M2和第三事实表M3;从M1~M3中任选一个事实表(例如,选M1)与D1进行关联,得到第一关联结果D1_M1;
然后,选取下一个未关联的事实表(例如,选M2)与D1_M1进行关联,得到第二关联结果D1_M1_M2;
然后,选取下一个未关联的事实表M3与第二关联结果D1_M1_M2进行关联,得到第三关联结果D1_M1_M2_M3。
该第三关联结果D1_M1_M2_M3就是本次查询的查询脚本构造过程中所需的分析树,需要说明的是,D1_M1_M2_M3只是分析树的抽象表达方式,并不是真正的分析树数据结构。
其中,D1_M1、D1_M1_M2和D1_M1_M2_M3的数据量级都是维度表D1的数据量级,可见,本申请的整个关联过程中的数据量级都是维度表D1的数据量级。
S150,利用关联结果构造数据库查询脚本。
S140得到的关联结果是数据库查询脚本构造过程中的分析树,分析树就是一种数据结构。然后,根据该分析树构造数据库查询脚本。最后,数据库在利用该数据库查询脚本进行查询操作。
本实施例提供的数据库查询脚本生成方法,接收到查询请求后,获得相应的查询参数;根据查询参数获取当前查询涉及的维度表和所有事实表,将各个事实表依次关联到维度表上,得到维度表与所有事实表的一个关联结果;最后,利用该关联结果构造数据库查询脚本。由此可见,该方法直接将各个事实表依次关联到维度表上,即,每个事实表都与上一次的关联结果进行关联,因为事实表与维度表关联后的数据量级取决于维度表的数据量级;而且,无论维度表关联几个事实表,其关联结果的数据量级都是取决于维度表的数据量级,所以,整个关联过程的数据量级始终是一个维度表的数据量级,远远小于现有的关联方式产生的中间数据量级。因此,大大减少了对I/O资源和内存资源的开销,从而提高了数据库查询性能。而且,,整个关联过程只需要使用Left Join、Inner Join或Right Join操作等,不需要进行Full Join操作,因为Left Join、Inner Join和Right Join占用的资源开销都小于Full Join占用的资源开销,所以,能够进一步提高数据库的查询性能。
请参见图3,示出了本申请实施例另一种数据库查询脚本生成方法的流程图,本实施例中,一次查询可能涉及多个维度表和多个事实表,此种应用场景下,先将维度表进行关联。如图3所示,该方法可以包括以下步骤:
S310,接收查询请求。
S320,根据查询请求获得查询参数。
S330,根据查询参数获取当前查询所涉及的所有维度表和所有事实表。
S340,将当前查询涉及的所有维度表依次进行关联,得到一个新的维度表。
本实施例的一个实施例中,若本次查询涉及多个维度表,则先将维度表关联成一个维度表。
例如,本次查询涉及第一维度表D1、第二维度表D2和第三维度表D3,则先将这三个维度表依次进行关联;
首先,将D1与D2进行Join,得到D1_D2;然后,再将D3与D1_D2进行Join,得到D1_D2_D3,并记为D123,该D123即所述新的维度表。
D123的数据量级最大不超过D1、D2、D3三者中的最大数据量级,例如,D1的数据量级是10万、D2的数据量级是100万,而D3是1万,则关联后的D123的数据量级最大不会超过100万。
S350,将当前查询涉及的所有事实表依次关联到新的维度表上,得到新的维度表与所述所有事实表进行关联后的关联结果。
在本申请的一个实施例中,例如,本次查询涉及的事实表包括第一事实表M1、第二事实表M2和第三事实表M3。
首先,可以将M1与D123进行Join,得到D123_M1;然后,可以将M2与D123_M1进行Join,得到D123_M1_M2;最后,将M3与D123_M1_M2进行Join,得到D123_M1_M2_M3。关联得到的D123_M1_M2_M3的数据量级取决于D123的数据量级。
S360,利用关联结果构造数据库查询脚本。
本实施例提供的数据库查询脚本生成方法,在获得本次查询所涉及的多个维度表和多个事实表后,先将多个维度表进行关联得到一个新的维度表,然后,再将多个事实表依次关联到新的维度表上,新的维度表的数据量级取决于所述多个维度表中的最大数据量级。因此,整个关联过程中,中间数据的数据量级始终是新的维度表的数据量级,远远小于现有的关联方式产生的中间数据量级。因此,大大减少了对I/O资源和内存资源的开销,从而提高了数据库查询性能。而且,,整个关联过程只需要使用Left Join、Inner Join或Right Join操作等,不需要进行Full Join操作,因为Left Join、Inner Join和Right Join占用的资源开销都小于Full Join占用的资源开销,所以,能够进一步提高数据库的查询性能。
相应于上述的数据库查询脚本生成方法实施例,本申请还提供了对应的装置实施例。
请参见图4,示出了本申请实施例一种数据库查询脚本生成装置的框图,该装置应用于服务器中,如图4所示,该装置包括:接收单元110、第一获取单元120、第二获取单元130、第一关联处理单元140和查询脚本构造单元150。
接收单元110,用于接收查询请求。
第一获取单元120,用于根据所述查询请求获得查询参数。
解析客户端发送的查询请求获得该查询请求对应的查询参数。例如,用户要查询某个商品的销量,则查询参数包含商品名称和销量这两个参数。
第二获取单元130,用于根据所述查询参数获取当前查询所涉及的维度表和至少两个事实表。
根据用户输入的查询参数确定本次查询所涉及的维度表和事实表,本实施例的应用场景是一次查询涉及多个事实表,维度表可以是多个或者一个。
第一关联处理单元140,用于将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果。
在本申请的一个实施例中,如图5所示,所述第一关联处理单元包括:第一关联子单元141、检测子单元142和第二关联子单元143。
第一关联子单元141,用于将所述至少两个事实表中的任意一个事实表与所述维度表进行关联,得到关联结果。
当首次将需要关联的事实表与维度表进行关联时,从本次查询所涉及的事实表中取任意一个事实表,并将该事实表与维度表进行关联操作,即Join操作(例如,Left Join、Inner Join,或者,Right Join)。
事实表与维度表进行关联时,一般是根据维度表标识对事实表中的数据进行聚合。
检测子单元142,用于检测所述至少两个事实表中是否存在未关联的事实表。
检测事实表中是否还存在未关联的事实表,可以根据事实表的标识来区分该事实表是否关联过。
第二关联子单元143,用于当存在未关联的事实表时,将下一个未关联事实表与所述维度表对应的上一次关联的关联结果进行关联,直到当前查询所涉及的事实表全部关联完。
获取下一个未关联的事实表,并将该未关联的事实表与上一次的关联结果进行关联,得到本次的关联结果,然后,再由检测单元142执行相应的检测操作,直到当前查询所涉及的事实表全部关联完。
在本申请一个实施例中,所述至少两个事实表包括第一事实表M1、第二事实表M2和第三事实表M3,所述维度表包括第一维度表D1。如图6所示,所述第一关联处理单元包括:第三关联子单元144、第四关联子单元145和第五关联子单元146。
第三关联子单元144,用于将M1与D1进行关联,得到第一关联结果D1_M1。
第四关联子单元145,用于将M2与D1_M1进行关联,得到第二关联结果D1_M1_M2;
第五关联子单元146,用于将M3与D1_M1_M2进行关联,得到第三关联结果D1_M1_M2_M3。
该第三关联结果D1_M1_M2_M3就是本次查询的查询脚本构造过程中所需的分析树,需要说明的是,D1_M1_M2_M3只是分析树的抽象表达方式,并不是真正的分析树数据结构。
其中,D1_M1、D1_M1_M2和D1_M1_M2_M3的数据量级都是维度表D1的数据量级,可见,本申请的整个关联过程中的数据量级都是维度表D1的数据量级。
查询脚本构造单元150,用于利用所述关联结果构造数据库查询脚本。
所述关联结果是数据库查询脚本构造过程中的分析树,分析树就是一种数据结构。然后,根据该分析树构造数据库查询脚本。最后,数据库在利用该数据库查询脚本进行查询操作。
本实施例提供的数据库查询脚本生成装置,将各个事实表依次关联到维度表上,得到维度表与所有事实表的一个关联结果;最后,利用该关联结果构造数据库查询脚本。由此可见,该装置直接将各个事实表依次关联到维度表上,即,每个事实表都与上一次的关联结果进行关联,因为事实表与维度表关联后的数据量级取决于维度表的数据量级;而且,无论维度表关联几个事实表,其关联结果的数据量级都是取决于维度表的数据量级,所以,整个关联过程的数据量级始终是一个维度表的数据量级,远远小于现有的关联方式产生的中间数据量级。因此,大大减少了对I/O资源和内存资源的开销,从而提高了数据库查询性能。而且,整个关联过程只需要使用Left Join、Inner Join或Right Join操作等,不需要进行Full Join操作,因为Left Join、Inner Join和Right Join占用的资源开销都小于FullJoin占用的资源开销,所以,能够进一步提高数据库的查询性能。
请参见图7,示出了本申请实施例另一种数据库查询脚本生成装置的框图,本实施例中,一次查询可能涉及多个维度表和多个事实表,此种应用场景下,先将维度表进行关联。如图7所示,该装置还包括连接在第二获取单元和第一关联处理单元之间的第二关联处理单元210;
第二关联处理单元210,用于将所述至少两个维度表进行关联,得到新的维度表。
第二关联处理单元210处理得到新的维度表后,提供给第一关联处理单元将本次查询所涉及的事实表依次关联到新的维度表上。
在本申请的一个实施例中,若当前查询所涉及的维度表包括第一维度表和第二维度表,本次查询所涉及的事实表包括第一事实表、第二事实表和第三事实表。
第二关联处理单元具体用于:将所述第一维度表和所述第二维度表进行关联,得到第三维度表。
本实施例的一个实施例中,若本次查询涉及多个维度表,则先将这多个维度表关联成一个维度表。
例如,本次查询涉及第一维度表D1、第二维度表D2和第三维度表D3,则先将这三个维度表依次进行关联;首先,将D1与D2进行Join,得到D1_D2;然后,再将D3与D1_D2进行Join,得到D1_D2_D3,并记为D123,该D123即所述新的维度表。
D123的数据量级最大不超过D1、D2、D3三者中的最大数据量级,例如,D1的数据量级是10万、D2的数据量级是100万,而D3是1万,则关联后的D123的数据量级最大不会超过100万。
如图8所示,第一关联处理单元140包括:第六关联子单元147、第七关联子单元148和第八关联子单元149。
第六关联子单元147,用于将所述第一事实表与所述第三维度表进行关联,得到第一关联结果。
第七关联子单元148,用于将所述第二事实表与所述第一关联结果进行关联,得到第二关联结果。
第八关联子单元149,用于将所述第三事实表与所述第二关联结果进行关联,得到第三关联结果。
例如,本次查询涉及的事实表包括第一事实表M1、第二事实表M2和第三事实表M3。
首先,可以将M1与D123进行Join,得到D123_M1;然后,将M2与D123_M1进行Join,得到D123_M1_M2;最后,将M3与D123_M1_M2进行Join,得到D123_M1_M2_M3。关联得到的D123_M1_M2_M3的数据量级取决于D123的数据量级。
本实施例提供的数据库查询脚本生成方法,在获得本次查询所涉及的多个维度表和多个事实表后,先将多个维度表进行关联得到一个新的维度表,然后,再将多个事实表依次关联到新的维度表上,新的维度表的数据量级取决于所述多个维度表中的最大数据量级。因此,整个关联过程中,中间数据的数据量级始终是新的维度表的数据量级,远远小于现有的关联方式产生的中间数据量级。因此,大大减少了对I/O资源和内存资源的开销,从而提高了数据库查询性能。而且,整个关联过程只需要使用Left Join、Inner Join或RightJoin操作等,不需要进行Full Join操作,因为Left Join、Inner Join和Right Join占用的资源开销都小于Full Join占用的资源开销,所以,能够进一步提高数据库的查询性能。
所述数据库查询脚本生成装置包括处理器和存储器,上述接收单元、第一获取单元、第二获取单元、第一关联处理单元、第二关联处理单元和查询脚本构造单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来减少对I/O资源和内存资源的开销,以提高数据库查询性能。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据库查询脚本生成方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据库查询脚本生成方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:。本文中的设备可以是服务器、PC等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
接收查询请求;
根据所述查询请求获得查询参数;
根据所述查询参数获取当前查询所涉及的维度表和至少两个事实表;
将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果;
利用所述关联结果构造数据库查询脚本。
在本申请的一个实施例中,所述将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果,包括:
将所述至少两个事实表中的任意一个事实表与所述维度表进行关联,得到关联结果;
检测所述至少两个事实表中是否存在未关联的事实表;
当存在未关联的事实表时,将下一个未关联事实表与所述维度表对应的上一次关联的关联结果进行关联,直到当前查询所涉及的事实表全部关联完。
在本申请的一个实施例中,所述至少两个事实表包括第一事实表、第二事实表和第三事实表,所述维度表包括第一维度表,所述将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果,包括:
将所述第一事实表与所述第一维度表进行关联,得到第一关联结果;
将所述第二事实表与所述第一关联结果进行关联,得到第二关联结果;
将所述第三事实表与所述第二关联结果进行关联,得到第三关联结果。
在本申请的一个实施例中,如果当前查询所涉及的维度表包括至少两个维度表,在将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果之前,还包括:
将所述至少两个维度表进行关联,得到新的维度表,以使所述至少两个事实表依次关联到所述新的维度表上。
在本申请的一个实施例中,如果当前查询所涉及的维度表包括第一维度表和第二维度表,至少两个事实表包括第一事实表、第二事实表和第三事实表,则所述将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果,包括:
将所述第一维度表和所述第二维度表进行关联,得到第三维度表;
将所述第一事实表与所述第三维度表进行关联,得到第一关联结果;
将所述第二事实表与所述第一关联结果进行关联,得到第二关联结果;
将所述第三事实表与所述第二关联结果进行关联,得到第三关联结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种数据库查询脚本生成方法,其特征在于,包括:
接收查询请求;
根据所述查询请求获得查询参数;
根据所述查询参数获取当前查询所涉及的维度表和至少两个事实表;
在将所述至少两个事实表依次关联到所述维度表上时,将本次需要关联的事实表与上一次的关联结果进行关联,得到所述维度表与全部所述事实表进行关联的关联结果,其中,对于所述至少两个事实表中首个需要关联的事实表,对应的上一次关联结果是所述维度表;
利用所述关联结果构造数据库查询脚本。
2.根据权利要求1所述的方法,其特征在于,所述将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果,包括:
将所述至少两个事实表中的任意一个事实表与所述维度表进行关联,得到关联结果;
检测所述至少两个事实表中是否存在未关联的事实表;
当存在未关联的事实表时,将下一个未关联事实表与所述维度表对应的上一次关联的关联结果进行关联,直到当前查询所涉及的事实表全部关联完。
3.根据权利要求1或2所述的方法,其特征在于,所述至少两个事实表包括第一事实表、第二事实表和第三事实表,所述维度表包括第一维度表,所述将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果,包括:
将所述第一事实表与所述第一维度表进行关联,得到第一关联结果;
将所述第二事实表与所述第一关联结果进行关联,得到第二关联结果;
将所述第三事实表与所述第二关联结果进行关联,得到第三关联结果。
4.根据权利要求1所述的方法,其特征在于,如果当前查询所涉及的维度表包括至少两个维度表,在将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果之前,还包括:
将所述至少两个维度表进行关联,得到新的维度表,以使所述至少两个事实表依次关联到所述新的维度表上。
5.根据权利要求4所述的方法,其特征在于,如果当前查询所涉及的维度表包括第一维度表和第二维度表,至少两个事实表包括第一事实表、第二事实表和第三事实表,则所述将所述至少两个事实表依次关联到所述维度表上,得到所述维度表与全部所述事实表进行关联的关联结果,包括:
将所述第一维度表和所述第二维度表进行关联,得到第三维度表;
将所述第一事实表与所述第三维度表进行关联,得到第一关联结果;
将所述第二事实表与所述第一关联结果进行关联,得到第二关联结果;
将所述第三事实表与所述第二关联结果进行关联,得到第三关联结果。
6.一种数据库查询脚本生成装置,其特征在于,包括:
接收单元,用于接收查询请求;
第一获取单元,用于根据所述查询请求获得查询参数;
第二获取单元,用于根据所述查询参数获取当前查询所涉及的维度表和至少两个事实表;
第一关联处理单元,用于在将所述至少两个事实表依次关联到所述维度表上时,将本次需要关联的事实表与上一次的关联结果进行关联,得到所述维度表与全部所述事实表进行关联的关联结果,其中,对于所述至少两个事实表中首个需要关联的事实表,对应的上一次关联结果是所述维度表;
查询脚本构造单元,用于利用所述关联结果构造数据库查询脚本。
7.根据权利要求6所述的装置,其特征在于,所述第一关联处理单元包括:
第一关联子单元,用于将所述至少两个事实表中的任意一个事实表与所述维度表进行关联,得到关联结果;
检测子单元,用于检测所述至少两个事实表中是否存在未关联的事实表;
第二关联子单元,用于当存在未关联的事实表时,将下一个未关联事实表与所述维度表对应的上一次关联的关联结果进行关联,直到当前查询所涉及的事实表全部关联完。
8.根据权利要求6或7所述的装置,其特征在于,所述至少两个事实表包括第一事实表、第二事实表和第三事实表,所述维度表包括第一维度表,所述第一关联处理单元,包括:
第三关联子单元,用于将所述第一事实表与所述第一维度表进行关联,得到第一关联结果;
第四关联子单元,用于将所述第二事实表与所述第一关联结果进行关联,得到第二关联结果;
第五关联子单元,用于将所述第三事实表与所述第二关联结果进行关联,得到第三关联结果。
9.一种存储介质,其上存储有程序,该程序被处理器执行时实现如权利要求1至5中任一项所述的数据库查询脚本生成方法。
10.一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行如权利要求1至5中任一项所述的数据库查询脚本生成方法。
CN201710908460.8A 2017-09-29 2017-09-29 数据库查询脚本生成方法及装置 Active CN110019357B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710908460.8A CN110019357B (zh) 2017-09-29 2017-09-29 数据库查询脚本生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710908460.8A CN110019357B (zh) 2017-09-29 2017-09-29 数据库查询脚本生成方法及装置

Publications (2)

Publication Number Publication Date
CN110019357A CN110019357A (zh) 2019-07-16
CN110019357B true CN110019357B (zh) 2021-06-29

Family

ID=67186460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710908460.8A Active CN110019357B (zh) 2017-09-29 2017-09-29 数据库查询脚本生成方法及装置

Country Status (1)

Country Link
CN (1) CN110019357B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111125266B (zh) * 2019-12-24 2024-01-12 建信金融科技有限责任公司 数据处理方法、装置、设备及存储介质
CN114116842B (zh) * 2021-11-25 2023-05-19 上海柯林布瑞信息技术有限公司 多维医疗数据实时获取方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572740A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种存储数据的方法和装置
CN105824914A (zh) * 2016-03-15 2016-08-03 浙江大学 一种基于配置的雪花模型信息抽取方法
CN106021486A (zh) * 2016-05-18 2016-10-12 广东源恒软件科技有限公司 一种基于大数据的数据多维分析处理方法
CN106484875A (zh) * 2016-10-13 2017-03-08 广州视源电子科技股份有限公司 基于molap的数据处理方法及装置
CN106933906A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 数据多维度的查询方法及装置
CN106933893A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 多维度数据的查询方法及装置
CN107168977A (zh) * 2016-03-08 2017-09-15 阿里巴巴集团控股有限公司 一种数据查询的优化方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792856B2 (en) * 2007-06-29 2010-09-07 International Business Machines Corporation Entity-based business intelligence
CN103020158B (zh) * 2012-11-26 2016-09-07 中兴通讯股份有限公司 一种报表创建方法、装置和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572740A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种存储数据的方法和装置
CN106933906A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 数据多维度的查询方法及装置
CN106933893A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 多维度数据的查询方法及装置
CN107168977A (zh) * 2016-03-08 2017-09-15 阿里巴巴集团控股有限公司 一种数据查询的优化方法及装置
CN105824914A (zh) * 2016-03-15 2016-08-03 浙江大学 一种基于配置的雪花模型信息抽取方法
CN106021486A (zh) * 2016-05-18 2016-10-12 广东源恒软件科技有限公司 一种基于大数据的数据多维分析处理方法
CN106484875A (zh) * 2016-10-13 2017-03-08 广州视源电子科技股份有限公司 基于molap的数据处理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Haitao He等.An Improved OLAP Join and Aggregate Algorithm Based on Dimension Hierarchy.《 2009 Sixth International Conference on Fuzzy Systems and Knowledge Discovery》.2009,169-172页. *
于敏.联机分析处理(OLAP)建模方法研究.《中国优秀硕士学位论文全文数据库信息科技辑》.2011, *

Also Published As

Publication number Publication date
CN110019357A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
CN108270629B (zh) 网站访客行为监测方法及装置
CN106326309B (zh) 一种数据查询方法和装置
CN108932257B (zh) 多维度数据的查询方法及装置
CN109766345B (zh) 元数据处理方法及装置、设备、可读存储介质
CN107015985B (zh) 一种数据存储与获取方法及装置
CN110413634B (zh) 数据查询方法、系统、装置及计算机可读存储介质
WO2017053892A1 (en) Method and apparatus for transferring data between databases
CN110704418A (zh) 区块链信息查询方法、装置和设备
CN112487083B (zh) 一种数据校验方法和设备
CN106648839B (zh) 数据处理的方法和装置
CN110019357B (zh) 数据库查询脚本生成方法及装置
CN108228443B (zh) 一种web应用的测试方法及装置
CN108241620B (zh) 查询脚本的生成方法及装置
CN110928941B (zh) 一种数据分片抽取方法及装置
CN111125087B (zh) 数据的存储方法及装置
US20180150759A1 (en) Calculation device, calculation method, and non-transitory computer-readable recording medium
CN108121733B (zh) 一种数据的查询方法及装置
CN111159192B (zh) 基于大数据的数据入库方法、装置、存储介质和处理器
CN114329495A (zh) 基于内生安全的资产漏洞静态分析方法及装置
CN110019296B (zh) 数据库查询脚本的生成方法、装置、存储介质及处理器
CN108228604B (zh) 基于内存对象的模型构建方法、信息查询方法及装置
CN106569791B (zh) 一种数据对象的处理方法及装置
CN108121719B (zh) 一种实现数据抽取转换加载etl的方法及装置
CN108062329B (zh) 一种数据导入方法及装置
CN106951427B (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
CB02 Change of applicant information

Address after: 100080 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Applicant after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Applicant before: Beijing Guoshuang Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant