CN101382957A - 建立查询模型的系统及建立方法 - Google Patents

建立查询模型的系统及建立方法 Download PDF

Info

Publication number
CN101382957A
CN101382957A CNA2008102241793A CN200810224179A CN101382957A CN 101382957 A CN101382957 A CN 101382957A CN A2008102241793 A CNA2008102241793 A CN A2008102241793A CN 200810224179 A CN200810224179 A CN 200810224179A CN 101382957 A CN101382957 A CN 101382957A
Authority
CN
China
Prior art keywords
model
module
query
interrogation
atom
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.)
Granted
Application number
CNA2008102241793A
Other languages
English (en)
Other versions
CN101382957B (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 Software 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 Software Co Ltd filed Critical Yonyou Software Co Ltd
Priority to CN2008102241793A priority Critical patent/CN101382957B/zh
Publication of CN101382957A publication Critical patent/CN101382957A/zh
Application granted granted Critical
Publication of CN101382957B publication Critical patent/CN101382957B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种建立查询模型的系统,包括:接收模块,用于接收查询需求,并根据查询需求对功能库模块的各模块进行设置;功能库模块,存放建立查询模型所需的功能模块,包括:参数模块,用于定义或引用参数;查询基本元素模块,用于确定查询所需的基本元素;复合查询模块,用于根据复合查询生成树从上向下分发参数到原子查询,以及根据复合查询生成树将原子查询合成复合查询;模型完成模块,用于创建查询模型并将查询模型持久化,包括查询模型创建模块和将查询模型进行持久化的持久化模块。还相应提供了建立查询模型的方法。本发明可将各种复杂的查询需求抽象转化为可复用的查询模型,并利用该模型得到业务级程序所需要的数据结果集。

Description

建立查询模型的系统及建立方法
技术领域
本发明涉及数据库查询领域,特别是指建立查询模型的系统及建立方法。
背景技术
在与数据库相关的大量业务程序都需要调用数据库进行查询。无论是ERP项目中报表的开发和生成,还是利用数据仓库和数据中心进行数据挖掘等,都需要进行大量的多次的查询。但是现有技术并没有建立一套抽象的可以复用的查询模型。
比如在本发明一个重要应用领域,ERP项目报表开发领域中,据统计,在很多交付压力较大的项目当中,报表开发占有相当的比重。现有技术大多将查询的模型完全建立在SQL或单元取数公式的基础之上,缺少对于模型的更多动态描述和访问接口,缺少对于模型之间的行为描述,从而导致建模工作局限性强、灵活性低、孤立而缺乏内在联系。中国专利20081001418.2公开了一种不规则复杂报表的生成方法,采用的就是编写数据计算表达式到单元格的方法进行查询取数。还有一类方案则走向了另一个极端,将取数逻辑完全交给后台代码实现,这样虽然增加了灵活性,但极大地增加了开发人员的工作量,而且模型的复用性也很低,非常不适合于企业报表的批量交付。
同样的,在数据挖掘和业务程序中经常有类似的需求。例如可以通过接口按照事先约定的数据结构提供查询所得的数据结果集,而无需再调用数据库进行查询。所以急需要一种针对复用性最强的查询模型的建模方法。
发明内容
有鉴于此,本发明的主要目的在于提供建立查询模型的系统及建立方法,可以将各种复杂的查询需求抽象转化为可复用的查询模型,并利用该模型得到业务级程序所需要的数据结果集。
对于建立查询模型的方法来说,上述技术问题是这样加以解决的,建立查询模型的系统,包括:
功能库模块2,存储有建立查询模型所需的除接收和完成外的模块,包括:参数模块23,用于定义或引用参数;查询基本元素模块21,用于确定查询所需的基本元素;复合查询模块22,用于根据复合查询生成树从上向下分发参数到原子查询模型,以及根据复合查询生成树将原子查询模型合成复合查询模型;
接收模块1,用于接收查询需求,并根据查询需求对功能库模块2的各模块进行设置;
模型完成模块3,用于创建查询模型并将查询模型持久化,包括查询模型创建模块31和将查询模型进行持久化的持久化模块32;所述查询模型创建模块31用于将接收模块1设置过的功能库模块2按照以下步骤完成查询模型设计:
步骤b1、用复合查询模块22分发参数到原子查询模型;
步骤b2、用查询基本元素模块21和参数模块23完成原子查询模型;
步骤b3、用复合查询模块22将原子查询模型合成复合查询模型。
这样可以将复杂的查询需求利用复合查询分解到简单的原子查询模块,从而提高查询模型的抽象高度。并提供了功能库模块,从而为系统功能的扩展提供了可能。
优选的是,所述功能库模块2中的模块还包括至少一个以下模块,前处理模块25,用于实现前处理;后处理模块26,用于实现后处理;穿透规则模块27,用于实现穿透规则的设定;
所述查询模型创建模块31按照以下步骤完成查询模型设计:
在步骤b1后执行的步骤b12、用前处理模块结合复合查询生成树对原子查询模型进行调整;
在步骤b3后执行的步骤b4、用后处理模块26对复合查询模型进行后处理;
在步骤b4后执行的步骤b5、用穿透规则模块27,实现穿透规则的设定。
这样可以在原子查询级别进行前处理调整,实现对查询动作进行加工处理,在复合查询级别进行后处理调整,实现对数据结果集进行加工处理,在复合查询之后还可以进行穿透规则设定。
优选的是,所述的前处理模块25包括:投影交叉模块251,用于完成投影交叉;数据库整理模块252,用于对原子查询模型的数据库查询行为进行调整;
所述的后处理模块26包括:旋转交叉模块261,用于实现旋转交叉;数据加工模块262,用于进行除旋转交叉外的后处理;
所述步骤b12包括:步骤b121、用投影交叉模块251结合复合查询生成树对原子查询模型进行调整;步骤b122、用数据库整理模块252结合复合查询生成树对原子查询模型进行调整;
所述的步骤b4包括:步骤b41、用旋转交叉模块261对复合查询模型进行调整;步骤b42、用数据加工模块262对复合查询模型进行调整。
这样将使用率非常高的前处理过程中的投影交叉和后处理过程中的旋转交叉单列出来,有利于设计和提高效率。
优选的是,所述的模型完成模块3还包括,合法性校验模块33,用于在持久化模块32将查询模型进行持久化之前对查询模型进行合法性校验。
这样可以对查询模型进行检查。防止人为失误、语法错误等影响查询模型使用的情况出现。
优选的是,所述的接收模块1还包括,用于导入已有查询模型;所述的复合查询模块22还包括:子查询模块221,用于利用已有查询模型作为子查询,参数根据复合查询生成树从上向下分发到原子查询模型和/或子查询,根据复合查询生成树将原子查询模型和/或子查询合成复合查询模型;
所述步骤b1还包括:用复合查询模块22分发参数到原子查询模型和/或子查询模型;
所述步骤b121还包括:用投影交叉模块251结合复合查询生成树对原子查询模型和/或子查询模型进行调整;所述步骤b122还包括、用数据库整理模块252结合复合查询生成树对原子查询模型和/或子查询模型进行调整;
所述步骤b2还包括:用查询基本元素模块21和参数模块23完成原子查询模型和/或子查询模型;
所述步骤b3还包括:用复合查询模块22将原子查询模型和/或子查询模型合成复合查询模型。
这样可以利用已有模型作为子查询,而提高查询模型建立的效率和查询模型的复用率。在积累或导入足够多的已有查询模型的时候,甚至可能在已有查询模型基础上进行一点修改就可以生成符合要求的新的查询模型。从而大大提高新模型的建立效率。
优选的是,所述的模型完成模块3还包括,子查询合法性校验模块331对子查询模型进行合法性校验。
进一步加强合法性检验,防止错误的出现。
优选的是,所述一个功能库模块2还包括,模型主体模块24,用于生成查询模型主体;
所述接收模块(1)接收的查询需求还包括:确定元数据;
所述步骤b1前还包括,从元数据中选择主业务实体及其相关属性,生成查询模型主体。
这样可以提高查询模型建立的效率。减少在接收查询需求时所需的步骤。尤其当元数据已经包含了足够丰富的业务实体信息时,可以直接完成查询模型的主体,之后的接收动作只是进行补充。
优选的是,所述持久化模块(32)还包括,原子查询模型持久化模块,用于将原子查询模型进行持久化。进一步补充数据库中存储的模型,提高模型的复用性。
本发明还提供了一种建立查询模型的方法,包括:
步骤X、接收查询需求,并根据接收的查询需求定义或引用参数、确定查询所需的基本元素和复合查询生成树;
步骤Y、创建查询模型并将查询模型持久化,所述创建查询模型的步骤包括:
步骤y1、根据复合查询生成树从上向下分发参数到原子查询模型;
步骤y2、用确定的原子查询模型所需的基本元素和所述参数完成原子查询模型的建立;
步骤y3、根据复合查询生成树将原子查询模型合成复合查询。
这样可以将复杂的查询需求利用复合查询分解到简单的原子查询模块,从而提高查询模型的抽象高度。使得查询模型的复用成为可能。
优选的是,所述步骤y1后还包括步骤y12:根据前处理规则和复合查询生成树对所述原子查询模型的基本元素和参数进行调整;
所述步骤y3后还包括步骤y4:根据后处理规则对合成的复合查询进行后处理;
步骤y5:设定穿透规则。
这样可以在原子查询级别进行前处理调整,实现对查询动作进行加工处理,在复合查询级别进行后处理调整,实现对数据结果集进行加工处理,在复合查询之后还可以进行穿透规则设定。
优选的是,所述步骤y12包括:步骤y121、对原子查询模型进行投影交叉调整;步骤y122、对原子查询模型进行数据库整理调整;
所述的步骤y4包括:步骤y41、对复合查询模型进行旋转交叉调整;步骤y42、对复合查询模型进行数据加工调整。
这样将使用率非常高的前处理过程中的投影交叉和后处理过程中的旋转交叉单列出来,有利于设计和提高效率。
优选的是,步骤Y所述将查询模型进行持久化之前还包括:对查询模型进行合法性校验。
这样可以对查询模型进行检查。防止人为失误、语法错误等影响查询模型使用的情况出现。
优选的是,所述步骤X还包括导入已有查询模型;
所述步骤y1还包括:根据复合查询树分发参数到原子查询模型和/或子查询模型;
所述步骤y121还包括:根据投影交叉设置结合复合查询生成树对原子查询模型和/或子查询模型进行调整;所述步骤y122还包括:根据前处理规则结合复合查询生成树对原子查询模型和/或子查询模型进行调整;
所述步骤y2还包括:根据基本元素和参数完成原子查询模型和/或子查询模型;
所述步骤y3还包括:根据复合查询树将原子查询模型和/或子查询模型合成复合查询模型。
这样可以利用已有模型作为子查询模型,而提高查询模型建立的效率和查询模型的复用率。在积累或导入足够多的已有查询模型的时候,甚至可能在已有查询模型基础上进行一点修改就可以生成符合要求的新的查询模型。从而大大提高新模型的建立效率。
优选的是,所述的步骤y2后还包括:对子查询模型进行合法性校验。
进一步加强合法性检验,防止错误的出现。
优选的是,步骤X还包括,从元数据中选择主业务实体及其相关属性,生成查询模型主体。
这样可以提高查询模型建立的效率。减少在接收查询需求时所需的步骤。尤其当元数据已经包含了足够丰富的业务实体信息时,可以直接完成查询模型的主体,之后的接收动作只是进行补充。
优选的是,所述的步骤y2还包括,将原子模型持久化。
附图说明
图1为实现查询模型建立方法的系统的示意图;
图2为模型完成模块完成查询模型设计的流程图;其中,图2b为步骤b12的子步骤,图2c为步骤b4的子步骤;
图3为部分数据字典的示例图;
图4为复合查询的原理图;
图5为销售订单的元数据模型图;
图6为定义某个参数操作界面图;
图7为引用某个参数操作界面图;
图8为投影交叉数据模型图;
图9为旋转交叉数据模型图;
图10为SQL语言进行调整的代码片段图;
图11为进行前处理设置时在追加表时的操作界面图;
图12为进行前处理设置时在追加连接条件时的操作界面图;
图13为进行后处理设置时在数据结果集连接时的操作界面图;
图14为穿透规则设置的操作界面图;
图15为本发明所述系统建立查询模型的流程图;其中,图15a为本发明所述系统建立查询模型的流程图,图15b为步骤y12的子步骤,图15c为步骤y4的子步骤。
具体实施方式
本发明提供了一种查询模型建立方法,相应的,提供了实现该方法的系统。总体上来说,查询模型从某种程度上可以理解为对一系列表或视图的一系列动作的抽象集成。在本发明中,通过功能库模块预先存放各种动作,而通过参数来实现对这些动作的控制。动作的对象,即模型建立的主体,则利用查询基本元素模块和模型主体模块来构建。同时为了提高查询模型的抽象高度,提高复用率,本发明还将语义层的原子查询通过复合查询的方式实现了进一步集成。而复合查询的动作则由复合查询生成树来控制。当然所述的动作及动作的对象均不局限于原子查询级别。
在本实施例中,所述的复合查询生成树的各个叶子节点为子查询模型或原子查询模型,存有各节点与查询基本元素和参数的对应关系,包括各子查询模型、原子查询模型这些节点与各参数的对应关系。利用所述的复合查询生成树可以完成参数的分发、原子查询模型建立和合成复合查询模型。
查询基本元素包括,基本表、查询条件和查询字段等信息。
首先,参见图1对所述实现查询模型建立方法的系统进行描述,该系统包括接收模块1、功能库模块2、模型完成模块3,其中:
接收模块1,通过其提供的可视化的向导界面,接收用户输入的查询需求;根据查询需求对功能库模块2的各模块进行设置,并用来导入已有的查询模型。
具体来说,所述的通过接收模块1指导用户接收查询需求并对功能库模块2的各模块进行设置以及导入已有查询模型,包括:
确定元数据,从元数据中选择主业务实体及其相关属性,生成查询模型主体;接收参数;接收复合查询生成树;确定查询所需的基本元素;
导入已有查询模型;
设置模型主体模块24,根据元数据中选择的主业务实体及其相关属性生成查询模型主体;设置参数模块23,完成参数定义或引用;设置查询基本元素模块21,确定查询所需的基本元素;设置复合查询模块22及子查询模块221,根据复合查询生成树设置从上向下分发参数到子查询模型和/或原子查询模型的路径,以及根据复合查询生成树设置将子查询模型和/或原子查询模型合成复合查询模型的路径;设置投影交叉模块251,根据参数模块23完成投影交叉相关参数定义或引用;设置数据库整理模块252,根据参数模块23完成数据库整理相关参数定义或引用;设置旋转交叉模块261,根据参数模块23完成旋转交叉相关参数定义或引用;设置数据加工模块262,根据参数模块23完成数据加工相关参数定义或引用;设置穿透规则模块27,根据参数模块23完成穿透规则相关参数定义或引用。
在本实施例中,采用了层状使用界面,即具有一个整体的进入界面,并针对该界面中的相关功能都提供有页面层的界面,每个相关功能下面也根据实际需要有若干个子页面层的界面。例如针对参数模块23,对应于原子查询模型、投影交叉模块251、数据库整理模块252、设置旋转交叉模块261、数据加工模块262等均在接收模块对应设置了子页面。这样在接收参数的同时其实也是指定了这些参数涉及的部分。这个过程也可用于生成查询模型生成树。
功能库模块2,存储有建立查询模型所需的除接收和完成外的模块,包括:
参数模块23,用于定义或引用参数。参数是查询模型中代表动态信息的元素。参数一般经历以下几个步骤。参数定义:用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。参数引用:指定查询模型在何处以何种方式用到参数。参数设置:接收对参数具体值的设置。在建立查询模型中参数主要是进行定义或引用,而具体的设置多是在执行查询模型的时候进行。在本实施例中,会在接收参数时根据需要分层次进行,并分别定义和引用,例如可以分别对每个原子查询的参数进行定义和引用、也可以分别针对投影交叉、旋转交叉等的相关参数进行定义和引用。如图6为定义某个参数,图7为引用某个参数的页面视图。
查询基本元素模块21,用于确定查询所需的基本元素。
复合查询模块22,用于根据复合查询生成树从上向下分发参数到原子查询模型,以及根据复合查询生成树将原子查询模型合成复合查询模型。具体来说,可根据复合查询生成树生成从上向下分发参数到原子查询模型的路径,并按照该路径分发参数,以及根据复合查询生成树生成将原子查询模型合成复合查询模型的路径,并按照路径合成复合查询。
复合查询模块22中还包含子查询模块221,用于将复合查询生成树的叶子节点设为子查询,并根据复合查询生成树生成从上向下分发参数到子查询模型和/或原子查询模型的路径,并按照该路径分发参数,以及根据复合查询生成树生成将子查询模型和/或原子查询模型合成复合查询模型的路径,并按照路径合成复合查询。而对应的其它模块也可以在子查询级别进行操作。所述子查询为已有查询模型。
前处理模块25,用于实现前处理,包括投影交叉模块251和数据库整理模块252。其中:
投影交叉模块251,用于完成投影交叉。投影交叉可理解为:假定有一个查询SQL,其查询结果是单行单列的汇总值,另外还有两组Where条件的序列,分别为横向序列(WhereX1、WhereX2、......、WhereXn)和纵向序列(WhereY1、WhereY2、......、WhereYn),则数据矩阵A(aij)对应的结果集成为投影交叉,其中aij是WhereXi和WhereYj同时作用在上述SQL上获得的结果。投影交叉的数据模型示意图可如图8所示。通过投影交叉,完成纯粹的SQL语句无法完成的功能——把行中的数值放置在列头。
数据库整理模块252,用于对原子查询模型的数据库查询行为进行调整,例如对查询的表、字段条件等信息进行增补或修改。其具体内容由内嵌的代码片段描述,这与后处理和穿透规则的设置一样。在本实施例中采用SQL语言作为数据库语言,如图10所示为对SQL语言进行调整的代码片段。又如图11所示,采用的是追加查询表:参数为待追加的表物理名。如图12所示,采用的是追加连接条件:与追加表同时使用,参数为连接模式、追加表物理名和追加的表间连接条件。以此类推,可以采用类似的方式预设多种调整。
后处理模块26,用于实现后处理,包括旋转交叉模块261和数据加工模块262。其中:
旋转交叉模块261,用于实现旋转交叉。旋转交叉:用于显示表中某几个字段(称为交叉值字段)的统计值,并将其分组放置在查询结果中,一组列在数据表的左侧(称为交叉行字段),一组列(称为交叉列字段)旋转到数据表的上部成为列表头,统计值则放在对应的交叉单元。旋转交叉数据模型如图9所示。两类交叉的最大差别在于:第一类交叉,即投影交叉属于查询行为,适用于行列设置都已在表样中固定的报表,其交叉结果严格遵循表样格式,其行列结构不会受查询数据的影响;第二类交叉,即旋转交叉属于数据加工行为,其交叉后的行列结构在查询出数据之前不可预料,多用于完全真实地对原始数据进行动态处理。
数据加工模块262,用于对数据结果集进行调整,例如对一些数据进行求和之类的数学计算。或者对数据结果集经过一系列加工算法的变换后得到另一个数据结果集,例如数据结果集的连接。如图13所示为数据结果集连接的示意图:指定两个结果集的连接字段、连接方式和连接后的保留字段,得到连接后的结果集。
前处理和后处理的区别在于:前者在查询之前进行,作用的对象是查询模型;后者在数据库查询之后进行,作用的对象是数据结果集。所以分别称为前处理和后处理。不过需要注意的是这里的查询前和查询后是相对的。也可能存在这样的情况,例如某个模型需要执行两次或两次以上的查询动作,并在不同查询动作之间需要进行调整。这时有可能前一个查询动作的后处理是在后一个查询动作的前处理之前进行的。
穿透规则模块27,用于实现穿透规则的设定。数据穿透:假定报表R1上存在某个区域A1,A1内部有若干业务数据,如果以A1为出发点能够切换到另一张报表R2的上的区域A2,而且A1和A2的内部数据存在着某种内在联系,则称可以从R1穿透到R2。当这种穿透行为传递下去,就可以了解某张报表的数据明细,甚至追溯到它的数据来源。通常会把上述的区域选为一个表格行或者一个表单元,而上述的内在联系就称为穿透规则。例如在浏览公司部门的时候选中某个部门能穿透到部门人员查询查看这个部门下的所有员工。这首先需要在公司部门的查询列和部门人员的查询参数之间建立一个关联关系。例如,可以选择公司部门的部门编码(deptcode)列;在部门人员查询里加入一个查询参数部门编码(deptcode),并在查询定义里引用该参数作为过滤条件。如图14所示,为穿透规则设置进入界面。再例如,要得到这样一种效果,即在浏览公司报表的时候想动态的知道公司下所有用户的信息,也就是说根据选中的公司穿透到用户查询去。在设置穿透规则的时候,将选中的公司编码传递给目标查询的参数作为参数值,目标查询的参数在目标查询模型中进行定义(其界面类似图6)和引用(其界面类似图7)。
模型主体模块24,用于根据元数据中选择的主业务实体及其相关属性,生成查询模型主体。元数据指的是,将业务数据进行抽象,并提供业务实体、关系和属性级的描述。图5就是一个销售订单的元数据模型。而查询模型从某种程度上可以理解为对一系列表的一系列动作的抽象集成。其主体包括基本表、查询字段、查询条件和连接条件,甚至排序字段、分组字段等信息;而动作大多通过参数来实现控制。当系统预置有足够多的元数据,且元数据含有足够丰富的信息的时候,可以很方便的通过元数据完成查询模型主体的构建。例如要查询的是销售相关,则选取图5所述的销售订单元数据中涉及到的业务实体及其相关属性即可。
模型完成模块3,用于创建查询模型并将查询模型持久化,包括查询模型创建模块31;持久化模块32,用于将查询模型进行持久化,持久化是指使数据保存的时间长于其线程寿命,通常指存入数据库中;合法性校验模块33,用于在持久化模块32将查询模型进行持久化之前对查询模型进行合法性校验、以及子查询合法性校验模块331对子查询模型进行合法性校验。参见图2示出的流程图,为模型完成模块3根据所述查询模型创建模块31用于将接收模块1设置过的功能库模块2按照以下步骤完成查询模型设计:
步骤b1、根据子查询模块221所提供的分发参数的路径分发参数到子查询模型和/或原子查询模型。
步骤b12、用前处理模块25结合复合查询生成树对原子查询模型进行调整。步骤b12包括以下2个子步骤:
步骤b121、用投影交叉模块251结合复合查询生成树对子查询模型和/或原子查询模型进行调整;
步骤b122、用数据库整理模块252结合复合查询生成树对子查询模型和/或原子查询模型进行调整。
以上2个步骤均是由参数完成对调整动作的控制,例如对查询的表、字段或条件等信息进行增补或修改。而动作本身的功能则是预存的。而具体对哪个子查询模型和/或原子查询模型进行调整,则依据的是存有参数和节点对应关系的复合查询生成树。
步骤b2、用查询基本元素模块21和参数模块23完成原子查询模型。
步骤b3、用子查询模块221将子查询模型和/或原子查询模型合成复合查询模型。
步骤b4、用后处理模块26对复合查询模型进行后处理。步骤b4包括以下2个子步骤:
步骤b41、用旋转交叉模块261对复合查询模型进行调整;
步骤b42、用数据加工模块262对复合查询模型进行调整。
同其它模块一样,以上2个步骤也都是由参数完成对调整动作的控制,而动作本身的功能则是预存的。
步骤b5、用穿透规则模块27,实现穿透规则的设定。
在本实施例中,采用的是嵌套有SQL语言的JAVA语言。其中SQL语言用来实现非过程化的数据库动作,例如按照一定查询条件筛选表和数据。JAVA语言用来实现SQL语言不能实现的功能,例如旋转交叉的实现等。同时因SQL语言为非过程化的语言,所以JAVA语言还用来保证各个功能和设置按照执行的顺序执行,即实现过程控制。
下面参见图15示出的查询模型的建立方法的一个实施例的流程图,并结合上述系统,对该方法进行详细描述,包括以下步骤:
首先是通过接收模块1接收查询需求,即向用户提供可视化界面,由用户根据界面提供的内容和其需求在界面中选择所需的参数,具体包括下述的步骤x1~x14:
步骤x1、通过接收模块1提供的向导从元数据中选择主业务实体及其相关属性。
步骤x2、通过接收模块1确定查询所需的基本元素。在本实施例中通过数据字典完成基本元素的确定。数据字典对数据库中的表、视图、字段、外键等对象赋予业务含义,并提供统一描述,这样就可以直接通过可视化的操作界面直接从数据字典中选取所需要查询的表、视图、字段等。如图3所示,即为一个数据字典的示例,该例中示出了不同名称的表,如合同管理、固定资产、客户化dap等,还示出了客户化dap下的子表。可以通过接收模块1根据查询模型的业务含义设计要取的数据库中的哪些基本元素或者视图等,例如要建立培训相关的查询模型,则只需展开培训管理,从中选择所需表或视图等。在本实施例中,在实际选择时可以选择基本元素、也可以选择视图等。数据字典是由查询模型系统外部通过接口提供的。在本实施例中,还可以是在所述步骤x1的查询模型主体上进行补充。例如图5就是一个销售订单的元数据模型。在x1步骤中选取了图5所述的销售订单元数据中涉及到的业务实体及其相关属性。在步骤x2中可以对其补充。
步骤x3、通过接收模块1接收复合查询生成树。本步骤是用来对复合查询进行设计。任何一个查询模型,都可以作为其他查询模型的元查询,也就是说,查询模型可以在数据库的基本元素、视图的基础上执行查询,也可以在已定义查询模型的基础上执行查询,在不形成闭环的前提下,此过程可以递归下去,这一行为称为复合查询。复合查询的原理如图4所示,查询将自顶而下地传递和分发参数,并自底而上地合成复合查询。本实施例中采用的方法是,复合查询的参数设置能够传递到它所引用的子查询的参数,同参数名的参数将共享传入的参数值。通常复合查询的参数会包含它所引用的所有子查询的参数的并集。本步骤和步骤x2非常类似,也是在可视化界面进行选择操作,并由系统外部通过接口提供。
步骤x4、通过接收模块1接收参数。因本实施例中采用了层状使用界面,这样在接收参数时是在对应的各个子页面中进行的。
步骤x5、通过接收模块1导入已有的查询模型。
步骤x6、设置模型主体模块24,根据元数据中选择的主业务实体及其相关属性,生成查询模型主体。可以参见对模型主体模块24的具体说明。
步骤x7、设置参数模块23,完成参数定义或引用。
步骤x8、设置查询基本元素模块21,确定查询所需的基本元素。
步骤x9、设置复合查询模块22及子查询模块221,根据复合查询生成树生成从上向下分发参数到子查询模型和/或原子查询模型的路径,以及根据复合查询生成树生成将子查询模型和/或原子查询模型合成复合查询模型的路径。
步骤x10、设置投影交叉模块251,根据参数模块23完成投影交叉相关参数定义或引用。
步骤x11、设置数据库整理模块252,根据参数模块23完成数据库整理相关参数定义或引用。
步骤x12、设置旋转交叉模块261,根据参数模块23完成旋转交叉相关参数定义或引用。
步骤x13、设置数据加工模块262,根据参数模块23完成数据加工相关参数定义或引用。
步骤x14、设置穿透规则模块27,根据参数模块23完成穿透规则相关参数定义或引用。以上从步骤x10到x14中,在本实施例中对应于层次界面中各子页面的设置。当然也可以结合复合查询生成树来完成。
步骤y1、用复合查询模块22分发参数到原子查询模型和/或子查询模型。
步骤y121、用投影交叉模块251结合复合查询生成树对原子查询模型进行调整。
步骤y122、用数据库整理模块252结合复合查询生成树对原子查询模型进行调整。
步骤y2、用查询基本元素模块21和参数模块23完成原子查询模型。
步骤y3、用复合查询模块22将原子查询模型合成复合查询模型。
步骤y41、用旋转交叉模块261对复合查询模型进行调整。
步骤y42、用数据加工模块262对复合查询模型进行调整。
步骤y5、用穿透规则模块27实现穿透规则的设定。
步骤y6、用合法性校验模块33以及子查询合法性校验模块331,对子查询模型和/或查询模型进行合法性校验。合法性校验是在持久化之前进行检查。例如检查代码的语法是否正确、是否存在一些人为错误等。本实施例中通过预运行和其它的一些补充手段进行校验。例如预运行可以为:将筛选参数设为1=0,预运行之后要求返回的值应为空值。补充手段包括检查表是否不存在或是否引用错误等。
步骤y7、用持久化模块32,用于将查询模型进行持久化。
在另一个实施例中,还可以是导入已有查询模型,并在已有查询模型的基础上,进行修改调整得到新的模型。而无需重新建立一个新的查询模型。接收模块还可以接收所述的修改。例如,在原有查询模型的基础上只是对旋转交叉的规则进行调整。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种建立查询模型的系统,其特征在于,包括:
功能库模块(2),存储有建立查询模型的模块,包括:参数模块(23),用于定义或引用参数;查询基本元素模块(21),用于确定查询所需的基本元素;复合查询模块(22),存储有复合查询生成树,用于根据复合查询生成树从上向下分发参数到原子查询模型,以及根据复合查询生成树将原子查询模型合成复合查询模型;
接收模块(1),用于接收查询需求,并根据查询需求对功能库模块(2)的各模块进行设置;
模型完成模块(3),用于创建查询模型并将查询模型持久化,包括查询模型创建模块(31)和将查询模型进行持久化的持久化模块(32);所述查询模型创建模块(31)用于将接收模块(1)设置过的功能库模块(2)按照以下步骤完成查询模型设计:
步骤b1、根据复合查询模块(22)分发参数到原子查询模型;
步骤b2、根据查询基本元素模块(21)和参数模块(23)完成原子查询模型;
步骤b3、根据复合查询模块(22)将原子查询模型合成复合查询模型。
2.如权利要求1所述的系统,其特征在于,所述功能库模块(2)中的模块还包括至少一个以下模块:前处理模块(25),用于实现前处理;后处理模块(26),用于实现后处理;穿透规则模块(27),用于实现穿透规则的设定;
所述查询模型创建模块(31)按照以下步骤完成查询模型设计:
在步骤b1后执行步骤b12:用前处理模块(25)结合复合查询生成树对原子查询模型进行调整;
在步骤b3后执行步骤b4:用后处理模块(26)对复合查询模型进行后处理;
在步骤b4后执行步骤b5:用穿透规则模块(27)实现穿透规则的设定。
3.如权利要求2所述的系统,其特征在于,所述的前处理模块(25)包括:投影交叉模块(251),用于完成投影交叉;数据库整理模块(252),用于对数据库查询行为进行调整;
所述的后处理模块(26)包括:旋转交叉模块(261),用于实现旋转交叉;数据加工模块(262),用于对数据结果集进行调整;
所述步骤b12包括:步骤b121、用投影交叉模块(251)结合复合查询生成树对原子查询模型进行调整;步骤b122、用数据库整理模块(252)结合复合查询生成树对原子查询模型进行调整;
所述步骤b4包括:步骤b41、用旋转交叉模块(261)对复合查询模型进行调整;步骤b42、用数据加工模块(262)对复合查询模型进行调整。
4.如权利要求1至3任一权利要求所述的系统,其特征在于,所述的模型完成模块(3)还包括:合法性校验模块(33),用于在持久化模块(32)将查询模型进行持久化之前对查询模型进行合法性校验。
5.如权利要求3所述的系统,其特征在于,所述的接收模块(1)还用于导入已有查询模型;所述的复合查询模块(22)还包括:子查询模块(221),用于利用已有查询模型作为子查询,根据复合查询生成树从上向下分发参数到原子查询模型和/或子查询,根据复合查询生成树将原子查询模型和/或子查询合成复合查询模型;
所述步骤b1还包括:用复合查询模块(22)分发参数到原子查询模型和/或子查询模型;
所述步骤b121还包括:用投影交叉模块(251)结合复合查询生成树对原子查询模型和/或子查询模型进行调整;所述步骤b122还包括:用数据库整理模块(252)结合复合查询生成树对原子查询模型和/或子查询模型进行调整;
所述步骤b2还包括:用查询基本元素模块(21)和参数模块(23)完成原子查询模型和/或子查询模型;
所述步骤b3还包括:用复合查询模块(22)将原子查询模型和/或子查询模型合成复合查询模型。
6.如权利要求5所述的系统,其特征在于,所述的合法性校验模块(33)还包括:子查询合法性校验模块(331),用于对子查询模型进行合法性校验。
7.如权利要求1所述的系统,其特征在于,所述功能库模块(2)还包括:模型主体模块(24),用于生成查询模型主体;
所述接收模块(1)接收的查询需求还包括:确定元数据;
所述步骤b1前还包括:从元数据中选择主业务实体及其相关属性,生成查询模型主体。
8.如权利要求1所述的系统,其特征在于,所述持久化模块(32)还包括,原子查询模型持久化模块,用于将原子查询模型进行持久化。
9.一种建立查询模型的方法,其特征在于,包括:
步骤X、接收查询需求,并根据接收的查询需求定义或引用参数、确定原子查询模型所需的基本元素和复合查询生成树;
步骤Y、创建查询模型并将查询模型持久化,所述创建查询模型的步骤包括:
步骤y1、根据复合查询生成树从上向下分发参数到原子查询模型;
步骤y2、用所确定的原子查询模型所需的基本元素和所述参数完成原子查询模型的建立;
步骤y3、根据复合查询生成树将原子查询模型合成复合查询。
10.如权利要求9所述的方法,其特征在于,所述步骤y1后还包括步骤y12:根据前处理规则和复合查询生成树对所述原子查询模型的基本元素和参数进行调整;
所述步骤y3后还包括步骤y4:根据后处理规则对合成的复合查询进行后处理;
步骤y5:设定穿透规则。
11.如权利要求10所述的方法,其特征在于,所述步骤y12包括:步骤y121、对原子查询模型进行投影交叉调整;步骤y122、对原子查询模型进行数据库整理调整;
所述的步骤y4包括:步骤y41、对复合查询模型进行旋转交叉调整;步骤y42、对复合查询模型进行数据加工调整。
12.如权利要求9所述的方法,其特征在于,步骤Y所述将查询模型进行持久化之前还包括:对查询模型进行合法性校验。
13.如权利要求9所述的方法,其特征在于,
所述步骤X还包括:导入已有查询模型;
所述步骤y1还包括:根据复合查询树分发参数到原子查询模型和/或子查询模型;
所述步骤y12还包括:根据投影交叉设置结合复合查询生成树对原子查询模型和/或子查询模型进行调整;根据前处理规则结合复合查询生成树对原子查询模型和/或子查询模型进行调整;
所述步骤y2还包括:根据基本元素和参数完成原子查询模型和/或子查询模型;
所述步骤y3还包括:根据复合查询树将原子查询模型和/或子查询模型合成复合查询模型。
14.如权利要求13所述的方法,其特征在于,所述的步骤y2后还包括:对子查询模型进行合法性校验。
15.如权利要求9至14任一权利要求所述的方法,其特征在于,步骤X还包括:从元数据中选择主业务实体及其相关属性,生成查询模型主体。
16.如权利要求9所述的方法,其特征在于,所述的步骤y2还包括,将原子模型持久化。
CN2008102241793A 2008-10-24 2008-10-24 建立查询模型的系统及建立方法 Expired - Fee Related CN101382957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102241793A CN101382957B (zh) 2008-10-24 2008-10-24 建立查询模型的系统及建立方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102241793A CN101382957B (zh) 2008-10-24 2008-10-24 建立查询模型的系统及建立方法

Publications (2)

Publication Number Publication Date
CN101382957A true CN101382957A (zh) 2009-03-11
CN101382957B CN101382957B (zh) 2011-01-05

Family

ID=40462795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102241793A Expired - Fee Related CN101382957B (zh) 2008-10-24 2008-10-24 建立查询模型的系统及建立方法

Country Status (1)

Country Link
CN (1) CN101382957B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436475A (zh) * 2011-09-29 2012-05-02 用友软件股份有限公司 数据表汇总装置和数据表汇总方法
CN101593203B (zh) * 2009-05-12 2012-05-23 用友软件股份有限公司 带有前处理和后处理的数据库复合查询系统及方法
CN102682118A (zh) * 2012-05-15 2012-09-19 北京久其软件股份有限公司 一种多维数据模型访问方法及装置
CN102819544A (zh) * 2011-12-21 2012-12-12 金蝶软件(中国)有限公司 查询方案的构造方法及装置
CN103559619A (zh) * 2013-11-12 2014-02-05 北京京东尚科信息技术有限公司 一种服装尺码信息的应答方法及系统
CN104376125A (zh) * 2014-12-11 2015-02-25 南威软件股份有限公司 一种业务表单动态增减内容的方法
CN105117456A (zh) * 2015-08-19 2015-12-02 焦点科技股份有限公司 一种提取实体信息的方法
CN105160064A (zh) * 2015-07-29 2015-12-16 中铁城市规划设计研究院有限公司 一种混凝土小梁疲劳试验的损伤识别和预估系统
CN105912603A (zh) * 2016-04-06 2016-08-31 百度在线网络技术(北京)有限公司 网络空间的业务查询方法及装置
CN106815353A (zh) * 2017-01-20 2017-06-09 星环信息科技(上海)有限公司 一种数据查询的方法及设备
CN108197255A (zh) * 2017-12-29 2018-06-22 上海瑞家信息技术有限公司 一种设置查询树的方法、设备及计算机可读存储介质
CN108388564A (zh) * 2017-02-03 2018-08-10 百度在线网络技术(北京)有限公司 查询处理方法、装置及其设备
CN109298857A (zh) * 2018-10-09 2019-02-01 杭州朗和科技有限公司 Dsl语句模型的建立方法、介质、装置和计算设备
CN109344177A (zh) * 2018-09-18 2019-02-15 图普科技(广州)有限公司 一种模型组合方法及装置
CN113268495A (zh) * 2021-05-25 2021-08-17 深圳壹账通智能科技有限公司 数据搜索方法、装置、电子设备及存储介质

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101593203B (zh) * 2009-05-12 2012-05-23 用友软件股份有限公司 带有前处理和后处理的数据库复合查询系统及方法
CN102436475A (zh) * 2011-09-29 2012-05-02 用友软件股份有限公司 数据表汇总装置和数据表汇总方法
CN102436475B (zh) * 2011-09-29 2013-12-25 用友软件股份有限公司 数据表汇总装置和数据表汇总方法
CN102819544A (zh) * 2011-12-21 2012-12-12 金蝶软件(中国)有限公司 查询方案的构造方法及装置
CN102682118A (zh) * 2012-05-15 2012-09-19 北京久其软件股份有限公司 一种多维数据模型访问方法及装置
CN102682118B (zh) * 2012-05-15 2015-02-04 北京久其软件股份有限公司 一种多维数据模型访问方法及装置
CN103559619A (zh) * 2013-11-12 2014-02-05 北京京东尚科信息技术有限公司 一种服装尺码信息的应答方法及系统
CN104376125B (zh) * 2014-12-11 2017-12-19 南威软件股份有限公司 一种业务表单动态增减内容的方法
CN104376125A (zh) * 2014-12-11 2015-02-25 南威软件股份有限公司 一种业务表单动态增减内容的方法
CN105160064A (zh) * 2015-07-29 2015-12-16 中铁城市规划设计研究院有限公司 一种混凝土小梁疲劳试验的损伤识别和预估系统
CN105117456A (zh) * 2015-08-19 2015-12-02 焦点科技股份有限公司 一种提取实体信息的方法
CN105912603A (zh) * 2016-04-06 2016-08-31 百度在线网络技术(北京)有限公司 网络空间的业务查询方法及装置
CN106815353A (zh) * 2017-01-20 2017-06-09 星环信息科技(上海)有限公司 一种数据查询的方法及设备
CN108388564A (zh) * 2017-02-03 2018-08-10 百度在线网络技术(北京)有限公司 查询处理方法、装置及其设备
CN108197255A (zh) * 2017-12-29 2018-06-22 上海瑞家信息技术有限公司 一种设置查询树的方法、设备及计算机可读存储介质
CN108197255B (zh) * 2017-12-29 2021-01-15 上海瑞家信息技术有限公司 一种设置查询树的方法、设备及计算机可读存储介质
CN109344177A (zh) * 2018-09-18 2019-02-15 图普科技(广州)有限公司 一种模型组合方法及装置
CN109298857A (zh) * 2018-10-09 2019-02-01 杭州朗和科技有限公司 Dsl语句模型的建立方法、介质、装置和计算设备
CN113268495A (zh) * 2021-05-25 2021-08-17 深圳壹账通智能科技有限公司 数据搜索方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN101382957B (zh) 2011-01-05

Similar Documents

Publication Publication Date Title
CN101382957B (zh) 建立查询模型的系统及建立方法
US11755575B2 (en) Processing database queries using format conversion
US8145681B2 (en) System and methods for generating manufacturing data objects
EP3107050A1 (en) System for data aggregation and report generation
US20230185827A1 (en) System and method for enabling multiple parents with weights in a multidimensional database environment
CN105320690B (zh) 一种基于元数据的统计表单快速生成方法及系统
US8037409B2 (en) Method for learning portal content model enhancements
US8782081B2 (en) Query template definition and transformation
CA2967328C (en) Processing queries containing a union-type operation
CN104573115A (zh) 支持多类型数据库操作的集成接口的实现方法及系统
CN103020158A (zh) 一种报表创建方法、装置和系统
CN104200402A (zh) 一种电网多个数据源的源数据发布方法及系统
CN106648587A (zh) 一种基于注解的Web应用代码生成方法
US20100030757A1 (en) Query builder for testing query languages
US20130166497A1 (en) Dynamic recreation of multidimensional analytical data
CN107665216A (zh) 一种数据库访问方法及中间件
CN115469941A (zh) 基于FlinkSQL的风控指标计算开发的自动配置处理方法及系统
CN110442602A (zh) 数据查询方法、装置、服务器及存储介质
CN105279269A (zh) 一种支持表自由关联的sql生成方法和系统
US7325003B2 (en) Method and system for mapping datasources in a metadata model
CN110019299A (zh) 一种用于创建或刷新分析型数据仓库的离线数据集合的方法和装置
US9135302B2 (en) Query rewrite with a nested materialized view
CN103970900B (zh) 基于工业现场的多维交叉数据柔性管理方法及系统
US11036471B2 (en) Data grouping for efficient parallel processing
US10255316B2 (en) Processing of data chunks using a database calculation engine

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: YONYOU NETWORK TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: UFIDA SOFTWARE CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 100094 Haidian District North Road, Beijing, No. 68

Patentee after: Yonyou Network Technology Co., Ltd.

Address before: 100094 Haidian District North Road, Beijing, No. 68

Patentee before: UFIDA Software Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110105

Termination date: 20191024