本申请提供一种去重计数方法及设备,本申请根据各个数据的上一次出现的时间段的记录和当前时间段内的各个数据可以快速获取该时间段内出现的数据个数及该时间段分别相对于前时间段出现的数据个数的增量,便于后续基于数据个数和/或数据个数的增量快速进行各种数据统计。另外,本申请利用数据个数和数据个数的增量,能够对若干相邻的时间段内的组合的数据进行精确去重计数。此外,本申请以流式的方式快速和精确地获取和记录某个时间段内出现的数据个数及该时间段分别相对于前时间段出现的数据个数的增量,只需记录和更新各个数据的上一次出现的时间段,无需记录每个时间段中数据出现的历史明细,减少数据存储量。
【技术实现步骤摘要】
本申请涉及通信及计算机领域,尤其涉及一种去重计数方法及设备。
技术介绍
互联网的应用/网站,经常需要统计一些数据,如计数、去重计数、求和、求均值等。PV(PageView,访问量),即页面浏览量或点击量,用户每次刷新即被计算一次。UV(UniqueVisitor,独立访客),访问某一网站的一台电脑客户端为一个访客,00:00-24:00内相同的客户端只会被计算一次。网站PV和UV的统计,就属于计数/去重计数。去重计数的应用场景包括:电商网站的去重买家数,双十一当天成交卖家数等等。以统计某个网站各个连续时间段内的独立访客去重计数为例(以下简称例一),即去除00:00-24:00时间限制的UV计算,后续本申请的描述均基于本例一进行说明,假设:DAY1(第一天)的00:00~24:00,访客为a b a c;DAY2(第二天)的00:00~24:00,访客为a c d e f;DAY3(第三天)的00:00~24:00,访客为a a f g b;需要分别对DAY1,DAY2,DAY3,DAY1~DAY2,DAY2~DAY3,DAY1~DAY3各个时间段内的数据分别进行精确去重计数,各个时间段内的数据的精确去重计数结果应该如表1所示:DAY13(即a b c)DAY25(即a c d e f)DAY34(即a f g b)DAY1~DAY26(即a b c d e f)DAY2~DAY37(即a b c d e f g)DAY1~DAY37(即a b c d e f g)表1表1中,DAY1的去重计数后的访客为3个,分别为a b c;DAY2的去重计数后的访客为5个,分别为a c d e f;DAY3的去重计数后的访客为4个,分别为a f g b;DAY1~DAY2的去重计数后的访客为6个,分别为a b c d e f;DAY2~DAY3的去重计数后的访客为7个,分别为a b c d e f g;DAY1~DAY3的去重计数后的访客为7个,分别为a b c d e f g。例一中,如果采用传统的非流式去重计数的方案,即将所有的明细数据全部存储起来,需要去重计数时,再基于存储的明细数据进行去重计数。例一中,需要记录的数据量为:14(4+5+5),DAY1:a b a cDAY2:a c d e fDAY3:a a f g b。另外,如果某一天相同用户大量访问,那记录的数据量,将是无上限,比如:DAY1访问用户为a a a a a a a…。因此,该方案在数据量大的场景,存储明细数据的量将会非常大,每次获得去重计数时,需要重新统计(读时统计),数据量大时,计算相当慢,特别是对多个相邻时间段进行统计时,基于明细数据存储进行去重计数的计算量将会大大增加,统计时间也将随时增加,最终导致无法实时进行计算。针对传统的非流式去重计数的方案存在的问题,又产生了基于流式数据的统计方案,包括:每个时间段内的精确流式去重计数和每个时间段内的近似流式去重计数。但是由于基于流式数据的统计方案不存储明细数据,所以往往存在诸多限制,比如:只能对每个时间段分别进行去重计数,无法得到若干相邻时间段组合的去重计数,或者用近似值代替精确值来进行去重计数,
存在统计结果不精确的问题。例一如果采用上述每个时间段内的精确流式去重计数的方案,可以用缓存+一维数组得到在DAY1,DAY2,DAY3各个时间段内的精确流式去重计数,例一中使用缓存量只与独立访客量有关,例一数据量为7即a b c d e f g,该方案解决了每次获得统计值时,要重新统计(读时统计)的问题,在用户发生访问量时,就进行编译(写入统计),获得去重值非常快。但该方案无法得到DAY1~DAY2,DAY2~DAY3,DAY1~DAY3的若干相邻时间段组合的去重计数。其中,缓存记录每个访客最后一次访问时间,例一中的缓存最终如表2所示:aDAY3bDAY3cDAY1dDAY2eDAY2fDAY3gDAY3表2一维数组记录每个时间段内的去重计数结果如表3所示:3(即a b c)5(即a c d e f)4(即a f g b)表3表3的一维数组中实际只记录了3、5、4,代表DAY1=3,DAY2=5,DAY3=4,表3中每格的括号里的内容不会记录于一维数组中,在此标出只是用于说明每天的访客是哪些。例一如果采用每个时间段内的近似流式去重计数的方案,如Linear、HyperLogLog、HyperLogLog++等,在精确度要求不高的场景下,可以将缓存进行精简,用布隆过滤器(BloomFilter)等来近似判断历史缓存是否命中,用近似缓存+一维数组,来进行近似流式去重计数,得到的一维数组格式不变如
表3,同样,本方案也无法得到DAY1~DAY2,DAY2~DAY3,DAY1~DAY3的若干相邻时间段组合的去重计数。
技术实现思路
本申请的目的是提供一种去重计数方法及设备,能够快速获取某时间段内出现的数据个数及该时间段分别相对于前时间段出现的数据个数的增量。有鉴于此,本申请提供去重计数方法,包括:依次根据各个数据的上一次出现的时间段M的记录和当前第K个时间段内的各个数据确定第K个时间段内出现的数据个数,及第K个时间段分别相对于前1个至前K-1个时间段出现的数据个数的增量,其中,N,K,M为正整数,N≥2,K={1,2,...,N本文档来自技高网...
【技术保护点】
一种去重计数方法,其中,包括:依次根据各个数据的上一次出现的时间段M的记录和当前第K个时间段内的各个数据确定第K个时间段内出现的数据个数,及第K个时间段分别相对于前1个至前K‑1个时间段出现的数据个数的增量,其中,N,K,M为正整数,N≥2,K={1,2,...,N},1≤M≤N,M≤K。
【技术特征摘要】
1.一种去重计数方法,其中,包括:依次根据各个数据的上一次出现的时间段M的记录和当前第K个时间段内的各个数据确定第K个时间段内出现的数...
【专利技术属性】
技术研发人员:胡四海,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。