一种获取用户独立访问数的方法与装置的制作方法

文档序号:6433007阅读:185来源:国知局
专利名称:一种获取用户独立访问数的方法与装置的制作方法
技术领域
本申请涉及数据库领域,特别是涉及一种获取用户独立访问数的方法与装置。
背景技术
在数据仓库的后台ETL(Extraction-Transformation-Loading,数据提取、转换和加载)场景中,常常有这样的业务场景,即针对同一份用户行为产生的用户日志,或者用户行为流水表,进行不同维度下的UV (Unique Visitor,用户独立访问数)计算。例如,对于搜索访问用户日志,按照搜索类目,搜索关键词,搜索排序算法等维度进行用户UV的计算。这些数据量是很大的,一般都是上亿条记录数,所以需要使用hadoop( —种分布式系统基础架构)或者Hive (Hive是基于hadoop分布式文件处理系统的一种数据查询和编程语言)进行处理。
在衡量互联网流量效果的指标中,UV是比较特殊的衡量次数,如果某个维度的UV越高,说明此维度设置越有效,并且不同维度的UV不能叠加计算。而现有技术中,通常每计算一个维度下的UV都需要全量遍历一次源表,通常每计算一次指定维度下的UV指标就需要做一次全表遍历。如果需要单独算两个维度的UV,就需要全表遍历两次,N个维度就需要N次,并且每计算一个维度就需要进行两次遍历去重过程,N个维度就需要2N次遍历去重过程,在需要计算的维度较多的情况下,全表遍历次数和遍历去重过程,消耗计算资源和计算时间都呈线性增长的趋势,运算和耗时都非常巨大。

发明内容
本申请所要解决的技术问题是提供一种获取用户独立访问数的方法和装置,只需要一次全表遍历和相应两次遍历去重过程就可获得任意维度组合下的UV。为了解决上述问题,本申请公开了一种获取用户独立访问数的方法,包括打标签步骤,遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;第一分析运算步骤,以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;第二分析运算步骤,遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。优选的,所述的打标签步骤具体包括数据获取步骤,遍历一次用户日志,获得用户数据;数据复制步骤,当维度组合个数为η时,将每条数据复制η-1条;数据保留置空步骤,对所得到由同一条用户数据复制得到的η个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他η-1个维度的数据置空;标记模块步骤,将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
优选的,所述的第一分析运算步骤具体包括第一判断步骤,对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;如果包含转入第一计数步骤;如果不包含,转入第二计数步骤;其中,所述第一计数步骤为,对所述数据去重并只保留一条此类数据,记录独立访问数为I;所述第二计数步骤为,根据所述数据直接记录用户独立访问数为I ;第一整理步骤,对数据进行整理得到用户粒度数据。优选的,所述的第二分析运算步骤具体包括
第二判断步骤,遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;如果包含,转入第三计数步骤;如果不包含,转入第四计数步骤;其中,所述第三计数步骤为,对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;所述第四计数步骤为,根据所述数据直接记录用户独立访问次数为I ;第二整理步骤,将各维度下每个子维度的用户独立访问数整理成表。优选的,还包括第三分析运算步骤,根据同一子纬度数据条数获得各子纬度的用户访问数。优选的,使用聚合函数进行去重操作。相应的,本申请还公开了一种获得用户独立访问数的装置,包括打标签模块,用于遍历一次用户数据,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;第一分析运算模块,用于以标签、维度和用户id的组合作为关键词,对所述数据进行聚合汇总得到用户粒度数据;第二分析运算模块,用于遍历所得到的用户粒度数据,再以标签和维度的组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。优选的,所述的打标签模块具体包括数据获取模块,用于遍历一次用户日志,获得用户数据;数据复制模块,用于当维度组合个数为η时,将每条数据复制η-1条;数据保留和置空模块,用于对所得到由同一条用户数据复制得到的η个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他η-1个维度的数据置空;标记模块,用于将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。优选的,所述的分析运算模块一具体包括第一判断模块,用于对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;第一计数模块,用于对所述数据去重并只保留一条此类数据,记录独立访问数为I ;第二计数模块,用于根据所述数据直接记录用户独立访问数为I ;第一整理模块,用于对数据进行整理得到用户粒度数据。优选的,所述的分析运算模块二具体包括
第二判断模块,用于遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;第三计数模块,用于对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;第四计数模块,用于根据所述数据直接记录用户独立访问次数为I ;第二整理模块,用于将各维度下每个子维度的用户独立访问数整理成表。与现有技术相比,本申请具有以下优点本申请通过在遍历用户日志时,对每个维度的数据打上所属维度的全局标签,然后以标签、维度组合和用户id作为第一次聚合汇总过程的关键词,再以标签和维度组合作为第二次聚合汇总过程的关键词,最终只要在HIVE中对原表进行一次遍历就能最终得到任意维度下的各种常见的UV (即用户独立访问数),这大幅节省了计算资源和计算时间。


图1是本申请一种获取用户独立访问数的方法的流程示意图;图2是本申请一种获取用户独立访问数的方法优选的打标签步骤流程示意图;图3是本申请一种获取用户独立访问数的方法优选的第一分析步骤流程示意图;图4是本申请一种获取用户独立访问数的方法优选的第二分析步骤流程示意图;图5是本申请一种获取用户独立访问数的装置的结构示意图。图6是本申请一种获取用户独立访问数的装置优选的打标签模块结构示意图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。参照图1,示出了本申请一种获取用户独立访问数的方法的流程示意图,其步骤包括打标签步骤100,遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;第一分析运算步骤110,以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;第二分析运算步骤120,遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。进一步地,还可包括第三分析运算步骤,根据同一子纬度数据条数获得各子纬度的用户访问数。所述打标签步骤100中,所述的维度的建立是根据业务特性,用来标识用户每一次搜索行为的属性或者特性。例如,用户在搜索框中使用‘连衣裙’这个搜索词(query)在女装这个类目使用按照价格降序排列的排序方式完成了一次搜索,那么转化成结构化的数据就是这样的query 类目排序方式UV PV
连衣裙按照价格降序 II其中,query、类目和排序方式就是用来衡量或者标识这次搜索行为的三个维度,其中,UV为用户独立访问数,PV为用户访问数;然后以用户id为基准对这三个维度的每条数据打上所属维度的全局标签,其中,全局标签始终表明此数据所属维度。参照图2,所述的打标签步骤100具体可包括数据获取步骤S101,遍历一次用户日志,获得用户数据。用户数据包括各种维度下的数据和每条数据对应的用户id。由于用户的访问数据量庞大,在实际中,可按需求只提取某些维度的相关用户数据。
·
数据复制步骤S102,当维度组合个数为η时,将每条数据复制η_1条。当需要计算的维度的个数为η时,将包括了用户id,对应维度数据的每条用户数据复制η-1条得到对应于同一条用户数据的η条数据。数据保留置空步骤S103,对所得到由同一条用户数据复制得到的η个相同的数据,分别不重复地保留一个维度的数据和对应的用户id,并将其他η-1个维度的数据置空;对由同一条用户数据复制得到的η条相同的数据,以用户id为基准,即每条数据都保留相应的用户id,并对此η条数据中的每条数据只保留η个维度中的一个维度的数据,同时将其他维度的数据置空,由于每个维度不重复保留,即只保留一次,这样就得到了对应同一条用户数据的保留了用户id和只保留一个维度数据的η条数据(其中,每条数据的保留的维度互不相同)。标记模块步骤S104,将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。在实际中,标签是根据具体需要计算的维度组合来确定的,每个维度都会有一个专属的全局标签。对数据保留和置空步骤S103得到的每条只保留了某个维度数据的数据打上此维度所属的全局标签。例如,假设有类似表一的原始数据
用户类型搜索类型类目id~用户id~
2search 50015天青
2list50015天青
4list50015天青 01表一此表表示用户数据,表中每个用户id对应三个维度,即用户类型、搜索类型和类目id,每个维度下包括三个数据。在这个例子中,我们需要分别计算用户类型,搜索类型和搜索类目这三个维度下的子维度的UV,在第一次遍历(map)阶段,可将把同一条数据翻成三条,对于每条数据,只提取出自己关心的特定维度,其它的维度置空,并对指定维度的数据打上标签。例如,在表一的例子中,需要计算用户类型的UV,在数据中只提取用户类型的值,对搜索类型和类目ID这两个维度置空,并且为这三条数据手动打上“用户类型”的标签。进一步得到表二的数据
权利要求
1.一种获取用户独立访问数的方法,其特征在于,包括打标签步骤,遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;第一分析运算步骤,以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;第二分析运算步骤,遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。
2.如权利要求1所述的获取用户独立访问数的方法,其特征在于所述的打标签步骤具体包括数据获取步骤,遍历一次用户日志,获得用户数据;数据复制步骤,当维度组合个数为η时,将每条数据复制η-1条;数据保留置空步骤,对所得到由同一条用户数据复制得到的η个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他η-1个维度的数据置空;标记模块步骤,将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
3.如权利要求1所述的获取用户独立访问数的方法,其特征在于所述的第一分析运算步骤具体包括第一判断步骤,对打上同一全局标签的每条保留一个维度数据和相应用户id的数据, 判断此全局标签下是否含有相同子维度和用户id的数据;如果包含转入第一计数步骤;如果不包含,转入第二计数步骤;其中,所述第一计数步骤为,对所述数据去重并只保留一条此类数据,记录独立访问数为I ;所述第二计数步骤为,根据所述数据直接记录用户独立访问数为I ;第一整理步骤,对数据进行整理得到用户粒度数据。
4.如权利要求1所述的获取用户独立访问数的方法,其特征在于所述的第二分析运算步骤具体包括第二判断步骤,遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;如果包含,转入第三计数步骤;如果不包含,转入第四计数步骤;其中,所述第三计数步骤为,对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;所述第四计数步骤为,根据所述数据直接记录用户独立访问次数为I ;第二整理步骤,将各维度下每个子维度的用户独立访问数整理成表。
5.如权利要求1所述的获取用户独立访问数的方法,其特征在于还包括第三分析运算步骤,根据同一子纬度数据条数获得各子纬度的用户访问数。
6.如权利要求3或4所述的获取用户独立访问数的方法,其特征在于使用聚合函数进行去重操作。
7.一种获得用户独立访问数的装置,其特征在于,包括打标签模块,用于遍历一次用户数据,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;第一分析运算模块,用于以标签、维度和用户id的组合作为关键词,对所述数据进行聚合汇总得到用户粒度数据;第二分析运算模块,用于遍历所得到的用户粒度数据,再以标签和维度的组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。
8.如权利要求7所述的获得用户独立访问数的装置,其特征在于所述的打标签模块具体包括数据获取模块,用于遍历一次用户日志,获得用户数据;数据复制模块,用于当维度组合个数为η时,将每条数据复制η-1条;数据保留和置空模块,用于对所得到由同一条用户数据复制得到的η个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他η-1个维度的数据置空;标记模块,用于将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
9.如权利要求8所述的获得用户独立访问数的装置,其特征在于所述的分析运算模块一具体包括第一判断模块,用于对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;第一计数模块,用于对所述数据去重并只保留一条此类数据,记录独立访问数为I ; 第二计数模块,用于根据所述数据直接记录用户独立访问数为I ;第一整理模块,用于对数据进行整理得到用户粒度数据。
10.如权利要求9所述的获得用户独立访问数的装置,其特征在于所述的分析运算模块二具体包括第二判断模块,用于遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;第三计数模块,用于对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;第四计数模块,用于根据所述数据直接记录用户独立访问次数为I ;第二整理模块,用于将各维度下每个子维度的用户独立访问数整理成表。
全文摘要
本申请提供了一种获取用户独立访问数的方法与装置,涉及数据库领域。所述的方法包括遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。通过本申请,只需要在HIVE中对原表进行一次遍历就能最终得到任意维度下的各种常见的UV,这大幅节省了计算资源和计算时间。
文档编号G06F17/30GK102999506SQ20111026919
公开日2013年3月27日 申请日期2011年9月13日 优先权日2011年9月13日
发明者刘凡, 吕春建 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1