数据查询方法、装置、存储介质以及电子设备与流程

文档序号:29358982发布日期:2022-03-23 00:51阅读:121来源:国知局
1.本发明涉及金融科技领域,尤其涉及数据查询
技术领域
:,具体涉及一种数据查询方法、装置、存储介质以及电子设备。
背景技术
::2.现有技术中的计算引擎,例如spark是专为大规模数据处理而设计的快速通用的计算引擎,而pyspark是spark为python开发者提供的应用程序api接口,支持通过hql的方式访问数据湖中的数据。但其直接编写原生hql语句会存在两方面的问题,严重影响数据查询效率:一是统一管理问题,难以由专业人员对开发人员提交的hql脚本质量进行有效地把关;二是优化问题,各个开发人员需要耗费精力去优化hql语句。3.针对上述的问题,目前尚未提出有效的解决方案。技术实现要素:4.本发明实施例提供了一种数据查询方法、装置、存储介质以及电子设备,以至少解决由于现有技术中采用直接编写的原生查询语句质量较低造成的数据查询效率低的技术问题。5.根据本发明实施例的一个方面,提供了一种数据查询方法,用于通过目标计算引擎查询数据湖中的数据,包括:基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;基于上述目标查询语句查询并获取上述目标数据。6.可选地,在基于上述目标查询语言查询并获取目标数据之前,上述方法还包括:建立上述目标计算引擎与数据湖之间的通信连接。7.可选地,获取上述预先设定的映射规则,包括:创建用于描述上述目标数据表中的数据字段的字段类;创建用于描述上述目标数据表的数据表基类,其中,上述数据表基类对应于上述目标数据表中的数据字段;基于上述字段类和上述数据表基类,获取数据表映射类。8.可选地,上述字段类包括如下至少之一:数据字段名、以及数据字段的比较方法,其中,上述比较方法包括如下至少之一大于、小于、大于等于、小于等于、等于、不等于、介于两者之间。9.可选地,上述数据表基类包括如下至少之一信息:数据字段获取信息、数据字段查询信息、数据表名信息,以及数据字段获取方法、数据字段查询方法、数据获取方法、数据表名获取方法。10.可选地,基于上述目标数据对象获取目标查询语句,包括:获取上述目标数据表中的目标数据字段的数据字段信息,其中,上述数据字段信息包括:上述目标数据字段对应的字段类和数据表基类;基于上述数据字段信息设定上述目标查询语句。11.根据本发明实施例的另一方面,还提供了一种数据查询装置,用于通过目标计算引擎查询数据湖中的数据,包括:创建模块,基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;第一获取模块,用于基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;第二获取模块,用于基于上述目标查询语句查询并获取上述目标数据。12.根据本发明实施例的另一方面,还提供了一种非易失性存储介质,上述非易失性存储介质存储有多条指令,上述指令适于由处理器加载并执行任意一项上述的数据查询方法。13.根据本发明实施例的另一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行任意一项上述的数据查询方法。14.根据本发明实施例的另一方面,还提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行任意一项上述的数据查询方法。15.在本发明实施例中,通过基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;基于上述目标查询语句查询并获取上述目标数据,达到了基于对象关系映射查询数据湖中的数据的目的,从而实现了提高数据查询效率,进而提升系统开发效率和开发质量的技术效果,进而解决了由于现有技术中采用直接编写的原生查询语句质量较低造成的数据查询效率低的技术问题。附图说明16.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:17.图1是根据本发明实施例的一种数据查询方法的流程图;18.图2是根据本发明实施例的一种可选的用于实施上述数据查询方法的系统结构图;19.图3是根据本发明实施例的一种可选的数据查询方法的流程图;20.图4是根据本发明实施例的一种数据查询装置的结构示意图。具体实施方式21.为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。22.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。23.首先,为方便理解本发明实施例,下面将对本发明中所涉及的部分术语或名词进行解释说明:24.pyspark:spark是专为大规模数据处理而设计的快速通用的计算引擎,而pyspark是spark为python开发者提供的应用程序接口api,支持通过hql的方式访问hadoop上的数据。25.orm(objectrelationalmapping):即对象关系映射,是一种软件技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,orm其实是创建了一个可在编程语言里使用的“虚拟对象数据库”,提供概念性的、易于理解的模型化数据的方法。26.实施例127.根据本发明实施例,提供了一种数据查询的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。28.图1是根据本发明实施例的一种数据查询方法的流程图,如图1所示,上述数据查询方法用于通过目标计算引擎查询数据湖中的数据,该方法包括如下步骤:29.步骤s102,基于预先设定的映射规则创建目标数据对象;30.步骤s104,基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;31.步骤s106,基于上述目标查询语句查询并获取上述目标数据。32.可选的,上述目标计算引擎可以但不限于为spark计算引擎。33.可选的,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;上述目标数据表中的类可以但不限于包括目标数据表中的数据字段的字段类、目标数据表的数据表基类。34.在本发明实施例中,通过基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;基于上述目标查询语句查询并获取上述目标数据,达到了基于对象关系映射查询数据湖中的数据的目的,从而实现了提高数据查询效率,进而提升系统开发效率和开发质量的技术效果,进而解决了由于现有技术中采用直接编写的原生查询语句质量较低造成的数据查询效率低的技术问题。35.作为一种可选的实施例,图2是根据本发明实施例的一种可选的用于实施上述数据查询方法的系统结构图,具体涉及一种基于pyspark的orm框架的数据查询方法,如图2所示,操作者engine使用映射规则创建特定的结构对象,通过封装好的hql查询语句(hqlexpressionlanguages)将该对象转换为hql查询语句,接着使用数据库连接connection通过计算引擎pyspark与数据湖hadoop建立连接,执行器executor执行hql查询语句,访问数据湖上的数据,获得数据查询结果。36.需要说明的是,本发明实施例克服了现有pyspark使用上的不足,提供了一种有效的orm框架,实现了业务逻辑和数据存取逻辑的分离,实现hql查询语句的集中管理,大幅提升开发效率和质量。37.本发明实施例至少存在以下优势:简单易用,以最基本的形式建模数据。数据湖中数据表的字段就是数据表映射类的成员变量;可读性高,使数据表结构文档化,通过数据表映射类描述了数据表结构;可用性高,避免了不规范、冗余、风格不统一的hql语句,避免人为bug的产生,使编码风格统一并便于后续维护。38.此外,本发明实施例至少可以实现以下技术效果:使业务逻辑和数据获取完全分离,提高了开发效率。由于目标对象映射orm已经将数据对象与数据湖中的数据表进行了字段与属性的映射,消除了专用、复杂的数据访问逻辑;此外,上述方法隐藏了数据访问细节,不用考虑hql编写的规范和优化点,使得数据交互变的简单易用,能够以操作对象的方式从数据湖获取数据。39.在一种可选的实施例中,在基于上述目标查询语言查询并获取目标数据之前,上述方法还包括:建立上述目标计算引擎与数据湖之间的通信连接。40.可选的,仍如图2所示,使用数据库连接(connection)通过计算引擎pyspark与数据湖(hadoop)建立连接。41.作为一种可选的实施例,图3是根据本发明实施例的一种可选的数据查询方法的流程图,如图3所示,获取上述预先设定的映射规则,包括:42.步骤s202,创建用于描述上述目标数据表中的数据字段的字段类;43.步骤s204,创建用于描述上述目标数据表的数据表基类,其中,上述数据表基类对应于上述目标数据表中的数据字段;44.步骤s206,基于上述字段类和上述数据表基类,获取数据表映射类。45.可选的,上述字段类用于描述数据湖中数据表中的字段,其中,上述字段类包含了上述字段的字段名,并提供上述字段的比较方法。46.可选的,上述数据表映射类用于描述上述目标数据表中的类与上述目标数据表之间的映射规则。47.需要说明的是,基于上述字段类和上述数据表基类,可以定义任意数量的的数据表映射类。48.可选的,上述字段类包括如下至少之一:数据字段名、以及数据字段的比较方法,其中,上述比较方法包括如下至少之一大于、小于、大于等于、小于等于、等于、不等于、介于两者之间。例如,表1示出了一种可选的目标数据表中的数据字段的字段类的创建结果。49.表1[0050][0051]可选的,上述数据表基类包括如下至少之一信息:数据字段获取信息、数据字段查询信息、数据表名信息,以及数据字段获取方法、数据字段查询方法、数据获取方法、数据表名获取方法。例如,表2示出了一种可选的目标数据表的数据表基类的创建结果。[0052]表2[0053][0054][0055]需要说明的是,继承数据表基类,对应数据湖中的目标实体表。数据表基类的数据属性对应表中的数据字段。以定义ashareeodprices数据表的映射为例,数据湖中ashareeodprices实际的表结构为:[0056][0057][0058]对应的ashareeodprices数据表的映射如下:[0059][0060][0061]在一种可选的实施例中,基于上述目标数据对象获取目标查询语句,包括:[0062]步骤s302,获取上述目标数据表中的目标数据字段的数据字段信息;[0063]步骤s304,基于上述数据字段信息设定上述目标查询语句。[0064]可选的,上述数据字段信息包括:上述目标数据字段对应的字段类和数据表基类[0065]在一种可选的实施例中,查询数据湖中数据表的数据,首先需要创建一个和数据表沟通的目标数据对象,利用这个数据对象对数据湖中的数据表进行查询操作,例如,[0066]table_instance=ashareeodprices();[0067]其次设定需要获取的数据字段,ashareeodprices表中fields字段信息中已定义的全量的字段信息,选择所需获取的数据字段,具体为:[0068]table_instance.select(table_instance.fields.s_info_windcode),table_instance.select(table_instance.fields.s_dq_close);[0069]基于上述数据字段设定查询条件,ashareeodprices表中fields字段信息中已定义的全量的字段信息,输入查询条件,例如,挑选s_dq_close字段值大于1以及s_info_windcode字段值等于600001.sh的数据,具体为:[0070]table_instance.filter(table_instance.fields.s_dq_close》'1'),table_instance.filter(table_instance.fields.s_info_windcode=='600001.sh');[0071]执行数据数据查询和数据获取操作,在完成数据对象的获取的数据字段和查询条件的设定后,执行all方法,从数据湖中的ashareeodprices表获取数据,具体为:[0072]date=table_instance.all()。[0073]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。[0074]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。[0075]实施例2[0076]根据本发明实施例,还提供了一种用于实施上述数据查询方法的装置实施例,图4是根据本发明实施例的一种数据查询装置的结构示意图,如图4所示,上述数据查询装置,包括:创建模块400、第一获取模块402、第二获取模块404,其中:[0077]上述创建模块400,基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;上述第一获取模块402,用于基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;上述第二获取模块404,用于基于上述目标查询语句查询并获取上述目标数据。[0078]在本发明实施例中,通过上述创建模块400,基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;上述第一获取模块402,用于基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;上述第二获取模块404,用于基于上述目标查询语句查询并获取上述目标数据,达到了基于对象关系映射查询数据湖中的数据的目的,从而实现了提高数据查询效率,进而提升系统开发效率和开发质量的技术效果,进而解决了由于现有技术中采用直接编写的原生查询语句质量较低造成的数据查询效率低的技术问题。[0079]需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。[0080]此处需要说明的是,上述创建模块400、第一获取模块402、第二获取模块404对应于实施例1中的步骤s102至步骤s106,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。[0081]需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。[0082]上述的数据查询装置还可以包括处理器和存储器,上述创建模块400、第一获取模块402、第二获取模块404等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。[0083]处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。[0084]根据本技术实施例,还提供了一种非易失性存储介质的实施例。可选地,在本实施例中,上述非易失性存储介质包括存储的程序,其中,在上述程序运行时控制上述非易失性存储介质所在设备执行上述任意一种数据查询方法。[0085]可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述非易失性存储介质包括存储的程序。[0086]可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;基于上述目标查询语句查询并获取上述目标数据。[0087]可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:建立上述目标计算引擎与数据湖之间的通信连接。[0088]可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:创建用于描述上述目标数据表中的数据字段的字段类;创建用于描述上述目标数据表的数据表基类,其中,上述数据表基类对应于上述目标数据表中的数据字段;基于上述字段类和上述数据表基类,获取数据表映射类。[0089]可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:获取上述目标数据表中的目标数据字段的数据字段信息,其中,上述数据字段信息包括:上述目标数据字段对应的字段类和数据表基类;基于上述数据字段信息设定上述目标查询语句。[0090]根据本技术实施例,还提供了一种处理器的实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种数据查询方法。[0091]根据本技术实施例,还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有上述任意一种的数据查询方法步骤的程序。[0092]可选地,上述计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:基于预先设定的映射规则创建目标数据对象,其中,上述目标数据对象用于对上述数据湖中的目标数据表进行查询操作,上述映射规则为上述目标数据表中的类与上述目标数据表之间的映射规则;基于上述目标数据对象获取目标查询语句,其中,上述目标查询语句包括上述目标数据表中的目标数据的查询条件;基于上述目标查询语句查询并获取上述目标数据。[0093]可选地,上述计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:建立上述目标计算引擎与数据湖之间的通信连接。[0094]可选地,上述计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:创建用于描述上述目标数据表中的数据字段的字段类;创建用于描述上述目标数据表的数据表基类,其中,上述数据表基类对应于上述目标数据表中的数据字段;基于上述字段类和上述数据表基类,获取数据表映射类。[0095]可选地,上述计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取上述目标数据表中的目标数据字段的数据字段信息,其中,上述数据字段信息包括:上述目标数据字段对应的字段类和数据表基类;基于上述数据字段信息设定上述目标查询语句。[0096]根据本技术实施例,还提供了一种电子设备的实施例,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行上述任意一种的数据查询方法。[0097]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。[0098]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。[0099]在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。[0100]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0101]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0102]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取非易失性存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的非易失性存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。[0103]以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1