System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据采样,特别是涉及一种数据采样方法、装置、设备及存储介质。
技术介绍
1、在大数据时代,数据量的爆炸性增长对数据处理和分析提出了更高的要求。传统的数据采样方法,如简单随机抽样、系统抽样和分层抽样等,虽然在许多场景下表现良好,但在面对海量数据时,常常面临内存占用高、查询性能慢和采样效率低等瓶颈问题。这些问题严重制约了数据处理的速度和效率,特别是在实时分析、大规模机器学习模型训练等领域,对数据采样的质量和速度提出了更高的要求。
技术实现思路
1、基于上述问题,本申请提供了一种数据采样方法、装置、设备及存储介质,目的是提升采样过程中数据查询性能,降低对内存的占用,提升采样效率。
2、本申请实施例公开了如下技术方案:
3、本申请第一方面提供了一种数据采样方法,该方法包括:
4、获取数据库中待查询数据集的最大主键id和最小主键id;
5、确定介于所述最小主键id和所述最大主键id之间的多个不同的中间主键id;所述中间主键id用于实现数据的层次划分;
6、利用所述最大主键id、所述最小主键id和所述多个不同的中间主键id,将所述待查询数据集划分为分层数据结构;
7、从具有所述分层数据结构的待查询数据集中,根据目标样本数目进行随机采样。
8、可选实现方式中,所述确定介于所述最小主键id和所述最大主键id之间的多个不同的中间主键id,包括:
9、根据所述待查询数据集的数据总量和所述目标样本数
10、确定介于所述最小主键id和所述最大主键id之间的n个不同的中间主键id;n等于所述分层数减1。
11、可选实现方式中,所述根据所述待查询数据集的数据总量和所述目标样本数目,确定分层数,包括:
12、若所述数据总量与所述目标样本数目的商小于或等于预设分层数限值,则对所述数据总量与所述目标样本数目的商取整后作为分层数;
13、若所述数据总量与所述目标样本数目的商大于预设分层数限值,则将所述预设分层数限值作为分层数。
14、可选实现方式中,所述确定介于所述最小主键id和所述最大主键id之间的n个不同的中间主键id,包括:
15、将所述待查询数据集的主键id按照所述分层数等分,确定n个不同的中间主键id。
16、可选实现方式中,所述从具有所述分层数据结构的待查询数据集中,根据目标样本数目进行随机采样,包括:
17、从具有所述分层数据结构的待查询数据集中,随机确定一个分层或随机组合多个分层;
18、根据随机确定的一个分层或者随机组合的多个分层,构建数据查询语句;所述数据查询语句包括起始查询主键id和结束查询主键id;
19、利用所述数据查询语句,在具有所述分层数据结构的待查询数据集中随机采样所述目标样本数目个数据样本。
20、可选实现方式中,所述目标样本数目为k,k为大于1的整数;所述利用所述数据查询语句,在具有所述分层数据结构的待查询数据集中随机采样所述目标样本数目个数据样本,包括:
21、在具有所述分层数据结构的待查询数据集中查询得到与所述数据查询语句对应的目标数据集;
22、创建空的采样列表;所述采样列表的长度为k;
23、将所述目标数据集中前k个的数据填入所述采样列表中;
24、从所述目标数据集的第k+1个数据开始遍历,并为遍历到的数据生成随机数;所述随机数为整数;
25、若生成的随机数为1~k之间的整数,则利用遍历到的数据替换所述采样列表中与所述随机数对应的位置的数据,并继续遍历所述目标数据集中下一数据,直至所述目标数据集的最后一个数据遍历完成,将所述采样列表中保留的数据作为采样结果;若生成的随机数在大于k,则继续遍历所述目标数据集中下一数据,直至所述目标数据集的最后一个数据遍历完成,将所述采样列表中保留的数据作为采样结果。
26、本申请第二方面提供了一种数据采样装置,该装置包括:
27、数据标识获取模块,用于获取数据库中待查询数据集的最大主键id和最小主键id;
28、中间标识确定模块,用于确定介于所述最小主键id和所述最大主键id之间的多个不同的中间主键id;所述中间主键id用于实现数据的层次划分;
29、分层模块,用于利用所述最大主键id、所述最小主键id和所述多个不同的中间主键id,将所述待查询数据集划分为分层数据结构;
30、采样模块,用于从具有所述分层数据结构的待查询数据集中,根据目标样本数目进行随机采样。
31、可选实现方式中,所述采样模块,包括:
32、数据层选定单元,用于从具有所述分层数据结构的待查询数据集中,随机确定一个分层或随机组合多个分层;
33、查询语句构建单元,用于根据随机确定的一个分层或者随机组合的多个分层,构建数据查询语句;所述数据查询语句包括起始查询主键id和结束查询主键id;
34、随机采样单元,用于利用所述数据查询语句,在具有所述分层数据结构的待查询数据集中随机采样所述目标样本数目个数据样本。
35、本申请第三方面提供了一种数据采样设备,该设备包括:处理器以及存储器:
36、所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
37、所述处理器用于根据所述程序代码中的指令执行第一方面任一实现方式中介绍的数据采样方法的步骤。
38、本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面任一实现方式介绍的数据采样方法的步骤。
39、相较于现有技术,本申请具有以下有益效果:
40、在本申请技术方案中,首先获取数据库中待查询数据集的最大主键id和最小主键id;接着确定介于所述最小主键id和所述最大主键id之间的多个不同的中间主键id;其后利用所述最大主键id、所述最小主键id和所述多个不同的中间主键id,将所述待查询数据集划分为分层数据结构;最后从具有所述分层数据结构的待查询数据集中,根据目标样本数目进行随机采样。可见本申请技术方案中,只需要查询最大主键id和最小主键id,不需要存储所有数据的主键id,节省了内存占用,再通过分层划分降低了数据查询量,提升了查询性能,进而提升了数据采样效率。
本文档来自技高网...【技术保护点】
1.一种数据采样方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述确定介于所述最小主键ID和所述最大主键ID之间的多个不同的中间主键ID,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述待查询数据集的数据总量和所述目标样本数目,确定分层数,包括:
4.根据权利要求2所述的方法,其特征在于,所述确定介于所述最小主键ID和所述最大主键ID之间的N个不同的中间主键ID,包括:
5.根据权利要求1所述的方法,其特征在于,所述从具有所述分层数据结构的待查询数据集中,根据目标样本数目进行随机采样,包括:
6.根据权利要求5所述的方法,其特征在于,所述目标样本数目为k,k为大于1的整数;所述利用所述数据查询语句,在具有所述分层数据结构的待查询数据集中随机采样所述目标样本数目个数据样本,包括:
7.一种数据采样装置,其特征在于,包括:
8.根据权利要求7所述的装置,其特征在于,所述采样模块,包括:
9.一种数据采样设备,其特征在于,包括:处理器以及存储器:
< ...【技术特征摘要】
1.一种数据采样方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述确定介于所述最小主键id和所述最大主键id之间的多个不同的中间主键id,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述待查询数据集的数据总量和所述目标样本数目,确定分层数,包括:
4.根据权利要求2所述的方法,其特征在于,所述确定介于所述最小主键id和所述最大主键id之间的n个不同的中间主键id,包括:
5.根据权利要求1所述的方法,其特征在于,所述从具有所述分层数据结构的待查询数据集中,根据目标样本数目进行随机采样,...
【专利技术属性】
技术研发人员:曹阳,何光宇,金铸,
申请(专利权)人:东软集团股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。