CN117992452A - 数据分析方法、装置、设备、介质及产品 - Google Patents
数据分析方法、装置、设备、介质及产品 Download PDFInfo
- Publication number
- CN117992452A CN117992452A CN202410118887.8A CN202410118887A CN117992452A CN 117992452 A CN117992452 A CN 117992452A CN 202410118887 A CN202410118887 A CN 202410118887A CN 117992452 A CN117992452 A CN 117992452A
- Authority
- CN
- China
- Prior art keywords
- data
- processed
- key value
- bloom filter
- index
- 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
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000007405 data analysis Methods 0.000 title claims abstract description 59
- 238000012216 screening Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 19
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 241000854350 Enicospilus group Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据分析方法、装置、设备、介质及产品,包括:创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取待处理数据,每个键值关联至少一条数据记录;在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值;针对第一索引分组中的每一行待处理数据,基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,目标键值为仅关联一条数据记录的键值;从待处理数据中,直接输出由目标键值组成的目标待处理数据。
Description
技术领域
本申请属于数据分析技术领域,尤其涉及一种数据分析方法、装置、设备、介质及产品。
背景技术
在日常工作中,经常会遇到需要对数据库中的数据进行排序或统计分析等处理,这种情况下,通常采用窗口函数实现。最早的窗口函数是基于有序数据实现的,因此大多数场景都需要先对数据库中数据按照分区列进行排序,然后按照有序的数据进行依次计算即可。
相关技术中,针对数据库中键值较高的场景,基于窗口函数实现排序需要大量的值比较,非常耗时。尤其是数据量达到10亿、100亿、甚至千亿行之后,内存占用非常大,在内存有限的情况下,无法通过上述排序方式完成。
发明内容
本申请实施例的目的是提供一种数据分析方法及其装置,能够解决在高键值场景下基于窗口函数实现排序需要大量的值比较,比较耗时的问题。
第一方面,本申请实施例提供一种数据分析方法,该方法包括:创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个键值关联至少一条数据记录;针对待处理数据进行第一次遍历;在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值;针对第一索引分组对应的所有待处理数据进行第二次遍历;基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,其中,目标键值为仅关联一条数据记录的键值;从待处理数据中,直接输出由目标键值组成的目标待处理数据。
在第一方面的一些可实现方式中,基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,包括:在第二布隆过滤器中不包含待处理数据的键值的情况下,确定待处理数据的键值为目标键值。
在第一方面的一些可实现方式中,在针对待处理数据进行第一次遍历之后,方法还包括:在第一布隆过滤器包含待处理数据的键值的情况下,获取与键值所对应的第二索引分组;将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在第一方面的一些可实现方式中,将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组,包括:通过哈希桶分组的方式,将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在第一方面的一些可实现方式中,在针对第一索引分组对应的所有待处理数据进行第二次遍历之后,方法还包括:在第二布隆过滤器包含待处理数据的键值的情况下,将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在第一方面的一些可实现方式中,在将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组之后,方法还包括:确定同一第二索引分组中所有行号索引所对应的待处理数据均对应同一键值;基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行运算处理。
在第一方面的一些可实现方式中,基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行运算处理,包括:基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行排序和/或求和,输出结果。
第二方面,本申请实施例提供一种数据分析装置,该装置包括:创建和/或初始化模块,用于创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取模块,获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个键值关联至少一条数据记录;遍历模块,用于针对待处理数据进行第一次遍历;记录模块,用于在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;记录模块,还用于在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值;遍历模块,还用于针对第一索引分组对应的所有待处理数据进行第二次遍历;筛选模块,用于基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,其中,目标键值为仅关联一条数据记录的键值;输出模块,用于从待处理数据中,直接输出由目标键值组成的目标待处理数据。
在第二方面的一些可实现方式中,筛选模块具体用于:在第二布隆过滤器中不包含待处理数据的键值的情况下,确定待处理数据的键值为目标键值。
在第二方面的一些可实现方式中,装置还包括:获取模块,用于在针对待处理数据进行第一次遍历之后,在第一布隆过滤器包含待处理数据的键值的情况下,获取与键值所对应的第二索引分组;写入模块,用于将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在第二方面的一些可实现方式中,写入模块具体用于:通过哈希桶分组的方式,将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在第二方面的一些可实现方式中,装置还包括:写入模块,还用于在针对第一索引分组对应的所有待处理数据进行第二次遍历之后,在第二布隆过滤器包含待处理数据的键值的情况下,将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在第二方面的一些可实现方式中,装置还包括:确定模块,用于在将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组之后,确定同一第二索引分组中所有行号索引所对应的待处理数据均对应同一键值;数据处理模块,用于基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行运算处理。
在第二方面的一些可实现方式中,数据处理模块具体用于:基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行排序和/或求和,输出结果。
第三方面,本申请实施例提供一种电子设备,包括:处理器以及存储有计算机程序指令的存储器;处理器执行计算机程序指令时实现如第一方面的数据分析方法的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现如第一方面的数据分析方法的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品被存储在非易失的存储介质中,所述计算机程序产品被至少一个处理器执行以实现如第一方面的数据分析方法的步骤。
第六方面,本申请实施例提供了一种芯片,该芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现如第一方面的数据分析方法的步骤。
本申请提供一种数据分析方法、装置、设备、介质及产品,创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个键值关联至少一条数据记录;针对待处理数据进行第一次遍历;在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值。针对第一索引分组对应的所有待处理数据进行第二次遍历;基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值。如此,结合第一布隆过滤器、第二布隆过滤器以及两次遍历操作,可以将仅关联一条数据记录的目标键值筛选出来,进而获取到对应唯一键值的待处理数据,该部分待处理数据可以直接输出,无需进行分区处理,因此能够避免哈希桶做分区时通过对比哈希表主键值确定是否存在哈希冲突的值比较环节,可降低进入哈希桶的数据量,缩短大量的无效计算时间,提升数据分析的速度和效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍。
图1是本申请一实施例提供的数据分析方法的流程示意图;
图2是本申请另一实施例提供的数据分析方法的流程示意图;
图3是本申请再一实施例提供的数据分析方法的流程示意图;
图4是本申请再一实施例提供的数据分析方法的流程示意图;
图5是本申请实施例提供的一种数据分析装置的结构示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
相关技术中,在日常工作中,经常会遇到需要对数据库中的数据进行排序或统计分析等处理,这种情况下,通常采用窗口函数实现。最早的窗口函数是基于有序数据实现的,因此大多数场景都需要先对数据库中数据按照分区列进行排序,然后按照有序的数据进行依次计算即可。
相关技术中,针对数据库中同一键值出现次数较多,也即同一键值关联了多条数据记录的高键值场景,基于窗口函数实现排序需要大量的值比较,非常耗时。尤其是数据量达到10亿、100亿、甚至千亿行之后,内存占用非常大,在内存有限的情况下,无法通过上述排序方式完成。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的数据分析方法进行详细地说明。
图1是本申请一实施例提供的数据分析方法的流程示意图,该数据分析方法的执行主体可以为服务器。
下面以数据分析方法的执行主体为服务器为例,说明本申请的数据分析方法。需要说明的是,上述执行主体和应用场景并不构成对本申请的限定。
如图1所示,本申请实施例提供的数据分析方法可以包括步骤110-步骤180。
步骤110,创建和/或初始化第一布隆过滤器和第二布隆过滤器;
步骤120,获取待处理数据,每条待处理数据由一条数据记录及其关联的键值组成;
步骤130,针对待处理数据进行第一次遍历;
步骤140,在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;
步骤150,在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值;
步骤160,针对第一索引分组对应的所有待处理数据进行第二次遍历;
步骤170,基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,目标键值为仅关联一条数据记录的键值;
步骤180,从待处理数据中,直接输出由目标键值组成的目标待处理数据。
本申请实施例提供的数据分析方法,创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个键值关联至少一条数据记录;针对待处理数据进行第一次遍历;在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值。针对第一索引分组对应的所有待处理数据进行第二次遍历;基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值。如此,结合第一布隆过滤器、第二布隆过滤器以及两次遍历操作,可以将仅关联一条数据记录的目标键值筛选出来,进而获取到对应唯一键值的待处理数据,该部分待处理数据可以直接输出,无需进行分区处理,因此能够避免哈希桶做分区时通过对比哈希表主键值确定是否存在哈希冲突的值比较环节,可降低进入哈希桶的数据量,缩短大量的无效计算时间,提升数据分析的速度和效率。
下面结合具体的实施例,详细介绍上述步骤的具体实现方式。
涉及步骤110,创建和/或初始化第一布隆过滤器和第二布隆过滤器。
在步骤110中,第一布隆过滤器和第二布隆过滤器为二进制向量数据结构,它具有空间和时间效率,被用来检测一个元素是不是集合中的一个成员。在创建第一布隆过滤器和第二布隆过滤器之后,在第一次遍历数据库的数据之前,需要将两个布隆过滤器初始化为空。
涉及步骤120,获取待处理数据,每条待处理数据由一条数据记录及其关联的键值组成。
在步骤120中,获取到的待处理数据可以为多条,由于每条待处理数据在数据库中以行的形式存在,因此多条待处理数据也可以为多行待处理数据,每行待处理数据对应一个行号索引,该行号索引用于标识待处理数据在数据库中的位置;数据记录可以由至少一个字段内容组成,在不同场景下,数据记录包含的字段内容可以不同,例如在交易场景下,该数据记录可以为交易记录,因此可以包含交易金额、交易时间、交易流水号等字段内容。
每个键值可以关联至少一条数据记录,也即关联至少一行待处理数据。而在高键值场景下,经常出现一个键值关联多条数据记录的情况,也即,多行待处理数据中均包含了同一键值。
以上述交易场景为例,键值可以为用户标识,例如为用户手机号、用户ID等,本申请对键值的字段内容不做具体限定。
示例性地,待处理数据可以如表(1)所示,其中,键值为“用户手机号”,数据记录包含的字段内容为“交易金额”、“交易时间”。
表(1)
用户手机号 | 交易金额 | 交易时间 |
xxxxxxxxxx1 | 10 | 2020/7/10 |
xxxxxxxxxx3 | 20 | 2020/8/10 |
xxxxxxxxxx2 | 5 | 2020/7/9 |
xxxxxxxxxx5 | 7 | 2020/7/9 |
xxxxxxxxxx1 | 20 | 2020/7/11 |
xxxxxxxxxx4 | 5 | 2020/7/9 |
xxxxxxxxxx1 | 30 | 2020/7/9 |
如表(1)所示,键值“xxxxxxxxxx1”关联了3条数据记录,其余键值“xxxxxxxxxx2”、“xxxxxxxxxx3”、“xxxxxxxxxx4”和“xxxxxxxxxx5”均仅关联了一条数据记录。
涉及步骤130,针对待处理数据进行第一次遍历。
在步骤130中,对于所有待处理数据中的每条待处理数据,均执行一次查询操作,查询第一布隆过滤器中是否包含该待处理数据的键值。
涉及步骤140,在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组。
在步骤140中,对于同一键值关联多条数据记录的场景,在执行该键值关联的第一条数据记录的查询操作时,由于第一布隆过滤器之前未写入该键值,因此会在第一布隆过滤器中未查询到该键值后,将该键值写入第一布隆过滤器。所有待处理数据共用一个第一索引分组。
涉及步骤150,在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值。
在步骤150中,若第一布隆过滤器包含当前遍历的待处理数据的键值,表明该键值关联不止一条数据记录,也即针对同一键值,存在多条待处理数据,这类待处理数据在数据分析时,首先需聚类为一组。
在本申请的一些实施例中,图2是本申请另一实施例提供的数据分析方法的流程示意图,在上述步骤130针对待处理数据进行第一次遍历之后,该方法还可以包括图2所示的步骤210和步骤220。
步骤210,在第一布隆过滤器包含待处理数据的键值的情况下,获取与键值所对应的第二索引分组;
步骤220,将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
示例性地,多条待处理数据包括A1、A2、A3、B1,其中,A1、A2、A3均对应同一键值A,B1对应键值B。第一次遍历过程如下:对于A1,查询到A1的键值A未出现在第一BloomFilter,将A写入第一Bloom Filter,并将A1的行号索引a1写入分组1,该分组1为第一索引分组;对于A2,查询到A2的键值A出现在第一Bloom Filter,将A写入第二Bloom Filter,并将A2的行号索引a2写入分组2,该分组2为键值A对应的第二索引分组;对于A3,查询到A3的键值A出现在第一Bloom Filter,将A写入第二Bloom Filter,并将A3的行号索引a3写入分组2;对于B1,查询到B1的键值B未出现在第一Bloom Filter,将B写入第一Bloom Filter,并将B1的行号索引b1写入分组1。
如此,第一次遍历结束后,第一Bloom Filter中包含键值A、B,第二Bloom Filter中仅包含关联不止一条数据记录的键值A,分组1中包含A1、B1的行号索引,分组2中包含键值A对应的A2、A3的行号索引。
在本申请实施例中,若第一过滤器中包含待处理数据的键值,表明该键值关联不止一条数据记录,也即,存在至少两条待处理数据由该键值组成。基于此,可以为该键值建立一个第二索引分组,以在该第二索引分组中存储关联该键值的所有待处理数据的行号索引,从而能够基于第二索引分组,更快地查询到同一键值对应的所有待处理数据,以便将同一键值对应的所有待处理数据有效聚合在一起,统一进行数据分析处理,快速查询到用户期望的数据查询结果。
在本申请的一些实施例中,上述步骤220将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组,可以具体包括:
通过哈希桶分组的方式,将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
示例性地,可以将“用户手机号”作为键值进行哈希分桶,从而让对应相同“用户手机号”的待处理数据划分至同一哈希桶,也即同一键值对应的第二索引分组。
在本申请实施例中,在第一布隆过滤器包含待处理数据的键值的情况下,表明该键值关联多条数据记录,因此需要通过哈希桶分组的方式为该键值建立一个第二索引分组,用以存储该键值所对应待处理数据的行号索引。相较于相关技术中对所有待处理数据均进行哈希捅分组的方案,本申请将同一键值下存在的多行待处理数据筛选出来,仅对该部分待处理数据进行哈希桶分组,而对于一个键值仅对应一行待处理数据的情况,无需进行哈希桶分组,避免了大量待处理数据进哈希桶的操作,因此利用第一布隆过滤器结构有效地减少了哈希桶中的待处理数据量,由于哈希桶做分区需要精确的对比哈希表主键值才能确定是否有哈希冲突(哈希值一样,但实际值不同),字段类型越长,列越多值比较的时间越长,因此通过降低进行哈希桶分组的数据量,能够明显提高数据分析效率。
涉及步骤160,针对第一索引分组对应的所有待处理数据进行第二次遍历。
在步骤160中,第一索引分组对应的待处理数据,即为第一索引分组中包含的行号索引所对应的待处理数据,对于这部分待处理数据,均执行一次查询操作,查询第二布隆过滤器中是否包含该待处理数据的键值。
在本申请的一些实施例中,图3是本申请再一实施例提供的数据分析方法的流程示意图,如图3所示,在上述步骤160针对第一索引分组对应的所有待处理数据进行第二次遍历之后,该方法还可以包括图3所示的步骤310。
步骤310,在第二布隆过滤器包含待处理数据的键值的情况下,将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
继续参见上述示例,针对多行待处理数据A1、A2、A3、B1,在第一次遍历结束之后,第一索引分组,也即分组1中包含A1、B1的行号索引,因此第二次遍历需针对A1、B1执行查询操作,该查询操作的目的是查询第二布隆过滤器中是否包含该待处理数据的键值。对于A1,第二布隆过滤器包含键值A,表示键值A不是多行待处理数据中的唯一键值,键值A关联了不止一条数据记录,因此需将A1的行号索引a1写入键值A对应的第二索引分组,即分组2,如此,分组2中包含键值A所对应的所有待处理数据的行号索引。对于B1,第二布隆过滤器不包含键值B,表示键值B是多行待处理数据中的唯一键值,其仅关联了一条数据记录,因此可直接输出。
在本申请的一些实施例中,图4是本申请再一实施例提供的数据分析方法的流程示意图,在上述步骤310将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组之后,该方法还可以包括图4所示的步骤410和步骤420。
步骤410,确定同一第二索引分组中所有行号索引所对应的待处理数据均对应同一键值;
步骤420,基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行运算处理。
具体地,该运算处理可以为通过窗口函数所实现的运算处理,窗口函数是对数据库数据进行实时分析处理的联机分析处理(Online Analytical Processing,OLAP)函数,该运算处理可以为排序、求和、求平均等日常运算操作。
在本申请的一些实施例中,上述步骤420可以具体包括:基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行排序和/或求和,输出结果。
在一个示例中,针对表(1),若需要基于待处理数据统计每个用户的第一次交易金额、第一次交易时间,以及截止到当前的总交易金额,则针对用户手机号“xxxxxxxxxx1”,可以将其关联的3条数据记录的行号索引写入键值“xxxxxxxxxx1”对应的同一第二索引分组,因此基于该第二索引分组,能够获取到属于同一用户的所有交易记录,进而利用同一用户的所有交易记录,具体地,针对第二索引分组内行号索引对应的待处理数据按照“用户手机号”“交易时间”进行排序,并对第二索引分组内行号索引对应的待处理数据执行以下操作:相同的“用户手机号”对应的“交易金额”相加,并输出每个“用户手机号”的第一行待处理数据,进而查询到“xxxxxxxxxx1”对应的第一次交易金额、第一次交易时间,以及截止到当前的总交易金额;针对其余键值“xxxxxxxxxx2”、“xxxxxxxxxx3”、“xxxxxxxxxx4”和“xxxxxxxxxx5”均仅关联了一条数据记录,因此如表(2)所示,可直接输出数据。
表(2)
在本申请的一些实施例中,在上述步骤160针对第一索引分组对应的所有待处理数据进行第二次遍历之前,该方法还可以包括:
在第一次遍历完成的情况下,删除第一布隆过滤器,或者,清空第一布隆过滤器中记录的键值。
在本申请实施例中,在完成第一次遍历后,删除第一布隆过滤器,这里第一布隆过滤器的作用是完成初步模糊,筛选对应重复键值的待处理数据,将获取到的所有待处理数据分为两部分,一部分待处理数据的行号索引在第二索引分组中,该部分待处理数据具有重复键值,这类数据在高键值场景非常少;一部分数据的行号索引位于第一索引分组中,即单独存放于内存,该部分数据中存在唯一键值。
涉及步骤170,基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,目标键值为仅关联一条数据记录的键值。
在步骤170中,目标键值为在获取到的待处理数据中,仅出现一次的键值,也即,该键值所关联的数据记录只有一条,对于该类目标键值所对应的待处理数据,无需排序、求和等运算处理,可直接输出。
在本申请的一些实施例中,上述步骤170基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,可以具体包括:
在第二布隆过滤器中不包含待处理数据的键值的情况下,确定待处理数据的键值为目标键值。
涉及步骤180,从待处理数据中,直接输出由目标键值组成的目标待处理数据。
在步骤180中,目标键值组成的目标待处理数据是目标键值下的唯一待处理数据,可以直接输出。
在本申请实施例中,第二布隆过滤器结构提供了一种快速判断数据存在性的方式,进一步提高了数据分析的效率,对于limit的场景(比如所有结果的前100行)可以达到大量唯一值提前输出,可以做到提前结束,缩短大量的无效计算时间。并且,结合第一布隆过滤器和第二布隆过滤器进行数据分析的方案,可以广泛应用于各种分析性数据库场景中,提供了更快速、准确的数据分析解决方案。
可以理解的是,本申请实施例提供的数据分析方法,执行主体可以为终端,或者终端中用于执行数据分析方法的控制模块。下面对数据分析装置进行详细介绍。
图5是本申请实施例提供的一种数据分析装置的结构示意图。如图5所示,该数据分析装置500可以包括:创建初始化模块510、获取模块520、遍历模块530、记录模块540、筛选模块550和输出模块560。
其中,创建初始化模块510,用于创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取模块520,获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个键值关联至少一条数据记录;遍历模块530,用于针对待处理数据进行第一次遍历;记录模块540,用于在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;记录模块,还用于在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值;遍历模块530,还用于针对第一索引分组对应的所有待处理数据进行第二次遍历;筛选模块550,用于基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值,其中,目标键值为仅关联一条数据记录的键值;输出模块560,用于从待处理数据中,直接输出由目标键值组成的目标待处理数据。
本申请提供的数据分析装置,创建和/或初始化第一布隆过滤器和第二布隆过滤器;获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个键值关联至少一条数据记录;针对待处理数据进行第一次遍历;在第一布隆过滤器不包含待处理数据的键值的情况下,在第一布隆过滤器中记录待处理数据的键值,并将待处理数据的行号索引写入第一索引分组;在第一布隆过滤器包含待处理数据的键值的情况下,在第二布隆过滤器中记录待处理数据的键值。针对第一索引分组对应的所有待处理数据进行第二次遍历;基于第二布隆过滤器是否包含待处理数据的键值的遍历结果,从待处理数据关联的所有键值中筛选出目标键值。如此,结合第一布隆过滤器、第二布隆过滤器以及两次遍历操作,可以将仅关联一条数据记录的目标键值筛选出来,进而获取到对应唯一键值的待处理数据,该部分待处理数据可以直接输出,无需进行分区处理,因此能够避免哈希桶做分区时通过对比哈希表主键值确定是否存在哈希冲突的值比较环节,可降低进入哈希桶的数据量,缩短大量的无效计算时间,提升数据分析的速度和效率。
在本申请的一些实施例中,筛选模块550具体用于:在第二布隆过滤器中不包含待处理数据的键值的情况下,确定待处理数据的键值为目标键值。
在本申请的一些实施例中,装置还包括:获取模块520,用于在针对待处理数据进行第一次遍历之后,在第一布隆过滤器包含待处理数据的键值的情况下,获取与键值所对应的第二索引分组;写入模块,用于将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在本申请的一些实施例中,写入模块具体用于:通过哈希桶分组的方式,将待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在本申请的一些实施例中,装置还包括:写入模块,还用于在针对第一索引分组对应的所有待处理数据进行第二次遍历之后,在第二布隆过滤器包含待处理数据的键值的情况下,将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组。
在本申请的一些实施例中,装置还包括:确定模块,用于在将第一索引分组中待处理数据的行号索引写入待处理数据的键值所对应的第二索引分组之后,确定同一第二索引分组中所有行号索引所对应的待处理数据均对应同一键值;数据处理模块,用于基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行运算处理。
在本申请的一些实施例中,数据处理模块具体用于:基于同一第二索引分组中所有行号索引,对同一键值关联的所有数据记录进行排序和/或求和,输出结果。
本申请实施例提供的数据分析装置,能够实现图1-图4的方法实施例中电子设备所实现的各个过程,并能实现相同的技术效果,为避免重复,在此不再赘述。
图6是本申请实施例提供的一种电子设备的硬件结构示意图。
如图6所示,电子设备600包括存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序。
在一个示例中,上述处理器602可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器601可包括只读存储器(Read-Only Memory,ROM),随机存取存储器(RandomAccess Memory,RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本申请第一方面的实施例中开卡方法所描述的操作。
处理器602通过读取存储器601中存储的可执行程序代码来运行与可执行程序代码对应的计算机程序,以用于实现上述第一方面的实施例中的开卡方法。
在一些示例中,电子设备600还可包括通信接口603和总线604。其中,如图6所示,存储器601、处理器602、通信接口603通过总线604连接并完成相互间的通信。
通信接口603,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。也可通过通信接口603接入输入设备和/或输出设备。
总线604包括硬件、软件或两者,将电子设备600的部件彼此耦接在一起。举例来说而非限制,总线604可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Enhanced Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(IndustryStandard Architecture,ISA)总线、无限带宽互连、低引脚数(Low pin count,LPC)总线、存储器总线、微信道架构(Micro Channel Architecture,MCA)总线、外围组件互连(Peripheral Component Interconnect,PCI)总线、PCI-Express(PCI-E)总线、串行高级技术附件(Serial Advanced Technology Attachment,SATA)总线、视频电子标准协会局部(Video Electronics Standards Association Local Bus,VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线604可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
本申请实施例提供的电子设备,能够实现图1-图4的方法实施例中电子设备所实现的各个过程,并能实现相同的技术效果,为避免重复,在此不再赘述。
结合上述实施例中的数据分析方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据分析方法的步骤。
结合上述实施例中的数据分析方法,本申请实施例可提供一种计算机程序产品来实现。该(计算机)程序产品被存储在非易失的存储介质中,该程序产品被至少一个处理器执行时实现上述实施例中的任意一种数据分析方法的步骤。
本申请实施例另提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现上述数据分析方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,做出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。
Claims (11)
1.一种数据分析方法,其特征在于,所述方法包括:
创建和/或初始化第一布隆过滤器和第二布隆过滤器;
获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成;
针对所述待处理数据进行第一次遍历;
在所述第一布隆过滤器不包含所述待处理数据的键值的情况下,在所述第一布隆过滤器中记录所述待处理数据的键值,并将所述待处理数据的行号索引写入第一索引分组;
在所述第一布隆过滤器包含所述待处理数据的键值的情况下,在所述第二布隆过滤器中记录所述待处理数据的键值;
针对所述第一索引分组对应的所有待处理数据进行第二次遍历;
基于所述第二布隆过滤器是否包含所述待处理数据的键值的遍历结果,从所述待处理数据关联的所有键值中筛选出目标键值,其中,所述目标键值为仅关联一条数据记录的键值;
从所述待处理数据中,直接输出由所述目标键值组成的目标待处理数据。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第二布隆过滤器是否包含所述待处理数据的键值的遍历结果,从所述待处理数据关联的所有键值中筛选出目标键值,包括:
在所述第二布隆过滤器中不包含所述待处理数据的键值的情况下,确定所述待处理数据的键值为所述目标键值。
3.根据权利要求1所述的方法,其特征在于,在所述针对所述待处理数据进行第一次遍历之后,所述方法还包括:
在所述第一布隆过滤器包含所述待处理数据的键值的情况下,获取与所述键值所对应的第二索引分组;
将所述待处理数据的行号索引写入所述待处理数据的键值所对应的第二索引分组。
4.根据权利要求3所述的方法,其特征在于,所述将所述待处理数据的行号索引写入所述待处理数据的键值所对应的第二索引分组,包括:
通过哈希桶分组的方式,将所述待处理数据的行号索引写入所述待处理数据的键值所对应的第二索引分组。
5.根据权利要求3所述的方法,其特征在于,在所述针对所述第一索引分组对应的所有待处理数据进行第二次遍历之后,所述方法还包括:
在所述第二布隆过滤器包含所述待处理数据的键值的情况下,将所述第一索引分组中所述待处理数据的行号索引写入所述待处理数据的键值所对应的第二索引分组。
6.根据权利要求5所述的方法,其特征在于,在所述将所述第一索引分组中所述待处理数据的行号索引写入所述待处理数据的键值所对应的第二索引分组之后,所述方法还包括:
确定同一第二索引分组中所有行号索引所对应的待处理数据均对应同一键值;
基于所述同一第二索引分组中所有行号索引,对所述同一键值关联的所有数据记录进行运算处理。
7.根据权利要求6所述的方法,其特征在于,所述基于所述同一第二索引分组中所有行号索引,对所述同一键值关联的所有数据记录进行运算处理,包括:
基于所述同一第二索引分组中所有行号索引,对所述同一键值关联的所有数据记录进行排序和/或求和,输出结果。
8.一种数据分析装置,其特征在于,所述装置包括:
创建初始化模块,用于创建和/或初始化第一布隆过滤器和第二布隆过滤器;
获取模块,获取待处理数据,其中,每条待处理数据由一条数据记录及其关联的键值组成,每个所述键值关联至少一条数据记录;
遍历模块,用于针对所述待处理数据进行第一次遍历;
记录模块,用于在所述第一布隆过滤器不包含所述待处理数据的键值的情况下,在所述第一布隆过滤器中记录所述待处理数据的键值,并将所述待处理数据的行号索引写入第一索引分组;
所述记录模块,还用于在所述第一布隆过滤器包含所述待处理数据的键值的情况下,在所述第二布隆过滤器中记录所述待处理数据的键值;
遍历模块,还用于针对所述第一索引分组对应的所有待处理数据进行第二次遍历;
筛选模块,用于基于所述第二布隆过滤器是否包含所述待处理数据的键值的遍历结果,从所述待处理数据关联的所有键值中筛选出目标键值,其中,所述目标键值为仅关联一条数据记录的键值;
输出模块,用于从所述待处理数据中,直接输出由所述目标键值组成的目标待处理数据。
9.一种电子设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-7任意一项所述的数据分析方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-7任意一项所述的数据分析方法的步骤。
11.一种计算机程序产品,其特征在于,所述计算机程序产品被存储在非易失的存储介质中,所述计算机程序产品被至少一个处理器执行时实现如权利要求1-7中任意一项所述的数据分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410118887.8A CN117992452A (zh) | 2024-01-29 | 2024-01-29 | 数据分析方法、装置、设备、介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410118887.8A CN117992452A (zh) | 2024-01-29 | 2024-01-29 | 数据分析方法、装置、设备、介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992452A true CN117992452A (zh) | 2024-05-07 |
Family
ID=90897103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410118887.8A Pending CN117992452A (zh) | 2024-01-29 | 2024-01-29 | 数据分析方法、装置、设备、介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992452A (zh) |
-
2024
- 2024-01-29 CN CN202410118887.8A patent/CN117992452A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112199935A (zh) | 数据的比对方法、装置、电子设备及计算机可读存储介质 | |
CN111339211B (zh) | 网络问题分析的方法、装置、设备及介质 | |
CN113852531B (zh) | 用于功能码匹配的can通讯方法和can控制器 | |
CN117992452A (zh) | 数据分析方法、装置、设备、介质及产品 | |
CN116775110A (zh) | 数据同步方法、装置、设备、介质及产品 | |
CN116431588A (zh) | 数据压缩的方法、装置、设备和存储介质 | |
CN116932537A (zh) | 车辆信息的查询方法、装置、设备、存储介质及车辆 | |
CN113111614B (zh) | 类总线分组的确定方法、装置、设备及介质 | |
CN114547380A (zh) | 数据遍历查询方法、装置、电子设备及可读存储介质 | |
CN112328595A (zh) | 一种数据查找方法、装置、设备及存储介质 | |
CN109981540B (zh) | 防火墙数据优化方法、装置、计算机设备及可读存储介质 | |
CN118626683A (zh) | 数据存储方法、装置、设备及计算机存储介质、程序产品 | |
CN113220456B (zh) | 账单数据的处理方法及相关装置 | |
CN116383197A (zh) | 智能合约处理方法、装置、设备及计算机可读存储介质 | |
CN112836693B (zh) | 一种光学字符识别重复检测方法和系统 | |
CN116089382A (zh) | 文件存储方法、装置、设备、介质及产品 | |
CN118535100A (zh) | 数据处理的方法、装置、设备及计算机存储介质 | |
CN115630062A (zh) | 数据处理方法、装置、设备、可读存储介质 | |
CN117931758A (zh) | 日志处理方法、装置、设备、可读存储介质和车辆 | |
CN116775673A (zh) | 多数据源的数据整合方法及其装置、设备、介质、产品 | |
CN118379139A (zh) | 交易完整性检查方法、装置、设备、存储介质及产品 | |
CN118796854A (zh) | 基于多数据源的数据处理方法、装置、电子设备及介质 | |
CN118174882A (zh) | 车辆控制方法、装置、设备、介质及车辆 | |
CN118796775A (zh) | 数据删除方法、装置、设备、介质及产品 | |
CN116775808A (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 |