数据查询方法及装置与流程

文档序号:14940995发布日期:2018-07-13 20:46阅读:129来源:国知局
本申请涉及数据处理
技术领域
,具体而言,涉及一种数据查询方法及装置。
背景技术
:目前,数据库技术已经广泛的应用到各个企业当中,用于存储企业运营产生的各种数据,以便于当企业员工有需求时,无需技术人员介入,通过此数据查询的方式从数据库中查询到自己想要获得的数据。技术实现要素:本申请的目的在于提供一种数据查询方法及装置。本申请的实施例通过如下方式实现:第一方面,本申请实施例提供了一种数据查询方法,所述方法包括:获得用于查询业务数据的关键字信息,并根据所述关键字信息获得m个预设业务数据表,m为不小于2的整数;根据所述m个预设业务数据表形成一一对应的m个星型关联模型;根据所述m个预设业务数据表中任意两个预设业务数据表之间的共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联,获得经关联星型关联模型,n为正整数;将所述经关联星型关联模型作为可执行sql语句从预设数据库中查询到与所述关键字信息对应的m种业务数据。结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述获得用于查询业务数据的关键字信息之后,所述方法还包括:根据所述关键字信息获得用于作为查询限制条件的p个预设维度数据表,p为正整数。结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述根据所述m个预设业务数据表形成一一对应的m个星型关联模型,包括:根据m个预设业务数据中每个预设业务数据与所述p个预设维度数据表中对应的至少一个预设维度数据表之间的至少一个预设从关联关系,将每个预设业务数据与对应的至少一个预设维度数据表关联形成一星型关联模型,共获得所述m个预设业务数据表一一对应的所述m个星型关联模型。结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述根据所述m个预设业务数据表中任意两个预设业务数据表之间的共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联,获得经关联星型关联模型,包括:根据所述m个预设业务数据表中任意两个预设业务数据表之间的所述共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联;判断所述m个预设业务数据表中是否有不具备预设主关联关系而未关联的星型关联模型;在为是时,将所述未关联的星型关联模型作为无效模型删除,获得不大于m个的经关联星型关联模型。结合上述第一方面提供的技术方案,在一些可能的实现方式中,所述将所述经关联星型关联模型作为可执行sql语句从预设数据库中查询到与所述关键字信息对应的m种业务数据,包括:根据所述经关联星型关联模型所包含的数据,按预设的关键字的语义规则构建出对应的select子句、from子句、where子句、groupby子句和orderby子句;将所述构建出对应的select子句、from子句、where子句、groupby子句和orderby子句组合为可执行sql语句从预设数据库中查询到与所述关键字信息对应的所述m种业务数据。第二方面,本申请实施例提供了一种数据查询装置,其特征在于,所述装置包括:第一信息转换模块,用于获得用于查询业务数据的关键字信息,并根据所述关键字信息获得m个预设业务数据表,m为不小于2的整数。星型模型构建模块,用于根据所述m个预设业务数据表形成一一对应的m个星型关联模型。星型模型关联模块,用于根据所述m个预设业务数据表中任意两个预设业务数据表之间的共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联,获得经关联星型关联模型,n为正整数。关联查询模块,用于将所述经关联星型关联模型作为可执行sql语句从预设数据库中查询到与所述关键字信息对应的m种业务数据。结合上述第二方面提供的技术方案,在一些可能的实现方式中,所述装置还包括:第二信息转换模块,用于根据所述关键字信息获得用于作为查询限制条件的p个预设维度数据表,p为正整数。结合上述第二方面提供的技术方案,在一些可能的实现方式中,所述星型模型构建模块,具体用于根据m个预设业务数据中每个预设业务数据与所述p个预设维度数据表中对应的至少一个预设维度数据表之间的至少一个预设从关联关系,将每个预设业务数据与对应的至少一个预设维度数据表关联形成一星型关联模型,共获得所述m个预设业务数据表一一对应的所述m个星型关联模型。结合上述第二方面提供的技术方案,在一些可能的实现方式中,所述星型模型关联模块,包括:星型模型关联单元,用于根据所述m个预设业务数据表中任意两个预设业务数据表之间的所述共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联。未关联判断单元,用于判断所述m个预设业务数据表中是否有不具备预设主关联关系而未关联的星型关联模型。星型模型关联优化单元,用于在为是时,将所述未关联的星型关联模型作为无效模型删除,获得不大于m个的经关联星型关联模型。结合上述第二方面提供的技术方案,在一些可能的实现方式中,所述关联查询模块包括:sql子句构建单元,用于根据所述经关联星型关联模型所包含的数据,按预设的关键字的语义规则构建出对应的select子句、from子句、where子句、groupby子句和orderby子句。关联条件构建查询单元,用于将所述构建出对应的select子句、from子句、where子句、groupby子句和orderby子句组合为可执行sql语句从预设数据库中查询到与所述关键字信息对应的所述m种业务数据。与现有技术相比本申请实施例的有益效果是:在获得用户用于查询业务数据的关键字信息时,根据业务数据对应的关键字信息,可以构建出与m种业务数据对应且用于查询的m个星型关联模型。进而再根据m个预设业务数据表中任意两个预设业务数据表之间共n个的预设主关联关系,将m个星型关联模型中任意两个星型关联模型之间进行关联,并将获得的经关联星型关联模型作为可执行sql语句从预设数据库中查询到该m种业务数据。因此,实现了用户在一次查询中,通过预设主关联关系,则可从数据库中查询到自己需要查询至少两种业务数据,甚至是查询到相互之间跨主体的至少两种业务数据,简化了操作,提高了适用性和用户体验。为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本申请第一实施例提供的一种终端设备的结构框图;图2示出了本申请第二实施例提供的一种数据查询方法的流程图;图3示出了本申请第二实施例提供的一种数据查询方法的架构图;图4示出了本申请第二实施例提供的一种数据查询方法实际应用的第一示例图;图5示出了本申请第二实施例提供的一种数据查询方法实际应用的第二示例图;图6示出了本申请第三实施例提供的一种数据查询装置的第一结构框图;图7示出了本申请第三实施例提供的一种数据查询装置的第二结构框图;图8示出了本申请第三实施例提供的一种数据查询装置中星型模块关联模块的结构框图;图9示出了本申请第三实施例提供的一种数据查询装置中关联查询模块的结构框图。具体实施方式在企业的数据查询中,用户可在终端设备的查询界面上输入自己需要查询的业务所对应的关键字,例如,关键字为:2017年和销售数据。故终端设备则从数据库中对应查询到关键字所对应的2017年全年的销售数据。但发明人经过长期的实践研究发现,现有的数据库查询方式虽然能够查询到用户需要的数据,并满足用户的需求。但是,当用户需要一次性查询多个主题的关键字时,例如,关键字为:销售数据、新增客户数量和财务报表数据,由于检索方式的限制,导致无法一次性从数据库中查询出多个主题的关键字所对应的各业务数据。该技术问题使得用户需要反复多次检索,其操作极为繁琐,严重影响了适用性和用户体验。以上现有技术中的方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本申请实施例针对上述问题所提出的解决方案,都应该是发明人在本申请过程中对本申请做出的贡献。基于上述研究,本申请实施例提供了一种数据查询方法及装置。在获得用户用于查询业务数据的关键字信息时,根据业务数据对应的关键字信息,可以构建出与m种业务数据对应且用于查询的m个星型关联模型。进而再根据m个预设业务数据表中任意两个预设业务数据表之间共n个的预设主关联关系,将m个星型关联模型中任意两个星型关联模型之间进行关联,并将获得的经关联星型关联模型作为可执行sql语句从预设数据库中查询到该m种业务数据。因此,实现了用户在一次查询中,通过预设主关联关系,则可从数据库中查询到自己需要查询至少两种业务数据,甚至是查询到相互之间跨主体的至少两种业务数据,简化了操作,提高了适用性和用户体验。下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。第一实施例请参阅图1,本申请实施例提供了一种终端设备10,所述终端设备10包括:数据查询装置、存储器101、存储控制器102、处理器103、外设接口104、输入输出单元105、显示单元106。所述存储器101、存储控制器102、处理器103、外设接口104、输入输出单元105、显示单元106,各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述数据查询装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器中或固化在所述终端设备10的windows操作系统中的软件功能模块。所述处理器103用于执行存储器101中存储的可执行模块,例如所述数据查询装置包括的软件功能模块或计算机程序。其中,存储器101可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序,后续本发明实施例任一实施例揭示的过程定义的终端设备10所执行的方法可以应用于处理器103中,或者由处理器103实现。处理器103可以是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器103可以是微处理器或者该处理器也可以是任何常规的处理器等。所述外设接口104将各种输入输出单元105耦合至处理器103以及存储器101。在一些实施例中,外设接口,处理器以及存储控制器可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。输入输出单元105用于提供给用户输入数据实现用户与数据采集终端的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。显示单元106在所述移动终端与用户之间提供一个交互界面,例如用户操作界面,或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。请参阅图2,本申请实施例提供了一种数据查询方法,应用于该终端设备,该数据查询方法包括:步骤s100、步骤s200、步骤s300和步骤s400。步骤s100:获得用户需要查询的m种业务数据对应的关键字信息,并根据所述关键字信息获得与所述m种业务数据一一对应的m个预设业务数据表,m为不小于2的整数;步骤s200:根据所述m个预设业务数据表形成一一对应的m个星型关联模型;步骤s300:根据所述m个预设业务数据表中任意两个预设业务数据表之间共小于m个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型之间进行关联,获得经关联星型关联模型;步骤s400:将所述经关联星型关联模型作为可执行sql语句从预设数据库中查询到所述m种业务数据。下面将具体说明上述数据查询方法的实现过程。首先,终端设备中预先构建了一软件架构便于实现为数据查询方法的执行,如图3所述,该软件架构包括了:访问交互层、引擎层和存储层。具体的,访问交互层主要用于在本数据查询方法执行时用于与用户进行交互,引擎层包括了在本数据查询方法执行需要启动运行的数据查询引擎和数据单元,该数据单元中预先存储了各个预设数据表,每个预设数据表均可以为预设业务数据表或预设维度数据表。该数据查询引擎的运行则会从数据单元中查找到与用户输入的关键字信息对应的预设数据表,并根据预设数据表获得最终的可执行sql语句。存储层则预先存储了各种需要被查询的业务数据,存储层主要用于在本数据查询方法执行,数据查询引擎通过可执行sql语句从存储层中查询到对应的业务数据,以使数据查询引擎再将该业务数据反馈给访问交互层,以便用户获知查询结果。进一步的,在本数据查询方法的具体执行过程中:当用户需要通过查询来获得业务数据时,用户并不知晓具体的业务员数据是如何,但用户可在该终端设备的交互界面上输入用于查询业务数据的关键字信息,例如,关键字信息可以为:2017年销售数据和2017年财务报表数据。其中,用户可以在交互界面上以选择的方式输入关键字信息,而用户还可以在交互界面上以直接输入的方式输入关键字信息,本实施例不做具体限定。用户输入关键字信息之后,若用户在终端设备的交互界面上确认提交该关键字信息,相应的,终端设备则获得了该关键字信息。需要说明的是,关键字信息应当是包括了:对多结果字段信息和对多过滤字段信息。结果字段信息用于表征用户需要查询到的结果本身,而过滤字段信息则用于作为本次查询的限制条件。例如,结果字段信息可以为:销售数据、财务报表数据、新增客户数量数据、xx产生损坏数量等;过滤字段信息则可以为:2017年全年、成都地区、全中国等。本实施例中,根据查询包括对多结果字段和对多过滤字段,终端设备中相应的预先设置并存储了多个预设业务数据表和多个预设维度数据表。其中,每个预设业务数据表的性质则与结果字段信息的性质对应,而每个预设维度数据表的性质则与过滤字段信息的性质对应。作为一种方式,每个预设业务数据表或每个预设维度数据表均由三个子表构成,三个子表分别为:基本信息定义子表、关联信息定义子表和字段信息定义子表,如下表1-3所示:表1表2表3可以理解到,三个子表中所填入的信息不同,则会使得三个子表构成预设业务数据表或预设维度数据表。进一步的,针对一个预设业务数据表来说,其子表则为:预设业务数据基本信息定义子表、预设业务数据关联信息定义子表和预设业务数据字段信息定义子表;而对一个预设维度数据表来说,其子表则为:预设维度数据基本信息定义子表、预设维度数据关联信息定义子表和预设维度数据字段信息定义子表。在终端设备获得关键字信息后,终端设备并不知晓对关键字信息哪个字段信息是结果字段信息,而哪个字段信息又是过滤字段信息。终端设备可将该关键字信息分别与各预设业务数据字段信息定义子表和各预设维度数据字段信息定义子表匹配,从而将关键字信息转换为对应的多个结果字段信息和多个过滤字段信息。当然,本实施例的关键字信息中包括多个过滤字段信息是为便于对本方案进行全面的说明,但并不作为对本实施例的限定,其实际查询中,关键字信息也可不包括任何过滤字段信息或多个结果字段信息。进一步的,由于多个结果字段信息中可能包括相互重复的结果字段信息,终端设备则按照每个结果字段信息在对应的一预设业务数据字段信息定义子表中字段权重的高低,将相互重复且字段权重低的结果字段信息过滤掉,从而获得m个结果字段信息,m为不小于2的整数。相应的,也由于多个过滤字段信息中可能包括相互重复的过滤字段信息,终端设备则也按照每个过滤字段信息在对应的一预设维度数据字段信息定义子表中字段权重的高低,将相互重复且字段权重低的过滤字段信息过滤掉,从而获得p个过滤字段信息,p正整数。终端设备根据获得的m个结果字段信息中每个结果字段信息在对应的一预设业务数据字段信息定义子表中的所属业务表id而查找出每个结果字段信息所对应的预设业务数据表,而共获得m个预设业务数据表。相应的,终端设备也据获得的p个过滤字段信息中每个过滤字段信息在对应的一预设维度数据字段信息定义子表中的所属维度表id而查找出每个结果字段信息所对应的预设维度数据表,而共获得p个预设维度数据表。且可以理解到,p个预设维度数据表均用于作为查询限制条件。作为一种便于后续的查询的实现方式,终端设备可根据m个预设业务数据表和p个预设维度数据表来构建出与m个预设业务数据表形成一一对应的m个星型关联模型。其中,形成每个m个星型关联模型的方式均相同,本实施例以m个星型关联模型中任一个星型关联模型的形成来做详细说明,但并不作为限定。具体的,在该星型关联模型形成前,以一个预设业务数据表为核心,根据该预设业务数据表的预设业务数据关联信息定义子表中的至少一个预设主关联关系,从而可以从p个预设维度数据表选择出可关联的至少一个预设维度数据表。终端设备将该预设业务数据表与至少一个预设维度数据表进行关联则形成了该星型关联模型。此外,若根据该预设业务数据表的预设业务数据关联信息定义子表中的各预设主关联关系,以及根据p个预设维度数据表的预设维度数据关联信息定义子表中的p个预设从关联关系,而发现该预设业务数据表与另一个预设业务数据表可关联,而该另一个预设业务数据表又与至少一个预设维度数据表可关联,那么则以该另一个预设业务数据表为核心建立桥接式的星型关联模型。可以理解到,若无可作为桥接的另一个预设业务数据表,那么终端设备则进行报错。另外,本实施例虽然具有m个预设业务数据表,且m不小于2,但其仅作为本实施例的一种实现方式。在实际应用中,m个也可以为小于2的正整数。即若在m为0时,则没有任何一个预设业务数据表为核心去建立星型关联模型。那么在这种情况下,终端设备则创建一个空的星型关联模型,将所有的p各预设维度数据表均附属到该空的星型关联模型中。进一步的,在创建出m个星型关联模型后。需要对该m个星型关联模型以合并同类项的方式做进一步的优化,以减小后续查询时的运算量。具体的,终端设备首先需要对m个星型关联模型中每个星型关联模型的模型权重进行调整,以作为优化的依据。终端设备首先将每个预设业务数据表中的关联权重作为对应的星型关联模型的模型权重。进而终端设备再根据预设的调节规则来调节需要被调节的星型关联模型的模型权重。具体的,按照该预设的调节规则调节模型权重时:其中,终端设备逐一对每个星型关联模型进行分析,以判断m个星型关联模型中是否有星型关联模型包含了所有m个星型关联模型中的度量字段。在判断为是时,则将该星型关联模型的模型权重乘以一个第一预设值来获得调整后的模型权重,第一预设值可以为例如100。此外,终端设备还逐一对每个星型关联模型进行分析,以判断m个星型关联模型中是否有星型关联模型包含了所有m个星型关联模型的m个预设业务数据表中的所有字段。在判断为是时,则也将该星型关联模型的模型权重乘以一个第一预设值来获得调整后的模型权重,第一预设值可以为例如100。另外,终端设备还逐一对每个星型关联模型进行分析,以判断m个星型关联模型中是否有星型关联模型的预设业务数据表中预设有字段的过滤条件,在判断为是时,则也将该星型关联模型的模型权重乘以一个第二预设值来获得调整后的模型权重,第二预设值可以为例如10。进一步的,在调整m个星型关联模型的模型权重后,终端设备根据m个预设业务数据表中任意两个预设业务数据表之间的共n个的预设主关联关系,将m个星型关联模型任意两个星型关联模型进行关联。当然,在进行关联时,作为另一种实现方式,终端设备可按照模型权重由大到小对m个星型关联模型进行排序,并按照模型权重由大到小的顺序对m个星型关联模型进行关联,例如,星型关联模型s1的模型权重大于星型关联模型s2的模型权重,而星型关联模型s2的模型权重则大于星型关联模型s3的模型权重,进而关联的顺序和方式即为,首先判断星型关联模型s1与星型关联模型s2是否能进行关联,为是则将星型关联模型s1与星型关联模型s2进行关联,进而再判断星型关联模型s2与星型关联模型s3是否能进行关联,为是则将星型关联模型s2与星型关联模型s3进行关联。可以理解到,上述的另一种关联的实现方式并不作为本实施例的限定。进一步的,终端设备也通过在将m个星型关联模型中任意两个星型关联模型进行关联的过程中对m个星型关联模型进行合并同类项的优化。即终端设备可判断m个预设业务数据表中是否有不具备预设主关联关系而未关联的星型关联模型。在判断为是时,则将该未关联的星型关联模型中的预设业务数据表中的所有字段按照模型权重由高至低依次与m个星型关联模型中的其它星型关联模型中的字段匹配。并在匹配时,将该未关联的星型关联模型中的预设业务数据表中的该匹配字段删除,从在该未关联的星型关联模型中的预设业务数据表中所有字段匹配时,该未关联的星型关联模型中的预设业务数据表则被分解删除。也在判断为是时,则将该未关联的星型关联模型中每个预设维度数据表中的所有字段按照模型权重由高至低依次与m个星型关联模型中的其它星型关联模型中的字段匹配。并在匹配时,将该未关联的星型关联模型中预设维度数据表中的该匹配字段删除,从在该未关联的星型关联模型中的每个预设维度数据表中所有字段均匹配时,该未关联的星型关联模型中的每个预设业务数据表则被分解删除。进而,该未关联的星型关联模型则被作为无效模型删除了。若该未关联的星型关联模型中有任意字段不能匹配,终端设备则进行报错。例如,在按模型权重高低排序的星型关联模型s1、星型关联模型s2、星型关联模型s3和星型关联模型s4中。若星型关联模型s4与星型关联模型s1、星型关联模型s2和星型关联模型s3之间均不具备预设主关联关系而无法将其进行关联。则在星型关联模型s4中的字段匹配后将星型关联模型s4删除。进一步的,在进行星型关联模型相互之间的关联或进行将未关联的星型关联模型作为无效模型删除后,获得不大于m个的经关联星型关联模型。为对该不大于m个的经关联星型关联模型进行进一步的优化,即针对不大于m个的经关联星型关联模型中的每个经关联星型关联模型均进行优化。由于对每个经关联星型关联模型的优化方式均相同,为便于说明和理解,本实施例以任意一个经关联星型关联模型为例来进行说明。针对该经关联星型关联模型,判断该经关联星型关联模型中是否有预设维度数据表中所有数据是否还存在该经关联星型关联模型中其它的预设维度数据表或预设业务数据表中,在判断为是,则也将该预设维度数据表删除,从而形成对该经关联星型关联模型进行数据优化。本实施例中,查询所采用的方式为sql方式(structuredquerylanguage、结构化查询语言),在对每个经关联星型关联模型均进行优化之后,则需要将不大于m个的经关联星型关联模型转换为适配sql的方式来作为可执行sql语句。具体的,终端设备可去分析每个经关联星型关联模型中的粒度数据,其中,粒度数据也可为查询限制条件,例如为:年、月、日等。将不大于m个的经关联星型关联模型按照粒度数据又大至小的降序排序,并以最大的粒度为目标,从而将每个经关联星型关联模型的粒度数据均转换统一到该最大的粒度上。例如,将所有的粒度均统一到粒度为“年”上。之后,终端设备则可根据经关联星型关联模型所包含的数据,并按预设的关键字的语义规则构建出对应的select子句。具体的,终端设备可查询每个经关联星型关联模型按照中的所有结果字段来对应生成select子句中所有字段信息。若被查询到的字段在涉及敏感信息的限制条件,则对该字段用加密函数处理,若被查询到的字段是日期类型,则通过日期函数将其格式化处理,若被查询到的字段是度量字段,则对该字段采用聚合函数进行处理。与此同时,终端设备也可根据经关联星型关联模型所包含的数据,并按预设的关键字的语义规则构建出对应的from子句。具体的,将不大于m个的经关联星型关联模型中模型权重最大的作为主经关联星型关联模型,该主经关联星型关联模型的预设业务数据表依次与其它每个经关联星型关联模型的预设业务数据表构建出join子句,然后每个构建出join子句的经关联星型关联模型的预设业务数据表再与主经关联星型关联模型的预设业务数据表依次关联构建join子句,从而依次递归,直至所有的join子句构建完成。同时,该主经关联星型关联模型的预设业务数据表依次与其它每个经关联星型关联模型的每个预设维度数据表构建出join子句,然后,再将每个经关联星型关联模型的预设业务数据表依次与该主经关联星型关联模型的每个预设维度数据表依次构建出join子句,从而也依次递归,直至所有的join子句也构建完成。进而便完成了from子句的构成。当然,在构建from子句时,若为空的星型关联模型,若该空的星型关联模型只有一个预设维度数据表,则无需构建join子句。若该空的星型关联模型至少两个预设维度数据表,则找到该至少两个预设维度数据表所关联的各个预设业务数据表中权重最大的预设业务数据表来作为关联路径,从而构建join子句。与此同时,终端设备也可根据经关联星型关联模型所包含的数据,并按预设的关键字的语义规则构建出对应的where子句。具体的,终端设备可查询每个经关联星型关联模型按照中的所有过滤字段来对应生成where子句中所有字段信息。若被查询到的字段是日期类型,则通过日期函数将其格式化处理,且若还存在fulljoin关联关系,则添加coalesce函数处理对其进行处理。若被查询到的字段是涉及定义查询范围的字段,则根据该字段生成between。若被查询到的字段的字符串且是单个子,则生成like,若是多个子则生成in,若in的值超过1000,则生成多个or+in组合,如f1(in(xx,xx)orin(xx,xx))。与此同时,终端设备也可根据经关联星型关联模型所包含的数据,并按预设的关键字的语义规则构建出对应的groupby子句。具体的,终端设备可查询每个经关联星型关联模型按照中的所有配置字段来对应生成groupby子句中所有字段信息。若被查询到的字段是日期类型,则通过日期函数将其格式化处理,且若还存在fulljoin关联关系,则添加coalesce函数处理对其进行处理。与此同时,终端设备也可根据经关联星型关联模型所包含的数据,并按预设的关键字的语义规则构建出对应的orderby子句。具体的,终端设备可查询每个经关联星型关联模型按照中的所有排了序的结果字段来对应生成orderby子句中所有字段信息。进一步的,终端设备再将构建出对应的select子句、from子句、where子句、groupby子句和orderby子句组合为可执行sql语句从预设数据库中查询到与关键字信息对应的m种业务数据。需要说明的是,本实施例中,若需要加入新的预设业务数据或预设维度数据表,即将新的预设业务数据的信息或预设维度数据表的信息以表1-3的方式填入,再将该新的预设业务数据的信息或预设维度数据表存储到终端设备中则完成了添加,使其扩展性极强。本实施例所提供的数据查询方法在实际应用时:若需要的关键字信息为:2017年的订单吨数和订单融资金额。且预先设置的与该关键字信息相关的的预设业务数据表和预设维度数据如表4-6所示:表4表5表6进一步的,根据关键字信息“2017年的订单吨数和订单融资金额”而转换为多个过滤字段信息和多个结果字段信息即如图4所示,进而获得小于m个的经关联星型关联模型即如图5所示。那么根据该小于m个的经关联星型关联模型生成的关键字的语义规则的可执行sql语句即为:selectd1.date_yearas"年份",sum(f1.ord_wgt)as"订单吨数",sum(f2.fin_amt)as"融资金额"from(selectf1.ord_idasord_id,f1.date_idasdate_id,sum(f1.ord_wgt)asord_wgtfromssd.ord_all_curf1where1=1andsubstr(f1.date_id,1,4)between'2017'and'2017'groupbyf1.ord_id,f1.date_id)f1innerjoinssd.scf_fin_billf2onf1.ord_id=f2.ord_idleftjoinssd.dim_dated1onf1.date_id=d1.date_idgroupbyd1.date_year最终,根据该可执行sql语句则会从数据库中查询到如表7所示的结果:年份订单金额融资金额20178,123,223.12134,892,032.89表7第三实施例请参阅图6,本申请实施例提供了一种数据查询装置100,该数据查询装置100包括:第一信息转换模块110,用于获得用于查询业务数据的关键字信息,并根据所述关键字信息获得m个预设业务数据表,m为不小于2的整数。星型模型构建模块120,用于根据所述m个预设业务数据表形成一一对应的m个星型关联模型。星型模型关联模块130,用于根据所述m个预设业务数据表中任意两个预设业务数据表之间的共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联,获得经关联星型关联模型,n为正整数。关联查询模块140,用于将所述经关联星型关联模型作为可执行sql语句从预设数据库中查询到与所述关键字信息对应的m种业务数据。请参阅图7,在本申请实施例中,该数据查询装置100还包括:第二信息转换模块150,用于根据所述关键字信息获得用于作为查询限制条件的p个预设维度数据表,p为正整数。其中,星型模型构建模块120,具体用于根据m个预设业务数据中每个预设业务数据与所述p个预设维度数据表中对应的至少一个预设维度数据表之间的至少一个预设从关联关系,将每个预设业务数据与对应的至少一个预设维度数据表关联形成一星型关联模型,共获得所述m个预设业务数据表一一对应的所述m个星型关联模型。请参阅图8,在本申请实施例中,星型模型关联模块130包括:星型模型关联单元131,用于根据所述m个预设业务数据表中任意两个预设业务数据表之间的所述共n个的预设主关联关系,将所述m个星型关联模型中任意两个星型关联模型进行关联。未关联判断单元132,用于判断所述m个预设业务数据表中是否有不具备预设主关联关系而未关联的星型关联模型。星型模型关联优化单元133,用于在为是时,将所述未关联的星型关联模型作为无效模型删除,获得不大于m个的经关联星型关联模型。请参阅图8,在本申请实施例中,关联查询模块140包括:sql子句构建单元141,用于根据所述经关联星型关联模型所包含的数据,按预设的关键字语义规则构建出对应的select子句、from子句、where子句、groupby子句和orderby子句。关联条件构建查询单元142,用于将所述构建出对应的select子句、from子句、where子句、groupby子句和orderby子句组合为可执行sql语句从预设数据库中查询到与所述关键字信息对应的所述m种业务数据。需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1