System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及大数据处理,特别是涉及一种用户特征窄表转换特征宽表的方法、一种用户特征窄表转换特征宽表的装置、一种电子设备以及一种计算机可读介质。
技术介绍
1、用户群画像和用户特性分析需要根据不同用户的特征进行个性化的推荐、广告投放等操作。随着用户数量的增加以及特征的复杂性,需要处理的数据量也越来越大。
2、为了提高查询效率和满足业务需求,许多业务应用倾向于使用宽表。宽表是一种将多个关联的数据表合并成一个扁平的表格结构的方式。通过将相关的特性数据整合到一个表中,可以减少数据的连接操作,提高查询速度和效率。由于宽表的结构相对简单,业务规则可以更容易地映射到sql查询语句中。这使得查询分析变得更加直观和可操作,也提高了开发效率。
3、将海量数据转换为宽表的过程并不是一件简易的事情,特别是当数据量较大(1tb以上),用户特性数目较多时(1000个以上),经常会遇到内存资源不足的问题。因为在进行数据转换过程中,需要同时加载和处理大量的数据,无法一次性将所有数据都加载到内存中进行计算,导致出现oom(内存不足)的错误。
4、虽然可以通过大量增加内存资源解决部分问题,但增加内存资源也就是增加硬件成本,需要一种更加高效的可以将海量用户数据转换为宽表的方法。
技术实现思路
1、鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种用户特征窄表转换特征宽表方法和相应的一种用户特征窄表转换特征宽表装置、一种电子设备以及一种计算机
2、本专利技术实施例公开了一种用户特征窄表转换特征宽表的方法,所述方法包括:
3、获取用户特征数据并采用所述用户特征数据生成用户特征窄表;所述用户特征窄表记载的字段包括用户id、特征id、特征值;其中,每个用户id的记录条数与所述用户id的特征值个数相同;
4、将所述用户特征窄表转换为用户特征数组临时表;所述用户特征数组临时表记载的字段包括用户id、特征值数组;所述特征值数组由至少一项特征id-特征值构成;每个用户id对应一条特征值数组记录;
5、将所述用户特征数组临时表转换为用户特征宽表;所述用户特征宽表包括用户id、多个特征id值;每个用户id对应一条特征值序列记录;每个用户的特征值序列记录中的每一个特征值与每个特征id值一一对应。
6、可选地,将所述用户特征窄表转换为用户特征数组临时表的步骤,包括:
7、创建一张空用户特征数组临时表;所述空用户特征数组临时表记载两个字段:用户id和特征值数组;
8、分别将所述用户特征窄表中每个用户的每条记录的特征id和特征id的特征值组合为“特征id-特征值”组合字段,得到每个用户所有的“特征id-特征值”组合字段;
9、分别将每个用户所有的“特征id-特征值”组合字段组合为特征值数组,得到每个用户id的特征值数组;
10、将用户id和用户id对应的特征值数组写入所述空用户特征数组临时表,得到所述用户特征数组临时表。
11、可选地,将所述用户特征数组临时表转换为用户特征宽表的步骤,包括:
12、s1,从所述用户特征数组临时表读取一批临时表记录;
13、s2,读取每条临时表记录的特征值数组中的“特征id-特征值”组合字段;
14、s3,根据“特征id-特征值”组合字段中的特征id和用户特征宽表中多个特征id值字段的顺序对所述“特征id-特征值”组合字段进行排序;
15、s4,依次提取排序后的“特征id-特征值”组合字段中的特征值,生成有序特征值序列;
16、s5,将每条临时表记录的用户id和用户id对应的有序特征值序列写入空用户特征宽表;
17、重复步骤s1-s5,直至将所述用户特征数组临时表的最后一批临时表记录处理完成,得到所述用户特征宽表。
18、可选地,所述方法还包括:
19、根据设备的可用内存配置所述一批临时表记录的数量。
20、可选地,所述方法还包括:
21、采用0或null填充所述用户特征宽表的特征id值列中缺少特征值的位置。
22、本专利技术实施例还公开了一种用户特征窄表转换特征宽表的装置,所述装置包括:
23、窄表生成模块,用于获取用户特征数据并采用所述用户特征数据生成用户特征窄表;所述用户特征窄表记载的字段包括用户id、特征id、特征值;其中,每个用户id的记录条数与所述用户id的特征值个数相同;
24、数组临时表生成模块,用于将所述用户特征窄表转换为用户特征数组临时表;所述用户特征数组临时表记载的字段包括用户id、特征值数组;所述特征值数组由至少一项特征id-特征值构成;每个用户id对应一条特征值数组记录;
25、宽表生成模块,用于将所述用户特征数组临时表转换为用户特征宽表;所述用户特征宽表包括用户id、多个特征id值;每个用户id对应一条特征值序列记录;每个用户的特征值序列记录中的每一个特征值与每个特征id值一一对应。
26、可选地,数组临时表生成模块包括:
27、空数组临时表创建子模块,用于创建一张空用户特征数组临时表;所述空用户特征数组临时表记载两个字段:用户id和特征值数组;
28、组合字段生成子模块,用于分别将所述用户特征窄表中每个用户的每条记录的特征id和特征id的特征值组合为“特征id-特征值”组合字段,得到每个用户所有的“特征id-特征值”组合字段;
29、特征值数组生成子模块,用于分别将每个用户所有的“特征id-特征值”组合字段组合为特征值数组,得到每个用户id的特征值数组;
30、特征值数组写入子模块,用于将用户id和用户id对应的特征值数组写入所述空用户特征数组临时表,得到所述用户特征数组临时表。
31、可选地,宽表生成模块包括:
32、临时表记录读取子模块,用于从所述用户特征数组临时表读取一批临时表记录;
33、组合字段读取子模块,用于读取每条临时表记录的特征值数组中的“特征id-特征值”组合字段;
34、排序子模块,用于根据“特征id-特征值”组合字段中的特征id和用户特征宽表中多个特征id值字段的顺序对所述“特征id-特征值”组合字段进行排序;
35、有序特征值序列生成子模块,用于依次提取排序后的“特征id-特征值”组合字段中的特征值,生成有序特征值序列;
36、有序特征值序列写入子模块,用于将每条临时表记录的用户id和用户id对应的有序特征值序列写入空用户特征宽表;
37、重复执行子模块,用于令所述临时表记录读取子模块、所述组合字段读取子模块、所述排序子模块、所述有序特征值序列生成子模块、所述有序特征值序列写入子模块重复执行,直至将所述用户特征数组临时表的最后一批临时表记录处理完成,得到所述用户特征宽表。
38、可本文档来自技高网...
【技术保护点】
1.一种用户特征窄表转换特征宽表的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,将所述用户特征窄表转换为用户特征数组临时表的步骤,包括:
3.根据权利要求2所述的方法,其特征在于,将所述用户特征数组临时表转换为用户特征宽表的步骤,包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
6.一种用户特征窄表转换特征宽表的装置,其特征在于,所述装置包括:
7.根据权利要求6所述的装置,其特征在于,数组临时表生成模块包括:
8.根据权利要求6所述的装置,其特征在于,宽表生成模块包括:
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
10.一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-5任一项所述用户特征窄表转换特征宽表的方法
...【技术特征摘要】
1.一种用户特征窄表转换特征宽表的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,将所述用户特征窄表转换为用户特征数组临时表的步骤,包括:
3.根据权利要求2所述的方法,其特征在于,将所述用户特征数组临时表转换为用户特征宽表的步骤,包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
6.一种用户特征窄表转换特征宽表的装置,其特征在于...
【专利技术属性】
技术研发人员:王国章,黄振琳,徐育彪,
申请(专利权)人:和元达信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。