CN102999506B - 一种获取用户独立访问数的方法与装置 - Google Patents
一种获取用户独立访问数的方法与装置 Download PDFInfo
- Publication number
- CN102999506B CN102999506B CN201110269194.1A CN201110269194A CN102999506B CN 102999506 B CN102999506 B CN 102999506B CN 201110269194 A CN201110269194 A CN 201110269194A CN 102999506 B CN102999506 B CN 102999506B
- Authority
- CN
- China
- Prior art keywords
- data
- user
- dimension
- access number
- independent access
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种获取用户独立访问数的方法与装置,涉及数据库领域。所述的方法包括遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。通过本申请,只需要在HIVE中对原表进行一次遍历就能最终得到任意维度下的各种常见的UV,这大幅节省了计算资源和计算时间。
Description
技术领域
本申请涉及数据库领域,特别是涉及一种获取用户独立访问数的方法与装置。
背景技术
在数据仓库的后台ETL(Extraction-Transformation-Loading,数据提取、转换和加载)场景中,常常有这样的业务场景,即针对同一份用户行为产生的用户日志,或者用户行为流水表,进行不同维度下的UV(UniqueVisitor,用户独立访问数)计算。例如,对于搜索访问用户日志,按照搜索类目,搜索关键词,搜索排序算法等维度进行用户UV的计算。这些数据量是很大的,一般都是上亿条记录数,所以需要使用hadoop(一种分布式系统基础架构)或者Hive(Hive是基于hadoop分布式文件处理系统的一种数据查询和编程语言)进行处理。
在衡量互联网流量效果的指标中,UV是比较特殊的衡量次数,如果某个维度的UV越高,说明此维度设置越有效,并且不同维度的UV不能叠加计算。而现有技术中,通常每计算一个维度下的UV都需要全量遍历一次源表,通常每计算一次指定维度下的UV指标就需要做一次全表遍历。如果需要单独算两个维度的UV,就需要全表遍历两次,N个维度就需要N次,并且每计算一个维度就需要进行两次遍历去重过程,N个维度就需要2N次遍历去重过程,在需要计算的维度较多的情况下,全表遍历次数和遍历去重过程,消耗计算资源和计算时间都呈线性增长的趋势,运算和耗时都非常巨大。
发明内容
本申请所要解决的技术问题是提供一种获取用户独立访问数的方法和装置,只需要一次全表遍历和相应两次遍历去重过程就可获得任意维度组合下的UV。
为了解决上述问题,本申请公开了一种获取用户独立访问数的方法,包括:
打标签步骤,遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;
第一分析运算步骤,以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;
第二分析运算步骤,遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。
优选的,所述的打标签步骤具体包括:
数据获取步骤,遍历一次用户日志,获得用户数据;
数据复制步骤,当维度组合个数为n时,将每条数据复制n-1条;
数据保留置空步骤,对所得到由同一条用户数据复制得到的n个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他n-1个维度的数据置空;
标记模块步骤,将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
优选的,所述的第一分析运算步骤具体包括:
第一判断步骤,对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;如果包含转入第一计数步骤;如果不包含,转入第二计数步骤;其中,所述第一计数步骤为,对所述数据去重并只保留一条此类数据,记录独立访问数为1;所述第二计数步骤为,根据所述数据直接记录用户独立访问数为1;
第一整理步骤,对数据进行整理得到用户粒度数据。
优选的,所述的第二分析运算步骤具体包括:
第二判断步骤,遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;如果包含,转入第三计数步骤;如果不包含,转入第四计数步骤;其中,所述第三计数步骤为,对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;所述第四计数步骤为,根据所述数据直接记录用户独立访问次数为1;
第二整理步骤,将各维度下每个子维度的用户独立访问数整理成表。
优选的,还包括第三分析运算步骤,根据同一子纬度数据条数获得各子纬度的用户访问数。
优选的,使用聚合函数进行去重操作。
相应的,本申请还公开了一种获得用户独立访问数的装置,包括:
打标签模块,用于遍历一次用户数据,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;
第一分析运算模块,用于以标签、维度和用户id的组合作为关键词,对所述数据进行聚合汇总得到用户粒度数据;
第二分析运算模块,用于遍历所得到的用户粒度数据,再以标签和维度的组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。
优选的,所述的打标签模块具体包括:
数据获取模块,用于遍历一次用户日志,获得用户数据;
数据复制模块,用于当维度组合个数为n时,将每条数据复制n-1条;
数据保留和置空模块,用于对所得到由同一条用户数据复制得到的n个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他n-1个维度的数据置空;
标记模块,用于将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
优选的,所述的分析运算模块一具体包括:
第一判断模块,用于对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;
第一计数模块,用于对所述数据去重并只保留一条此类数据,记录独立访问数为1;
第二计数模块,用于根据所述数据直接记录用户独立访问数为1;
第一整理模块,用于对数据进行整理得到用户粒度数据。
优选的,所述的分析运算模块二具体包括:
第二判断模块,用于遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;
第三计数模块,用于对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;
第四计数模块,用于根据所述数据直接记录用户独立访问次数为1;
第二整理模块,用于将各维度下每个子维度的用户独立访问数整理成表。
与现有技术相比,本申请具有以下优点:
本申请通过在遍历用户日志时,对每个维度的数据打上所属维度的全局标签,然后以标签、维度组合和用户id作为第一次聚合汇总过程的关键词,再以标签和维度组合作为第二次聚合汇总过程的关键词,最终只要在HIVE中对原表进行一次遍历就能最终得到任意维度下的各种常见的UV(即用户独立访问数),这大幅节省了计算资源和计算时间。
附图说明
图1是本申请一种获取用户独立访问数的方法的流程示意图;
图2是本申请一种获取用户独立访问数的方法优选的打标签步骤流程示意图;
图3是本申请一种获取用户独立访问数的方法优选的第一分析步骤流程示意图;
图4是本申请一种获取用户独立访问数的方法优选的第二分析步骤流程示意图;
图5是本申请一种获取用户独立访问数的装置的结构示意图。
图6是本申请一种获取用户独立访问数的装置优选的打标签模块结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请一种获取用户独立访问数的方法的流程示意图,其步骤包括:
打标签步骤100,遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;
第一分析运算步骤110,以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;
第二分析运算步骤120,遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。
进一步地,还可包括第三分析运算步骤,根据同一子纬度数据条数获得各子纬度的用户访问数。
所述打标签步骤100中,所述的维度的建立是根据业务特性,用来标识用户每一次搜索行为的属性或者特性。例如,用户在搜索框中使用‘连衣裙’这个搜索词(query)在女装这个类目使用按照价格降序排列的排序方式完成了一次搜索,那么转化成结构化的数据就是这样的:
query | 类目 | 排序方式 | UV | PV |
连衣裙 | 女装 | 按照价格降序 | 1 | 1 |
其中,query、类目和排序方式就是用来衡量或者标识这次搜索行为的三个维度,其中,UV为用户独立访问数,PV为用户访问数;然后以用户id为基准对这三个维度的每条数据打上所属维度的全局标签,其中,全局标签始终表明此数据所属维度。
参照图2,所述的打标签步骤100具体可包括:
数据获取步骤S101,遍历一次用户日志,获得用户数据。
用户数据包括各种维度下的数据和每条数据对应的用户id。由于用户的访问数据量庞大,在实际中,可按需求只提取某些维度的相关用户数据。
数据复制步骤S102,当维度组合个数为n时,将每条数据复制n-1条。
当需要计算的维度的个数为n时,将包括了用户id,对应维度数据的每条用户数据复制n-1条得到对应于同一条用户数据的n条数据。
数据保留置空步骤S103,对所得到由同一条用户数据复制得到的n个相同的数据,分别不重复地保留一个维度的数据和对应的用户id,并将其他n-1个维度的数据置空;
对由同一条用户数据复制得到的n条相同的数据,以用户id为基准,即每条数据都保留相应的用户id,并对此n条数据中的每条数据只保留n个维度中的一个维度的数据,同时将其他维度的数据置空,由于每个维度不重复保留,即只保留一次,这样就得到了对应同一条用户数据的保留了用户id和只保留一个维度数据的n条数据(其中,每条数据的保留的维度互不相同)。
标记模块步骤S104,将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
在实际中,标签是根据具体需要计算的维度组合来确定的,每个维度都会有一个专属的全局标签。对数据保留和置空步骤S103得到的每条只保留了某个维度数据的数据打上此维度所属的全局标签。
例如,假设有类似表一的原始数据:
用户类型 | 搜索类型 | 类目id | 用户id |
2 | search | 50015 | 天青 |
2 | list | 50015 | 天青 |
4 | list | 50015 | 天青01 |
表一
此表表示用户数据,表中每个用户id对应三个维度,即用户类型、搜索类型和类目id,每个维度下包括三个数据。在这个例子中,我们需要分别计算用户类型,搜索类型和搜索类目这三个维度下的子维度的UV,在第一次遍历(map)阶段,可将把同一条数据翻成三条,对于每条数据,只提取出自己关心的特定维度,其它的维度置空,并对指定维度的数据打上标签。例如,在表一的例子中,需要计算用户类型的UV,在数据中只提取用户类型的值,对搜索类型和类目ID这两个维度置空,并且为这三条数据手动打上“用户类型”的标签。
进一步得到表二的数据:
全局标签 | 用户类型 | 搜索类型 | 类目id | 用户id |
用户类型 | 2 | 天青 | ||
用户类型 | 2 | 天青 | ||
用户类型 | 4 | 天青01 | ||
搜索类型 | search | 天青 | ||
搜索类型 | list | 天青 | ||
搜索类型 | list | 天青01 | ||
类目 | 50015 | 天青 | ||
类目 | 50015 | 天青 | ||
类目 | 50015 | 天青01 |
表二
然后进入第一分析运算步骤110。
第一分析运算步骤110,以全局标签、维度和用户id的组合作为关键词,对所述数据进行聚合汇总得到用户粒度数据。
在打标签步骤100中,得到了包括全局标签、维度组合和用户id的多条数据,其中,维度组合里只有某个维度保留有数据。此时以“标签+维度组合+用户id”作为key(关键词),进行聚合汇总得到用户粒度数据。
参照图3,所述的第一分析运算步骤110具体包括:
第一判断步骤S111,对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;如果包含,转入第一计数步骤S112;如果不包含,转入第二计数步骤S113。
在得到的打上全局标签并只保留一个维度数据和用户id的所有数据,因为全局标签的标记,将同属一个维度的所有条数据进行对比判断,判断是否含有维度数据和用户id均相同的数据。
第一计数步骤S112,对所述数据去重并只保留一条此类数据,并记录独立访问数为1;
第二计数步骤S113,根据所述数据直接记录用户独立访问数为1;
当在全局标签下,某几条数据的维度数据和用户id相同,则去重并只保留一条此种数据,记录此类数据用户独立访问数UV为1;当某条数据仅此一条,则记录用户独立访问数UV为1;
另外在此过程中,还可记录用户访问数PV,即将相同数据的条数记录为用户访问数PV,将仅此一条数据的用户访问数PV记录为1。
在本步骤中使用第一次的聚合函数sum()groupby进行去重操作,替换count(distinct)来解决直接去重带来的数据倾斜的问题。例如直接使用count(distinct)的语法计算搜索类型UV,语句如下:
Selectcount(distinctuser_id)from表名groupbysearch_type;
在这个语法里会以search_type为key作reduce计算。在key值稀疏的情况下(search_type只有两个值-search和query两个类型),会导致大量的数据只集中在两个槽(slots)上计算,很容易造成数据倾斜。
新的语法:
Selectsearch_type,
Sum(1)asuv,
Sum(pv)aspv
from
(Selectsearch_type,
user_id,
sum(1)aspv
form表名groupbysearch_type,user_id)a
括号内的子查询中,以search_type和user_id为key分发数据,对user_id做了去重,并且先计算出每个user_id的PV,然后在次基础之上第二次使用sum()groupby的语法计算以search_type维度下的UV以及PV指标。因为hadoop的特性,使用sum()这样的聚合函数的时候会在map端完成合并(combine)之后才分发数据进行reduce计算,因此不会在进行reduce计算时产生数据倾斜。
第一整理步骤S114,对数据进行整理得到用户粒度数据。
比如,对于打标签步骤100得到的类似表二的数据:
以“用户类型”标签标记的用户类型维度对应的数据有3个,其中,含有用户类型2和用户id天青的数据有两条相同,则进行去重,保留一条含有用户类型2和用户id天青的数据,并记录此条的UV为1。进一步地,还可记录此条的PV为2;另外一条不存在与之相同的数据,则记录此条的UV为1,还可记录此条的PV为1;
以“搜索类型”标签标记的搜索类型维度对应的数据有3条,但以用户id和搜索类型作为对比判断,3条之间均不相同,记录每条的UV为1,还可记录PV为1;
以“类目”标签标记的类目id维度对应的数据有3条,其中含有类目id50015和用户id天青的数据有两条相同,则进行去重,保留一条含有类目id50015和用户id天青的数据,并记录此条的UV为1,还可记录此条的PV为2;另外一条不存在与之相同的数据,则记录此条的UV为1,还可记录此条的PV为1。进一步得到表三的用户粒度数据。
全局标签 | 用户类型 | 搜索类型 | 类目id | 用户id | PV | UV |
用户类型 | 2 | 天青 | 2 | 1 |
用户类型 | 4 | 天青01 | 1 | 1 | ||
搜索类型 | search | 天青 | 1 | 1 | ||
搜索类型 | list | 天青 | 1 | 1 | ||
搜索类型 | list | 天青01 | 1 | 1 | ||
类目 | 50015 | 天青 | 2 | 1 | ||
类目 | 50015 | 天青01 | 1 | 1 |
表三
然后进入第二分析运算步骤120。
第二分析运算步骤120,遍历所得到的用户粒度数据,再以标签和维度的组合作为关键词,对用户粒度数据进行聚合,得到各维度下每个子维度的用户独立访问数。
对第一分析运算步骤110中得到的已经进行一次聚合汇总的具有维度全局标签的包含某个维度数据和相应用户id的所有数据,再以“标签+维度”组合为key进行第二次聚合,最终得到各维度下每个子维度的UV。
参照图4,所述的第二分析运算步骤120具体包括:
第二判断步骤S121,遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;如果包含转入第二计数步骤S122;如果不包含,转入第三计数步骤S123。
对于前述步骤得到的由全局标签标记的包含某个维度数据和相应用户id的所有条数据,将其中的用户id项去除不予考虑,同时对标记有同一维度的全局标签的所有条数据进行判断,判断是否含有相同子维度的数据。所述的子维度即每个维度下的更细分的项。
第三计数步骤S122,对所述数据去重,并记录重复次数为用户独立访问数。
第四计数步骤S123,根据所述数据直接记录用户独立访问次数为1。
当同一维度的全局标签下的某几条数据子维度数据相同,则进行去重,保留一条此类数据,并将此类数据的相同个数记录为最终的UV,还可以将此类相同数据每个对应的PV相加,记录为最终的PV;当某条数据仅此一条时,则记录UV为1,还可以将前述步骤得到PV记录为其最终PV。
在本步骤中,使用第二次的聚合函数sum()groupby进行去重操作,替换count(distinct)来解决直接去重带来的数据倾斜的问题。具体语句参照第一次使用的聚合函数的语句。
第二整理步骤S124,将各维度下每个子维度的用户独立访问数整理成表。
比如,对于前述步骤得到表三的用户粒度数据:
在以“用户类型”标签标记的用户类型维度下包括2条数据,将用户id项去除后,对比用户类型的子维度2和4不同,那么记录用户类型维度下子维度2的UV为1、PV为2,子维度4的UV为1、PV为1;
在以“搜索类型”标签标记的搜索类型维度下共包括3条数据,将用户id项去除后,对比搜索类型维度的子维度list,存在相同的两条数据,则去重保留一条包括子维度list的数据,并记录此类数据的UV为2、PV为2;搜索类型维度的子维度search只有一条数据,则记录此条数据的UV为1、PV为1;
在以“类目”标签标记的类目id维度下包括2条数据,将用户id去除后,类目id维度下的子维度50015有2条相同数据,则去重保留一条此类数据,并记录其UV为2、PV为3。
并可整理成表四:
全局标签 | 用户类型 | 搜索类型 | 类目id | PV | UV |
用户类型 | 2 | 2 | 1 | ||
用户类型 | 4 | 1 | 1 | ||
搜索类型 | search | 1 | 1 | ||
搜索类型 | list | 2 | 2 | ||
类目 | 50015 | 3 | 2 |
表四
参照图5,示出了本申请一种获取用户独立访问数的装置的结构示意图,包括:
打标签模块210,用于遍历一次用户数据,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;
第一分析运算模块220,用于以标签、维度组合和用户id的组合作为关键词,对所述数据进行聚合汇总得到用户粒度数据;
第二分析运算模块230,用于遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数。
参照图6,示出了本申请一种获取用户独立访问数的装置优选的打标签模块结构示意图。所述的打标签模块具体包括:
数据获取模块211,用于遍历一次用户日志,获得用户数据;
数据复制模块212,用于当维度组合个数为n时,将每条数据复制n-1条;
数据保留置空模块213,用于对所得到得n个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他n-1个维度的数据置空;
标记模块214,用于将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
进一步的,所述的分析运算模块一具体包括:
第一判断模块,用于对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;如果包含,转入第一计数模块;如果不包含,转入第二计数模块。
第一计数模块,用于对所述数据去重并只保留一条此类数据,记录独立访问数为1;
第二计数模块,用于根据所述数据直接记录用户独立访问数为1;
第一整理模块,用于对数据进行整理得到用户粒度数据。
进一步的,所述的分析运算模块二具体包括:
第二判断模块,用于遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;如果包含,转入第三计数模块;如果不包含,转入第四计数模块。
第三计数模块,用于对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;
第四计数模块,用于根据所述数据直接记录用户独立访问次数为1;
第二整理模块,用于将各维度下每个子维度的用户独立访问数整理成表。
通过本申请,能扫描一次底层的大表即可计算出多个维度下的UV指标,避免了对大表的重复扫描,大大的节省了计算资源,减少了运行于计算的时间;同时能产出了一个汇总程度更高的中间层数据(即以最终得到的各维度下子维度的UV数据),屏蔽上游日志或者埋点规则的改变对底层报表数据层的冲击,减少每次前端修改带来的工作量,使我们的系统更加的完善和健壮。
本说明书中的各个实施例均采用递进的方式描述。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种获取用户独立访问数的方法与装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种获取用户独立访问数的方法,其特征在于,包括:
打标签步骤,遍历一次用户日志,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;
第一分析运算步骤,以标签、维度组合和用户id作为关键词,对所述数据进行聚合汇总得到用户粒度数据;
第二分析运算步骤,遍历所得到的用户粒度数据,再以标签和维度组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数;
其中,所述的打标签步骤具体包括:
数据获取步骤,遍历一次用户日志,获得用户数据;
数据复制步骤,当维度组合个数为n时,将每条数据复制n-1条;
数据保留置空步骤,对所得到由同一条用户数据复制得到的n个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他n-1个维度的数据置空;
标记模块步骤,将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
2.如权利要求1所述的获取用户独立访问数的方法,其特征在于:
所述的第一分析运算步骤具体包括:
第一判断步骤,对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;如果包含转入第一计数步骤;如果不包含,转入第二计数步骤;其中,所述第一计数步骤为,对所述数据去重并只保留一条此类数据,记录独立访问数为1;所述第二计数步骤为,根据所述数据直接记录用户独立访问数为1;
第一整理步骤,对数据进行整理得到用户粒度数据。
3.如权利要求1所述的获取用户独立访问数的方法,其特征在于:
所述的第二分析运算步骤具体包括:
第二判断步骤,遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;如果包含,转入第三计数步骤;如果不包含,转入第四计数步骤;其中,所述第三计数步骤为,对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;所述第四计数步骤为,根据所述数据直接记录用户独立访问次数为1;
第二整理步骤,将各维度下每个子维度的用户独立访问数整理成表。
4.如权利要求1所述的获取用户独立访问数的方法,其特征在于:
还包括第三分析运算步骤,根据同一子维度数据条数获得各子维度的用户访问数。
5.如权利要求2或3所述的获取用户独立访问数的方法,其特征在于:
使用聚合函数进行去重操作。
6.一种获得用户独立访问数的装置,其特征在于,包括:
打标签模块,用于遍历一次用户数据,并以用户id为基准,对各维度下的每条数据打上所属维度的全局标签;
第一分析运算模块,用于以标签、维度和用户id的组合作为关键词,对所述数据进行聚合汇总得到用户粒度数据;
第二分析运算模块,用于遍历所得到的用户粒度数据,再以标签和维度的组合作为关键词,对用户粒度数据进行聚合汇总得到各维度下每个子维度的用户独立访问数;
其中,所述的打标签模块具体包括:
数据获取模块,用于遍历一次用户日志,获得用户数据;
数据复制模块,用于当维度组合个数为n时,将每条数据复制n-1条;
数据保留和置空模块,用于对所得到由同一条用户数据复制得到的n个相同的数据分别不重复地保留一个维度的数据和对应的用户id,并将其他n-1个维度的数据置空;
标记模块,用于将所得到的每条只保留某维度数据和对应用户id的数据打上所属维度的全局标签。
7.如权利要求6所述的获得用户独立访问数的装置,其特征在于:
所述的分析运算模块一具体包括:
第一判断模块,用于对打上同一全局标签的每条保留一个维度数据和相应用户id的数据,判断此全局标签下是否含有相同子维度和用户id的数据;
第一计数模块,用于如果判断当此全局标签含有相同子维度和用户id的数据,对所述数据去重并只保留一条此类数据,记录独立访问数为1;
第二计数模块,用于如果判断当此全局标签不含有相同子维度和用户id的数据,根据所述数据直接记录用户独立访问数为1;
第一整理模块,用于对数据进行整理得到用户粒度数据。
8.如权利要求7所述的获得用户独立访问数的装置,其特征在于:
所述的分析运算模块二具体包括:
第二判断模块,用于遍历用户粒度数据,去除用户id,对打上同一全局标签的每条数据,判断其中是否含有相同子维度的数据;
第三计数模块,用于如果对打上同一全局标签的每条数据中,含有相同子维度的数据,则对所述数据去重并只保留一条此类数据,并记录重复次数为用户独立访问数;
第四计数模块,用于如果对打上同一全局标签的每条数据中,不含有相同子维度的数据,则根据所述数据直接记录用户独立访问次数为1;
第二整理模块,用于将各维度下每个子维度的用户独立访问数整理成表。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110269194.1A CN102999506B (zh) | 2011-09-13 | 2011-09-13 | 一种获取用户独立访问数的方法与装置 |
HK13105862.9A HK1179005A1 (zh) | 2011-09-13 | 2013-05-17 | 種獲取用戶獨立訪問數的方法與裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110269194.1A CN102999506B (zh) | 2011-09-13 | 2011-09-13 | 一种获取用户独立访问数的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999506A CN102999506A (zh) | 2013-03-27 |
CN102999506B true CN102999506B (zh) | 2016-03-30 |
Family
ID=47928082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110269194.1A Active CN102999506B (zh) | 2011-09-13 | 2011-09-13 | 一种获取用户独立访问数的方法与装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102999506B (zh) |
HK (1) | HK1179005A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605651A (zh) * | 2013-08-28 | 2014-02-26 | 杭州顺网科技股份有限公司 | 一种基于olap多维分析的数据处理展现方法 |
CN104572043B (zh) * | 2013-10-16 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 一种对客户端应用的控件进行实时埋点的方法及装置 |
CN103746851A (zh) * | 2014-01-17 | 2014-04-23 | 中国联合网络通信集团有限公司 | 一种实现独立用户数统计的方法及装置 |
CN104615765A (zh) * | 2015-02-13 | 2015-05-13 | 中国联合网络通信集团有限公司 | 一种移动用户上网记录的数据处理方法及装置 |
CN105354272B (zh) * | 2015-10-28 | 2018-08-28 | 中通服公众信息产业股份有限公司 | 一种基于维度组合的指标计算方法和系统 |
CN105893421A (zh) * | 2015-12-02 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | Uv计算方法、装置 |
CN106933914A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 多数据表的数据处理方法及装置 |
CN106940698A (zh) * | 2016-01-05 | 2017-07-11 | 阿里巴巴集团控股有限公司 | 一种维度数据处理方法及装置 |
CN106899426B (zh) * | 2016-06-30 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 用户访问数量统计方法及其系统 |
CN107948738B (zh) * | 2016-10-13 | 2020-10-20 | 北京国双科技有限公司 | 一种网络电视去重用户数的计算方法及装置 |
CN108932241B (zh) * | 2017-05-24 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 日志数据统计方法、装置及节点 |
CN110019355A (zh) * | 2017-09-27 | 2019-07-16 | 北京国双科技有限公司 | 独立数据计算方法及装置 |
CN110516184B (zh) * | 2019-05-27 | 2023-03-24 | 广州起妙科技有限公司 | 一种统计uv数量的模拟运算方法 |
CN110580322B (zh) * | 2019-09-18 | 2022-03-15 | 北京百度网讯科技有限公司 | 独立访客信息处理的方法、装置、电子设备及存储介质 |
CN113836431A (zh) * | 2021-10-19 | 2021-12-24 | 中国平安人寿保险股份有限公司 | 基于用户时长的用户推荐方法、装置、设备及介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100518076C (zh) * | 2004-01-02 | 2009-07-22 | 联想(北京)有限公司 | 日志统计方法和系统 |
CN101231649B (zh) * | 2007-12-27 | 2010-12-15 | 腾讯科技(深圳)有限公司 | 获取网络资源访问的方法 |
US7890511B2 (en) * | 2008-02-05 | 2011-02-15 | Blue Coat Systems, Inc. | System and method for conducting network analytics |
US8549019B2 (en) * | 2009-05-26 | 2013-10-01 | Google Inc. | Dynamically generating aggregate tables |
CN101799830A (zh) * | 2010-03-25 | 2010-08-11 | 北京国双科技有限公司 | 可实现多维度自由剖析的流量数据处理方法 |
CN101996250B (zh) * | 2010-11-15 | 2012-07-25 | 中国科学院计算技术研究所 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
-
2011
- 2011-09-13 CN CN201110269194.1A patent/CN102999506B/zh active Active
-
2013
- 2013-05-17 HK HK13105862.9A patent/HK1179005A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN102999506A (zh) | 2013-03-27 |
HK1179005A1 (zh) | 2013-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999506B (zh) | 一种获取用户独立访问数的方法与装置 | |
CN106997386B (zh) | 一种olap预计算模型、自动建模方法及自动建模系统 | |
CN103748579B (zh) | 在映射化简框架中处理数据 | |
CN101446962B (zh) | 一种数据转换方法、装置及数据处理系统 | |
CN102024062B (zh) | 一种实现数据动态缓存处理的装置及方法 | |
CN106339274B (zh) | 一种数据快照获取的方法及系统 | |
CN107451225B (zh) | 用于半结构化数据的可缩放分析平台 | |
CN104866471B (zh) | 一种基于局部敏感哈希策略的实例匹配方法 | |
CN104700190A (zh) | 一种用于项目与专业人员匹配的方法和装置 | |
CN101174273A (zh) | 基于元数据分析的新闻事件检测方法 | |
CN104679646B (zh) | 一种用于检测sql代码缺陷的方法和装置 | |
CN104899314A (zh) | 一种数据仓库的血统分析方法和装置 | |
CN105159971B (zh) | 一种云平台数据检索方法 | |
CN105893585A (zh) | 一种结合标签数据的二部图模型学术论文推荐方法 | |
JP2018506775A (ja) | トランザクションアクセスパターンに基づいた結合関係の識別 | |
Wang et al. | Efficiently mining high utility co-location patterns from spatial data sets with instance-specific utilities | |
CN104778236A (zh) | 一种基于元数据的etl实现方法及系统 | |
CN105183809A (zh) | 一种云平台数据查询方法 | |
CN105893421A (zh) | Uv计算方法、装置 | |
CN106980639B (zh) | 短文本数据聚合系统及方法 | |
Li et al. | Sampling big trajectory data | |
CN102521713B (zh) | 数据处理装置和数据处理方法 | |
CN104462095B (zh) | 一种查询语句公共部分的提取方法及装置 | |
CN101753324A (zh) | 一种快速费率配置和查找方法 | |
Cagliero et al. | Twitter data analysis by means of strong flipping generalized itemsets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1179005 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1179005 Country of ref document: HK |