用于电商平台的会员数据圈选方法及系统
技术领域
本发明涉及数据处理技术领域,尤其涉及一种用于电商平台的会员数据圈选方法及系统。
背景技术
对于电商平台而言,会员消费数据的分析结果是策划促销活动的重要参考,在会员消费数据的分析过程中,数据的多纬度圈选是获取会员消费数据的关键步骤;现有技术中,常用的数据圈选方法包括预汇总圈选法(OLAP-Druid)和分布式内存计算圈选法(SPARK)两种,对于OLAP-Druid圈选法,其主要采用的是HLL算法对会员的消费数据进行计算分析,该算法在去重的业务场景中的精度经常会丢失,故存在会员消费数据圈选结果不精确的问题,对于SPARK圈选法,其通过获取会员的原始消费数据,采用拉明细的方式将原始消费数据放在分布式节点内存中进行逻辑计算,最终得到会员消费数据圈选结果,在实际应用中发现,由于会员的原始消费数据量极大,虽然后者圈选方法能够保证会员消费数据圈选结果的精确性,但是需要消耗较多的计算资源和内存资源,故存在圈选效率低和用户体验差的缺陷。
发明内容
本发明的目的在于提供一种用于电商平台的会员数据圈选方法及系统,能够在减少内存及计算资源消耗的同时保证会员消费数据圈选结果的精度,显著提高了会员消费数据的圈选效率。
为了实现上述目的,本发明的一方面提供一种用于电商平台的会员数据圈选方法,包括:
从数据仓库中同步会员消费数据创建多数据模型;
基于所述数据模型中的会员编码生成多个互不相同的整数标识符,并将所述会员编码与所述整数标识符的映射关系保存于字典表中;
将所述整数标识符与会员消费数据的多个纬度消费字段一一对应生成位图表;
根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果。
优选地,在步骤将所述整数标识符与会员消费数据的多个纬度消费字段一一对应生成位图表之后还包括:
定期对所述位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表。
具体地,所述步骤,定期对所述位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表的方法包括:
基于当前时间节点从数据仓库中获取新增会员消费数据,同步至数据模型中;
根据字典表中会员编码的映射关系,定期将新增会员消费数据中对应的字段数据按照映射关系补入位图表,实现位图表的补入更新。
较佳地,定期对所述位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表之后还包括:
对所述位图表进行清洗处理,剔除无关纬度字段数据。
进一步地,在步骤根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果之前还包括:
预设多种查询指令,提前对清洗处理后的位图表进行位运算得到与多种查询指令匹配的预圈选结果;
将多种预圈选结果存储在临时结果表中以备用户查询。
优选地,根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果的方法包括:
接收用户的查询指令,判断所述查询指令是为预设置查询指令;
在判断结果为是时,直接从临时结果表中匹配对应的预圈选结果输出,在判断结果为否时,基于补入更新后的位图表通过整数标识符对其中多个纬度消费字段进行逻辑运算后输出圈选结果。
与现有技术相比,本发明提供的用于电商平台的会员数据圈选方法具有以下有益效果:
本发明提供的用于电商平台的会员数据圈选方法,首先从数据仓库中获取会员消费数据创建数据模型,其中,数据模型中包括会员编码、多个纬度消费字段以及消费日期,通过将会员编码一一进行转换成整数标识符,并将整数标识符与会员编码的映射关系保存在字典表中,然后利用整数标识符、消费字段和消费日期构建位图表,在获取用户的查询指令后调用整数标识符对位图表中的多个纬度消费字段进行逻辑位运算,最终得到圈选结果。
可见,使用本发明提供的用于电商平台的会员数据圈选方法,通过整数标识符代替会员编码并将会员消费数据通过位图表(bitmap表)表示,以实现会员数据的圈选仅通过bitmap表中的集合位运算即可得到,从而在减少计算资源和存储资源的同时能够显著提高运算效率,特别适用于海量会员数据的圈选运算。
本发明的另一方面提供一种用于电商平台的会员数据圈选系统,应用于上述技术方案所述的用于电商平台的会员数据圈选方法中,所述系统包括:
数据模型创建单元,用于从数据仓库中同步会员消费数据创建多数据模型;
字典表创建单元,基于数据模型中的会员编码生成多个互不相同的整数标识符,并将会员编码与整数标识符的映射关系保存于字典表中;
位图表生成单元,用于将整数标识符与会员消费数据的多个纬度消费字段一一对应生成位图表;
查询输出单元,用于根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果。
优选地,还包括与所述位图表生成单元连接的位图表更新单元;
所述位图表更新单元用于定期对所述位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表。
较佳地,所述位图表更新单元包括:
数据获取模块,用于基于当前时间节点从数据仓库中获取新增会员消费数据,同步至数据模型中;
位图表更新模块,用于根据字典表中会员编码的映射关系,定期将新增会员消费数据中对应的字段数据按照映射关系补入位图表,实现位图表的补入更新。
较佳地,还包括设在所述位图表生成单元和所述查询输出单元之间的数据清洗单元;
所述数据清洗单元用于对所述位图表进行清洗处理,剔除无关纬度字段数据。
优选地,还包括预圈选单元和存储单元,所述预圈选单元的输入端和所述数据清洗单元的输出端连接,所述存储单元的输出端与所述查询输出单元的输入端连接;
所述预圈选单元用于预设多种查询指令,提前对清洗处理后的位图表进行位运算得到与多种查询指令匹配的预圈选结果;
所述存储单元用于将多种预圈选结果存储在临时结果表中以备用户查询。
优选地,所述查询输出单元包括:
判断模块,用于接收用户的查询指令,判断所述查询指令是为预设置查询指令;
输出模块,用于在判断结果为是时,直接从临时结果表中匹配对应的预圈选结果输出,在判断结果为否时,基于补入更新后的位图表通过整数标识符对其中多个纬度消费字段进行逻辑运算后输出圈选结果。
与现有技术相比,本发明提供的用于电商平台的会员数据圈选系统的有益效果与上述技术方案提供的用于电商平台的会员数据圈选方法的有益效果相同,在此不做赘述。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例一中用于电商平台的会员数据圈选方法的流程示意图;
图2为本发明实施例一中采用用于电商平台的会员数据圈选方法获得的圈选结果示例图;
图3为本发明实施例一中bitmap_table_A统计表示例图;
图4为本发明实施例一中bitmap_table_B统计表示例图;
图5为本发明实施例二中用于电商平台的会员数据圈选系统的结构框图。
附图标记:
1-数据模型创建单元, 2-字典表创建单元;
3-位图表生成单元, 4-查询输出单元;
5-位图表更新单元, 6-数据清洗单元;
7-预圈选单元, 8-存储单元;
41-判断模块, 42-输出模块;
51-数据获取模块, 52-位图表更新模块。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。
实施例一
请参阅图1,本实施例提供一种用于电商平台的会员数据圈选方法,包括:
从数据仓库中同步会员消费数据创建多数据模型;基于数据模型中的会员编码生成多个互不相同的整数标识符,并将会员编码与整数标识符的映射关系保存于字典表中;将整数标识符与会员消费数据的多个纬度消费字段一一对应生成位图表;根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果。
本实施例提供的用于电商平台的会员数据圈选方法,首先从数据仓库中获取会员消费数据创建数据模型,其中,数据模型中包括会员编码、多个纬度消费字段以及消费日期,通过将会员编码一一进行转换成整数标识符,并将整数标识符与会员编码的映射关系保存在字典表中,然后利用整数标识符、消费字段和消费日期构建位图表,在获取用户的查询指令后调用整数标识符对位图表中的多个纬度消费字段进行逻辑位运算,最终得到圈选结果。
可见,使用本实施例提供的用于电商平台的会员数据圈选方法,通过整数标识符代替会员编码并将会员消费数据通过位图表(bitmap表)表示,以实现会员数据的圈选仅通过bitmap表中的集合位运算即可得到,从而在减少计算资源和存储资源的同时能够显著提高运算效率,特别适用于海量会员数据的圈选运算。
请继续参阅图1,考虑到会员消费数据每天都处于不断更新的状态,为了避免位图表数据存在滞后性,本实施例在步骤将整数标识符与会员消费数据的多个纬度消费字段一一对应生成位图表之后还包括:定期对位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表。
具体地,上述实施例中定期对位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表的方法包括:
基于当前时间节点从数据仓库中获取新增会员消费数据,同步至数据模型中;根据字典表中会员编码的映射关系,定期将新增会员消费数据中对应的字段数据按照映射关系补入位图表,实现位图表的补入更新。
具体实施时,定期从数据仓库中获取更新的会员消费数据,然后基于字典表中的映射关系利用指定的补数函数执行补数操作,以实现对位图表中字段数据的补入更新;为了便于理解补入更新的具体过程,以下进行举例说明,首先从数据模型中获取更新的会员消费数据,并识别其中发生消费数据更新的会员编码,然后通过字典表对会员编码进行转化得到与之匹配的整数标识符,接着获取与整数标识符对应的当天(flag=1)更新的消费字段数据存储到bitmap表中,通过将当天(flag=1)统计的消费字段数据与前一天(flag=2)统计的消费字段数据进行数据整合,作为当前(flag=2)统计的消费字段数据插入到bitmap表中,完成bitmap表的补入更新,需要说明的是,flag=1仅表示当天更新的消费字段数据,flag=2表示当前全部的消费字段数据,其包括当天更新的消费字段数据和在当天之前的全部消费字段数据。通过上述实施过程可知,本实施例无需对所有历史数据进行重复计算,只需通过叠加整合的方式对bitmap表中的消费字段数据进行持续更新,实现在减少计算量的同时保证圈选结果的准确性。
可选地,请接着参阅图1,上述实施例中在步骤,定期对位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表之后还包括:对位图表进行清洗处理,剔除无关纬度字段数据。
具体实施时,此步骤相当于创建CUBE模型,在剔除位图表中无关维度的字段数据后降低了groupby后的数据基数,能够提高查询效率,加快圈选速度。
为了进一步加快圈选速度,本实施例在步骤根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果之前还包括:
预设置多种查询指令,提前对清洗处理后的位图表进行位运算得到与多种查询指令匹配的预圈选结果;将多种预圈选结果存储在临时结果表中以备用户查询。
具体实施时,考虑到位图表中的字段数据量巨大,若采用实时运算的方式则会造成圈选结果的输出有一定的延迟,鉴于此,本实施例通过将常用的查询指令预存储,以使系统能够根据这些查询指令提前对清洗处理后的位图表进行位运算得到对应的预圈选结果,并将这些预圈选结果存储在临时结果表中以在用户查询时能够直接调出。
进一步地,上述实施例中步骤,根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果的方法包括:
接收用户的查询指令,判断查询指令是为预存储查询指令;在判断结果为是时,直接从临时结果表中匹配对应的预圈选结果输出,在判断结果为否时,基于补入更新后的位图表通过整数标识符对其中多个纬度消费字段进行逻辑运算后输出圈选结果。可见,通过上述两种计算模式的设定,能够在用户发出的查询指令与预存储的查询指令匹配时,直接从临时结果表中调出预圈选结果输出,此时能够缩减计算等待时间,而在用户发出的查询指令不能够与用户发出的查询指令匹配时,可直接基于查询指令对补入更新后的位图表进行逻辑运算输出圈选结果,也即通过实时运算输出圈选结果,扩展了用户的查询范围,支持用户自定义多维圈选功能。
为了便于理解,本实施例以新老会员消费数据的圈选过程为例进行说明,如图2所示,从数据仓库中获取日期在0826和0827两天的会员消费数据创建数据模型,该数据模型中包括会员编码、购物渠道、购物品类和购物日期等多个纬度的消费字段,通过调用字典表中的映射关系将会员编码转换成便于bitmap表运算的整数标识符,为了便于理解区分暂且将其用字母A、B、C、D表示,通过对位图表进行清洗处理后分别统计每天不同购物渠道新老会员的消费数据bitmap_table_A,统计的维度包括购物渠道(线上或线下)+标签(flag=1或flag=2)+购物日期(0826或0827),每天的统计信息会有两条,一条是当天(flag=1)会员的bitmap表集合,另外一条是当前(flag=2)会员的bitmap表集合,其次还需要统计纬度为购物品类+购物渠道+标签(flag=1或flag=2)+购物日期(0826或0827)的新老会员的消费数据bitmap_table_B,每天的统计信息同样有两条,一条是当天(flag=1)会员的bitmap表集合,另外一条是当前(flag=2)会员的bitmap表集合。然后分别根据查询指令func()进行如下三种场景的圈选:
场景一:购物日期发生在0827线上新买家对应的bitmap_table_A如图3所示,圈选过程实则就是将bitmap集合{A,D}和bitmap集合{A,C}进行rb_andnot_cardinality位运算,得到的圈选结果为{D},统计的新买家数量为1。
场景二:购物日期发生在0827线上空调新买家对应的bitmap_table_B如图4所示,统计的购物日期发生在0827的线上空调新买家实则就是将bitmap集合{C,A}和bitmap集合{C}进行rb_andnot_cardinality位运算,得到的圈选结果为{A},统计的新买家的数量为1;同理,购物日期发生在0827的线上冰洗新买家实则就是将bitmap集合{D}和bitmap空集合做rb_andnot_cardinality位运算,得到的圈选结果为{D},统计的新买家数量为1。
场景三:购物日期发生在0827的线上空调新买家中有多少是线上新买家,实则就是将bitmap_table_A和bitmap_table_B做rb_and_cardinality操作,也即将bitmap集合{A}和bitmap集合{A,C}进行rb_andnot_cardinality位运算,得到的圈选结果为空集,统计的新买家数量为0;同理,购物日期发生在0827的线上冰洗新买家有多少是线上新买家,实则就是将bitmap集合{D}和bitmap集合{A,C}进行rb_andnot_cardinality位运算,得到的圈选结果为{D},统计的新买家数量为1。
实施例二
请参阅图1和图5,本实施例提供一种用于电商平台的会员数据圈选系统,包括:
数据模型创建单元1,用于从数据仓库中同步会员消费数据创建多数据模型;
字典表创建单元2,基于数据模型中的会员编码生成多个互不相同的整数标识符,并将会员编码与整数标识符的映射关系保存于字典表中;
位图表生成单元3,用于将整数标识符与会员消费数据的多个纬度消费字段一一对应生成位图表;
查询输出单元4,用于根据用户的查询指令通过整数标识符对位图表中的多个纬度消费字段进行位运算,输出圈选结果。
优选地,还包括与位图表生成单元3连接的位图表更新单元5,位图表更新单元5用于定期对位图表中的字段数据进行补入更新,生成与当前时间节点对应的位图表。
优选地,位图表更新单元5包括:
数据获取模块51,用于基于当前时间节点从数据仓库中获取新增会员消费数据,同步至数据模型中;
位图表更新模块52,用于根据字典表中会员编码的映射关系,定期将新增会员消费数据中对应的字段数据按照映射关系补入位图表,实现位图表的补入更新。
优选地,还包括设在位图表生成单元3和查询输出单元4之间的数据清洗单元6;
数据清洗单元6用于对位图表进行清洗处理,剔除无关纬度字段数据。
优选地,还包括预圈选单元7和存储单元8,预圈选单元7的输入端和数据清洗单元6的输出端连接,存储单元8的输出端与查询输出单元4的输入端连接;
预圈选单元7用于预设多种查询指令,提前对清洗处理后的位图表进行位运算得到与多种查询指令匹配的预圈选结果;
存储单元8用于将多种预圈选结果存储在临时结果表中以备用户查询。
优选地,查询输出单元4包括:
判断模块41,用于接收用户的查询指令,判断查询指令是为预设置查询指令;
输出模块42,用于在判断结果为是时,直接从临时结果表中匹配对应的预圈选结果输出,在判断结果为否时,基于补入更新后的位图表通过整数标识符对其中多个纬度消费字段进行逻辑运算后输出圈选结果。
与现有技术相比,本发明实施例提供的用于电商平台的会员数据圈选系统的有益效果与上述实施例一提供的用于电商平台的会员数据圈选方法的有益效果相同,在此不做赘述。
本领域普通技术人员可以理解,实现上述发明方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,上述程序可以存储于计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:ROM/RAM、磁碟、光盘、存储卡等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。