CN114020854A - 维度表的数据查询方法、***、电子装置和存储介质 - Google Patents
维度表的数据查询方法、***、电子装置和存储介质 Download PDFInfo
- Publication number
- CN114020854A CN114020854A CN202111287958.XA CN202111287958A CN114020854A CN 114020854 A CN114020854 A CN 114020854A CN 202111287958 A CN202111287958 A CN 202111287958A CN 114020854 A CN114020854 A CN 114020854A
- Authority
- CN
- China
- Prior art keywords
- dimension
- query
- data
- preset
- calculation engine
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种维度表的数据查询方法、装置、电子装置和存储介质,该方法包括:利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个维度表包括维度信息以及与维度信息对应的维度层次信息;根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,查询需求包括第一维度层次和预设的查询条件;根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,并从第一维度表中筛选得到符合查询条件的查询结果。通过本申请,解决了相关技术中在数据仓库中进行数据查询的准确率低的问题,实现了提高在数据仓库中进行数据查询的准确率的技术效果。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种维度表的数据查询方法、装置、电子装置和存储介质。
背景技术
随着互联网技术的飞速发展以及大数据的广泛应用,如何提高数据的采集量和实时处理量显得尤为的重要。在数据处理过程中,往往通过建设数据仓库来保存大量以供分析使用,且数据仓库允许使用多种数据访问技术以提高数据的处理效率。
数据仓库可以作为数据挖掘和OLAP(联机分析处理,On-Line AnalyticalProcessing,简称为OLAP)等分析工具的资料来源,由于存放于数据仓库中的资料,必须经过筛选与转换,因此可以避免分析工具使用错误的资料,而得到不正确的分析结果。
相关技术中往往采用Flink流式计算引擎来构建实时数据仓库,通过Flink流式计算引擎进行注册库表、对接外部数据源以及维度表关联等操作,然而在这类技术方案中,在面对数据查询的情况时,需要从数据库查询维度表,并将维度表缓存到本地以供查询,在维度表数据量较大的情况下会导致本地内存负荷增大,降低数据查询的效率;同时,在维度表中某一相同的维度存在多条不同的记录的情况下,无法根据用户需求筛选得到符合对应需求的记录,进而导致查询到的数据存在乱序或者不正常的情况,导致数据查询的准确率下降。
目前针对相关技术中在数据仓库中进行数据查询的准确率低的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种维度表的数据查询方法、装置、电子装置和存储介质,以至少解决相关技术中在数据仓库中进行数据查询的准确率低的问题。
第一方面,本申请实施例提供了一种维度表的数据查询方法,包括:利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个所述维度表包括维度信息以及与所述维度信息对应的维度层次信息;根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,所述查询需求包括第一维度层次和预设的查询条件;根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,并从所述第一维度表中筛选得到符合所述查询条件的查询结果,其中,所述查询结果标注有版本号;在所述查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令;根据所述第二SQL指令,利用所述流式计算引擎根据所述查询结果对所述预设数据库进行数据更新。
在其中一些实施例中,在利用流式计算引擎从预设的多级缓存列表中获取多个维度表之前,所述方法还包括:利用所述流式计算引擎从至少一个数据源中获取原始数据流;利用所述流式计算引擎对所述原始数据流进行数据处理,得到源表以及多个维度表;利用所述流式计算引擎将所述多个维度表存储到预设的多级缓存列表中。
在其中一些实施例中,所述多级缓存列表包括本地内存、Redis数据库、HBase数据库;利用流式计算引擎从预设的多级缓存列表中获取多个维度表包括:根据预设的获取优先级顺序,利用所述流式计算引擎从所述多级缓存列表中获取所述维度表。
在其中一些实施例中,所述获取优先级顺序包括:所述本地内存的获取优先级高于所述Redis数据库,所述Redis数据库数据库的获取优先级高于所述HBase数据库;根据预设的获取优先级顺序,利用所述流式计算引擎从所述多级缓存列表中获取所述维度表包括:利用所述流式计算引擎从所述本地内存中获取所述维度表;在所述本地内存中不存在所述维度表的情况下,利用所述流式计算引擎从所述Redis数据库中获取所述维度表;在所述Redis数据库中不存在所述维度表的情况下,利用所述流式计算引擎从所述HBase数据库中获取所述维度表。
在其中一些实施例中,所述查询需求还包括第二维度层次;根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,并从所述第一维度表中筛选得到符合所述查询条件的查询结果包括:根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,以及将包括所述第一维度和所述第二维度层次的第二维度表与所述源表关联;利用所述流式计算引擎从所述第一维度表中和所述第二维度表中筛选得到符合所述查询条件的查询结果。
在其中一些实施例中,所述查询条件包括对应于所述第一维度层次的第一查询条件以及对应于所述第二维度层次的第二查询条件;利用所述流式计算引擎从所述第一维度表中和所述第二维度表中筛选得到符合所述查询条件的查询结果包括:在所述查询条件包括所述第一查询条件的情况下,利用所述流式计算引擎从所述第一维度表中筛选得到符合所述第一查询条件的查询结果;在所述查询条件包括所述第二查询条件的情况下,利用所述流式计算引擎从所述第二维度表中筛选得到符合所述第二查询条件的查询结果。
在其中一些实施例中,所述方法还包括:将所述预设数据库中的多条数据按照版本号大小顺序或倒序进行排序处理。
第二方面,本申请实施例提供了一种维度表的数据查询***,包括:获取模块,用于利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个所述维度表包括维度信息以及与所述维度信息对应的维度层次信息;生成模块,用于根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,所述查询需求包括第一维度层次和预设的查询条件;查询模块,用于根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,并从所述第一维度表中筛选得到符合所述查询条件的查询结果,其中,所述查询结果标注有版本号;更新模块,用于在所述查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令;以及根据所述第二SQL指令,利用所述流式计算引擎根据所述查询结果对所述预设数据库进行数据更新。
第三方面,本申请实施例还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如上述第一方面所述的维度表的数据查询方法。
第四方面,本申请实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行如上述第一方面所述的维度表的数据查询方法。
相比于相关技术,本申请实施例提供的维度表的数据查询方法、装置、电子装置和存储介质,利用流式计算引擎从预设的多级缓存列表中获取多个维度表,并根据预设的源表中的第一维度,以及,包括第一维度层次和预设的查询条件的查询需求,生成第一SQL指令,再利用流式计算引擎根据第一SQL指令将包括第一维度和第一维度层次的第一维度表与源表关联,最后从第一维度表中筛选得到符合查询条件的查询结果,在查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令;根据第二SQL指令,利用流式计算引擎根据查询结果对预设数据库进行数据更新,解决了相关技术中在数据仓库中进行数据查询的准确率低的问题,实现了提高在数据仓库中进行数据查询的准确率的技术效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的维度表的数据查询方法的流程图;
图2是根据本申请实施例的维度表的数据查询***的结构框图;
图3是根据本申请实施例的电子装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供了一种维度表的数据查询方法,图1是根据本申请实施例的维度表的数据查询方法的流程图,如图1所示,该方法包括:
步骤S101,利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个维度表包括维度信息以及与维度信息对应的维度层次信息。
步骤S102,根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,查询需求包括第一维度层次和预设的查询条件。
步骤S103,根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,并从第一维度表中筛选得到符合查询条件的查询结果,其中,查询结果标注有版本号。
步骤S104,在查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令。
步骤S105,根据第二SQL指令,利用流式计算引擎根据查询结果对预设数据库进行数据更新。
在本实施例中,流式计算引擎可以包括Storm、Spark Streaming或Flink等,在本实施例中,可以采用Flink流式计算引擎对获取的数据进行处理,例如,可以基于原始数据流中源表、维度表的配置消息,与用户需求相关的Kafka消息或其他如从Mysql数据库中获取消息,并利用Flink流式计算引擎或Blink流式计算引擎对这些消息进行流式归一化操作、数据清洗操作和/或补零操作等,进而得到规范化数据,根据各数据源的规范化数据生成各个数据源对应的具有预定格式的源表和维度表,并选择对应的数据存储方案进行存储,例如,预先配置多级缓存列表,在多级缓存列表中存储上述获取的多个数据源对应的维度表,或者利用Mysql数据库存储查询结果。
相关技术中的实时数据仓库是通过Flink流式计算引擎来进行注册库表、对接外部数据源以及维度表关联等操作。在面对数据查询的情况时,需要从数据库查询维度表,并将维度表缓存到本地以供查询,在维度表数据量较大的情况下会导致本地内存负荷增大,降低数据查询的效率;同时,在维度表中某一相同的维度存在多条不同的记录的情况下,无法根据用户需求筛选得到符合对应需求的记录,进而导致查询到的数据存在乱序或者不正常的情况,导致数据查询的准确率下降。
在本实施例中,可以利用Flink流式计算引擎从预设的多级缓存列表中获取维度表,多级缓存列表可以包括多级缓存,例如本地内存和其他数据库,在需要获取维度表时,可以按照预先配置的获取优先级顺序,先从本地内存中获取,若本地内存中不存在,则从其他数据库获取,从而达到多级缓存的效果,进而避免在维度表数据量较大时导致本地内存负荷增大,以及避免降低数据查询的效率。
同时,在上述实施例中,可以根据用户输入的查询条件生成第一SQL(结构化查询语言,Structured Query Language,简称为SQL)指令,保证查询到的查询结果符合查询条件。例如,某一维度表包括设备ID这一维度,设备ID对应设备状态这一维度层次,但是维度表中可能存在相同的设备ID下存在多个设备状态的情况,因此查询条件可以为获取最新的设备状态,从而保证获取到的查询结果为最新的设备状态,避免查询到的数据存在乱序或者不正常,以及避免降低数据查询的准确率。
在其中一些实施例中,在利用流式计算引擎从预设的多级缓存列表中获取多个维度表之前,该方法还包括:利用流式计算引擎从至少一个数据源中获取原始数据流;利用流式计算引擎对原始数据流进行数据处理,得到源表以及多个维度表;利用流式计算引擎将多个维度表存储到预设的多级缓存列表中。
在本实施例中,从数据源获取的原始数据流包括MQ(消息队列,Message Queue,简称为MQ)消息、Kafka消息以及流式计算引擎、源表、维度表的配置消息等。
Flink流式计算引擎是一个针对流数据和批数据的分布式处理引擎,可以处理有界的批量数据集,也可以处理无界的实时数据集。Blink流式计算引擎是基于Flink构建的流式计算的分布式处理引擎,具有较高的实时计算效率和数据兼容性。
在上述实施例中,可以在采集原始数据流时便将数据进行规范化处理,数据基本是实时的,业务上几乎没有延迟,并且Flink流式计算引擎或Blink流式计算引擎是集群化的,能够处理大量的实时数据,这进一步减小了数据延迟。
在其中一些实施例中,多级缓存列表包括本地内存、Redis数据库、HBase数据库;利用流式计算引擎从预设的多级缓存列表中获取多个维度表包括:根据预设的获取优先级顺序,利用流式计算引擎从多级缓存列表中获取维度表。
在本实施例中,获取优先级顺序包括:本地内存的获取优先级高于Redis数据库,Redis数据库数据库的获取优先级高于HBase数据库;根据预设的获取优先级顺序,利用流式计算引擎从多级缓存列表中获取维度表包括如下步骤:
步骤1,利用流式计算引擎从本地内存中获取维度表。
步骤2,在本地内存中不存在维度表的情况下,利用流式计算引擎从Redis数据库中获取维度表。
步骤3,在Redis数据库中不存在维度表的情况下,利用流式计算引擎从HBase数据库中获取维度表。
在上述实施例中,多级缓存列表还可以包括其他可以通过接口通信连接的数据库,通过设置获取优先级顺序,并按照获取优先级顺序进行维度表的获取,从而达到多级缓存的效果,保证在能够获取较大数据量的维度表的同时,也能够兼顾获取维度表的效率,进而避免在维度表数据量较大时导致本地内存负荷增大,以及避免降低数据查询的效率。
在其中一些实施例中,查询需求还包括第二维度层次;根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,并从第一维度表中筛选得到符合查询条件的查询结果包括:根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,以及将包括第一维度和第二维度层次的第二维度表与源表关联;利用流式计算引擎从第一维度表中和第二维度表中筛选得到符合查询条件的查询结果。
在本实施例中,查询条件包括对应于第一维度层次的第一查询条件以及对应于第二维度层次的第二查询条件;利用流式计算引擎从第一维度表中和第二维度表中筛选得到符合查询条件的查询结果包括:在查询条件包括第一查询条件的情况下,利用流式计算引擎从第一维度表中筛选得到符合第一查询条件的查询结果;在查询条件包括第二查询条件的情况下,利用流式计算引擎从第二维度表中筛选得到符合第二查询条件的查询结果。
例如,在一个实时数字仓库项目中,源表如下表1所示,第一维度表如下表2所示,第二维度表如下表3所示:
表1
设备ID(d_id) | 设备状态(status) | 更新时间(update_time) |
101 | 在线 | 2021/5/9 |
101 | 离线 | 2021/5/7 |
… | … | … |
表2
设备ID(d_id) | 设备类型(d_type) |
101 | 手机 |
… | … |
… | … |
表3
在该实时数字仓库项目,用于需要查询对应设备ID的设备状态和设备类型,同时第一维度表中一个相同的设备ID存在多条记录,第一维度表和第二维度表存储在相同数据库中。
以要查询的设备ID是101为例,需要获取该设备ID对应的设备状态和设备类型,同时,由于第一维度表中对应该设备ID存在多条数据记录,而需要获取该设备ID对应的最新的设备状态,则查询需求应该包括与第一维度(即设备ID)对应的第一维度层次(即设备状态)、与第一维度(即设备ID)对应的第二维度层次(即设备类型),以及对应于第一维度层次的查询条件(即获取最新的设备状态)可以生成第一SQL指令:
Select d_type,status from B2 join(select status from B1 order byupdate_time where d_id=#d_id#limit 1)where d_id=#d_id#;
其中,B2为第二维度表,B1为第一维度表,通过上述的第一SQL指令,可以利用流式计算引擎将包括设备ID和设备状态的第一维度表,以及包括设备ID和设备类型第二维度表与源表关联,并从第一维度表中获取满足第一查询条件的查询结果,即设备ID为101的设备对应的最新设备状态,即101-在线-2021/5/9这一条数据,作为查询结果;同时,可以从第二维度表中获取与设备ID为101设备对应的设备类型,即101-手机这一条数据,作为查询结果。
在上述实施例中,通过第一SQL指令,利用流式计算引擎通过一次维度表关联(join),即可获取两个维度表中的多条数据,同时能够获取第一维度表中满足查询条件的查询结果,从而保证获取到的查询结果为最新的设备状态,避免查询到的数据存在乱序或者不正常,避免降低数据查询的准确率。
在本实施例中,可以在查询结果上标注版本号,在查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令,根据第二SQL指令,利用流式计算引擎根据查询结果对预设数据库进行数据更新。
例如,上述实施例中获取到的查询结果如下表4所示:
设备ID(d_id) | 设备状态(status) | 设备类型(d_type) | 版本号(version) |
101 | 在线 | 手机 | 1.01 |
表4
可以利用流式计算引擎将如表4所示的查询结果存储到预设数据库中,例如存储于Mysql数据库中,在该条查询结果需要更新的情况下,可以根据预设的更新条件,例如以版本号作为更新条件,则可以生成第二SQL指令:
Mysql.onDupwhere:values(version)>version;
其中,Mysql.onDupwhere为自定义的更新条件,即新的查询结果的版本号大于1.01时,则对该条查询结果进行更新,例如,新的查询结果的版本号为1.02时,则根据新的查询结果对版本号为1.01的查询结果进行数据更新。
在本实施例中,还可以在将如表4的查询结果存储到预设数据库之前,确定预设数据库中每条数据所对应的版本号,并找出其版本号最大值,例如,该预设数据库中版本号最大值为1.00,则此时根据第二SQL指令:
Mysql.onDupwhere:values(version)>version;
即可利用流式计算引擎根据查询结果对预设数据库进行数据更新,即将该查询结果存储到预设数据库中。
在其他实施例中,还可以写入其他更新条件,例如d_id>100,在新的查询结果的设备ID大于100的情况对旧的查询结果进行数据更新。从而保证最终查询结果的准确性,避免在计算过程中出现乱序或者源表数据出现乱序时导致数据异常或者更新不准确,以及避免降低数据查询的效率。
在本实施例中,还可以将预设数据库中的多条数据按照版本号大小顺序或倒序进行排序处理,在面对网络较差等会导致预设数据库中的数据出现乱序等情况时,本申请可以将预设数据库中的多条数据按照版本号大小顺序或倒序进行排序处理,保证预设数据库中包含查询结果等多条数据的顺序是正确的,从而保证最终查询结果的准确性。
在上述实施例中,预设数据库往往存储一类查询结果的数据,因此,这类查询结果的版本号是类似的,在预设数据库中存储多类版本号相异的数据时,例如,数据库中存在1.00,5.22时,则可以按照预设的规则,例如以第一位作为数据的标识位,当查询结果的版本号为1.01时,只比较版本号第一位相同的数据,也只对版本号第一位相同的数据进行更新,避免将其他数据进行覆盖,导致数据异常或者更新不准确。
通过上述步骤S101至步骤S105,利用流式计算引擎从预设的多级缓存列表中获取维度表,多级缓存列表可以包括多级缓存,例如本地内存和其他数据库,在需要获取维度表时,可以按照预先配置的获取优先级顺序,先从本地内存中获取,若本地内存中不存在,则从其他数据库获取,从而达到多级缓存的效果;同时,根据用户输入的查询条件生成第一SQL指令,保证查询到的查询结果符合查询条件从而保证获取到的查询结果满足查询条件,避免查询到的数据存在乱序或者不正常,以及避免降低数据查询的准确率。通过本申请,解决了相关技术中在数据仓库中进行数据查询的准确率低的问题,实现了提高在数据仓库中进行数据查询的准确率的技术效果。
本实施例提供了一种维度表的数据查询***,图2是根据本申请实施例的维度表的数据查询***的结构框图,如图2所示,该装置包括:获取模块20,用于利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个维度表包括维度信息以及与维度信息对应的维度层次信息;生成模块21,用于根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,查询需求包括第一维度层次和预设的查询条件;查询模块22,用于根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,并从第一维度表中筛选得到符合查询条件的查询结果,其中,查询结果标注有版本号;更新模块23,用于在查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令;以及根据第二SQL指令,利用流式计算引擎根据查询结果对预设数据库进行数据更新。
在其中一些实施例中,获取模块20还被配置为用于利用流式计算引擎从至少一个数据源中获取原始数据流;利用流式计算引擎对原始数据流进行数据处理,得到源表以及多个维度表;利用流式计算引擎将多个维度表存储到预设的多级缓存列表中。
在其中一些实施例中,多级缓存列表包括本地内存、Redis数据库、HBase数据库;获取模块20还被配置为用于根据预设的获取优先级顺序,利用流式计算引擎从多级缓存列表中获取维度表。
在其中一些实施例中,获取优先级顺序包括:本地内存的获取优先级高于Redis数据库,Redis数据库数据库的获取优先级高于HBase数据库;获取模块20还被配置为用于利用流式计算引擎从本地内存中获取维度表;在本地内存中不存在维度表的情况下,利用流式计算引擎从Redis数据库中获取维度表;在Redis数据库中不存在维度表的情况下,利用流式计算引擎从HBase数据库中获取维度表。
在其中一些实施例中,查询需求还包括第二维度层次;查询模块22还被配置为用于根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,以及将包括第一维度和第二维度层次的第二维度表与源表关联;利用流式计算引擎从第一维度表中和第二维度表中筛选得到符合查询条件的查询结果。
在其中一些实施例中,查询条件包括对应于第一维度层次的第一查询条件以及对应于第二维度层次的第二查询条件;筛选模块还被配置为用于在查询条件包括第一查询条件的情况下,利用流式计算引擎从第一维度表中筛选得到符合第一查询条件的查询结果;在查询条件包括第二查询条件的情况下,利用流式计算引擎从第二维度表中筛选得到符合第二查询条件的查询结果。
在其中一些实施例中,更新模块23还被配置为用于将预设数据库中的多条数据按照版本号大小顺序或倒序进行排序处理。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
本实施例还提供了一种电子装置,图3是根据本申请实施例的电子装置的硬件结构示意图,如图3所示,该电子装置包括存储器304和处理器302,该存储器304中存储有计算机程序,该处理器302被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
具体地,上述处理器302可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器304可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器304可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(Solid State Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerial Bus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器304可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器304可在数据处理装置的内部或外部。在特定实施例中,存储器304是非易失性(Non-Volatile)存储器。在特定实施例中,存储器304包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(Random Access Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read-Only Memory,简称为PROM)、可擦除PROM(ErasableProgrammable Read-Only Memory,简称为EPROM)、电可擦除PROM(Electrically ErasableProgrammable Read-Only Memory,简称为EEPROM)、电可改写ROM(ElectricallyAlterable Read-Only Memory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-AccessMemory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode DynamicRandom Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDate Out Dynamic Random Access Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器304可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的计算机程序指令。
处理器302通过读取并执行存储器304中存储的计算机程序指令,以实现上述实施例中的任意一种维度表的数据查询方法。
可选地,上述电子装置还可以包括传输设备306以及输入输出设备308,其中,该传输设备306和上述处理器302连接,该输入输出设备308和上述处理器302连接。
可选地,在本实施例中,上述处理器302可以被设置为通过计算机程序执行以下步骤:
S1,利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个维度表包括维度信息以及与维度信息对应的维度层次信息。
S2,根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,查询需求包括第一维度层次和预设的查询条件。
S3,根据第一SQL指令,利用流式计算引擎将包括第一维度和第一维度层次的第一维度表与源表关联,并从第一维度表中筛选得到符合查询条件的查询结果,其中,查询结果标注有版本号。
S4,在查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令。
S5,根据第二SQL指令,利用流式计算引擎根据查询结果对预设数据库进行数据更新。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的维度表的数据查询方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种维度表的数据查询方法。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种维度表的数据查询方法,其特征在于,所述方法包括:
利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个所述维度表包括维度信息以及与所述维度信息对应的维度层次信息;
根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,所述查询需求包括第一维度层次和预设的查询条件;
根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,并从所述第一维度表中筛选得到符合所述查询条件的查询结果,其中,所述查询结果标注有版本号;
在所述查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令;
根据所述第二SQL指令,利用所述流式计算引擎根据所述查询结果对所述预设数据库进行数据更新。
2.根据权利要求1所述的维度表的数据查询方法,其特征在于,在利用流式计算引擎从预设的多级缓存列表中获取多个维度表之前,所述方法还包括:
利用所述流式计算引擎从至少一个数据源中获取原始数据流;
利用所述流式计算引擎对所述原始数据流进行数据处理,得到源表以及多个维度表;
利用所述流式计算引擎将所述多个维度表存储到预设的多级缓存列表中。
3.根据权利要求1所述的维度表的数据查询方法,其特征在于,所述多级缓存列表包括本地内存、Redis数据库、HBase数据库;利用流式计算引擎从预设的多级缓存列表中获取多个维度表包括:
根据预设的获取优先级顺序,利用所述流式计算引擎从所述多级缓存列表中获取所述维度表。
4.根据权利要求3所述的维度表的数据查询方法,其特征在于,所述获取优先级顺序包括:所述本地内存的获取优先级高于所述Redis数据库,所述Redis数据库数据库的获取优先级高于所述HBase数据库;根据预设的获取优先级顺序,利用所述流式计算引擎从所述多级缓存列表中获取所述维度表包括:
利用所述流式计算引擎从所述本地内存中获取所述维度表;
在所述本地内存中不存在所述维度表的情况下,利用所述流式计算引擎从所述Redis数据库中获取所述维度表;
在所述Redis数据库中不存在所述维度表的情况下,利用所述流式计算引擎从所述HBase数据库中获取所述维度表。
5.根据权利要求1所述的维度表的数据查询方法,其特征在于,所述查询需求还包括第二维度层次;根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,并从所述第一维度表中筛选得到符合所述查询条件的查询结果包括:
根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,以及将包括所述第一维度和所述第二维度层次的第二维度表与所述源表关联;
利用所述流式计算引擎从所述第一维度表中和所述第二维度表中筛选得到符合所述查询条件的查询结果。
6.根据权利要求5所述的维度表的数据查询方法,其特征在于,所述查询条件包括对应于所述第一维度层次的第一查询条件以及对应于所述第二维度层次的第二查询条件;利用所述流式计算引擎从所述第一维度表中和所述第二维度表中筛选得到符合所述查询条件的查询结果包括:
在所述查询条件包括所述第一查询条件的情况下,利用所述流式计算引擎从所述第一维度表中筛选得到符合所述第一查询条件的查询结果;
在所述查询条件包括所述第二查询条件的情况下,利用所述流式计算引擎从所述第二维度表中筛选得到符合所述第二查询条件的查询结果。
7.根据权利要求1所述的维度表的数据查询方法,其特征在于,所述方法还包括:
将所述预设数据库中的多条数据按照版本号大小顺序或倒序进行排序处理。
8.一种维度表的数据查询***,其特征在于,所述***包括:
获取模块,用于利用流式计算引擎从预设的多级缓存列表中获取多个维度表,其中,每个所述维度表包括维度信息以及与所述维度信息对应的维度层次信息;
生成模块,用于根据预设的源表中的第一维度以及预设的查询需求,生成第一SQL指令,其中,所述查询需求包括第一维度层次和预设的查询条件;
查询模块,用于根据所述第一SQL指令,利用所述流式计算引擎将包括所述第一维度和所述第一维度层次的第一维度表与所述源表关联,并从所述第一维度表中筛选得到符合所述查询条件的查询结果,其中,所述查询结果标注有版本号;
更新模块,用于在所述查询结果的版本号大于预设数据库中每条数据所对应的版本号的情况下,生成第二SQL指令;以及根据所述第二SQL指令,利用所述流式计算引擎根据所述查询结果对所述预设数据库进行数据更新。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至7中任一项所述的维度表的数据查询方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的维度表的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111287958.XA CN114020854A (zh) | 2021-11-02 | 2021-11-02 | 维度表的数据查询方法、***、电子装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111287958.XA CN114020854A (zh) | 2021-11-02 | 2021-11-02 | 维度表的数据查询方法、***、电子装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114020854A true CN114020854A (zh) | 2022-02-08 |
Family
ID=80059585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111287958.XA Pending CN114020854A (zh) | 2021-11-02 | 2021-11-02 | 维度表的数据查询方法、***、电子装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114020854A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461614A (zh) * | 2022-04-12 | 2022-05-10 | 北京安华金和科技有限公司 | 一种敏感数据标识处理方法和*** |
-
2021
- 2021-11-02 CN CN202111287958.XA patent/CN114020854A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461614A (zh) * | 2022-04-12 | 2022-05-10 | 北京安华金和科技有限公司 | 一种敏感数据标识处理方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2663358C2 (ru) | Устройство и способ кластерного хранения | |
US8977623B2 (en) | Method and system for search engine indexing and searching using the index | |
US9946753B2 (en) | Method and system for document indexing and data querying | |
US20190005101A1 (en) | Method and apparatus for accessing time series data in memory | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理*** | |
CN109388657B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN112015820A (zh) | 分布式图数据库实现的方法、***、电子装置和存储介质 | |
WO2016070751A1 (zh) | 一种分布式缓存范围查询方法、装置及*** | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN111277274B (zh) | 数据压缩方法、装置、设备及存储介质 | |
CN109446225B (zh) | 数据缓存方法、装置、计算机设备及存储介质 | |
CN113220659A (zh) | 一种数据迁移的方法、***、电子装置和存储介质 | |
CN111104540A (zh) | 图像搜索方法、装置、设备及计算机可读存储介质 | |
WO2017020735A1 (zh) | 一种数据处理方法、备份服务器及存储*** | |
CN110909266B (zh) | 深度分页的方法、装置及服务器 | |
CN112559386A (zh) | 提升ssd性能的方法、装置、计算机设备及存储介质 | |
CN114020854A (zh) | 维度表的数据查询方法、***、电子装置和存储介质 | |
CN111339720A (zh) | 基于大数据采集的芯片信息生成方法、装置及计算机设备 | |
CN116126864A (zh) | 索引构建方法、数据查询方法及相关设备 | |
EP3779720B1 (en) | Transaction processing method and system, and server | |
CN108763458B (zh) | 内容特征查询方法、装置、计算机设备及存储介质 | |
CN114238334A (zh) | 异构数据编码、解码方法和装置、计算机设备和存储介质 | |
CN112732711B (zh) | 一种数据存储方法、装置及电子设备 | |
CN111625600B (zh) | 数据存储的处理方法、***、计算机设备及存储介质 | |
CN110765125B (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 |