发明内容
本申请的主要目的在于提供一种用户访问数量统计方法及其系统,以解决现有技术的统计用户UV导致的数据倾斜的问题。
为了解决上述问题,根据本申请实施例提供一种用户访问数量统计方法,其包括:获取预设时间段内用户访问业务数据的访问信息;对所述访问信息进行分组及去重处理得到统计数据;根据所述统计数据统计业务数据的独立访客数据。
其中,所述访问信息包括:用户标识信息、业务数据标识信息、业务数据对应的页面标识信息。
其中,所述对所述访问信息进行分组及去重处理的步骤,包括:根据所述业务数据标识信息对所述访问信息进行第一次分组;根据所述页面标识信息对第一次分组后得到的每个组进行第二次分组;对第二次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到所述统计数据。
其中,所述访问信息还包括:页面对应的控件的标识信息;所述对所述访问信息进行分组及去重处理的步骤,包括:根据所述业务数据标识信息对所述访问信息进行第一次分组;根据所述页面标识信息对第一次分组后得到的每个组进行第二次分组;根据所述控件标识信息对第二次分组后得到的每个组进行第三次分组;对第三次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到所述统计数据。
其中,所述方法还包括:通过分布式计算统计业务数据的独立访客数据。
其中,所述方法还包括:通过用户访问日志表获取所述访问信息。
根据本申请实施例还提供一种用户访问数量统计系统,其包括:获取模块,用于获取预设时间段内用户访问业务数据的访问信息;分组及去重模块,用于对所述访问信息进行分组及去重处理得到统计数据;统计模块,用于根据所述统计数据统计业务数据的独立访客数据。
其中,所述访问信息包括:用户标识信息、业务数据标识信息、业务数据对应的页面标识信息。
其中,所述分组及去重模块包括:第一分组模块,用于根据所述业务数据标识信息对所述访问信息进行第一次分组;第二分组模块,用于根据所述页面标识信息对第一次分组后得到的每个组进行第二次分组;第一去重模块,用于对第二次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到所述统计数据。
其中,所述访问信息还包括:页面对应的控件的标识信息;所述分组及去重模块包括:第一分组模块,用于根据所述业务数据标识信息对所述访问信息进行第一次分组;第二分组模块,用于根据所述页面标识信息对第一次分组后得到的每个组进行第二次分组;第三分组模块,用于根据所述控件标识信息对第二次分组后得到的每个组进行第三次分组;第二去重模块,用于对第三次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到所述统计数据。
其中,所述统计模块通过分布式计算统计业务数据的独立访客数据。
其中,所述获取模块通过用户访问日志表获取所述访问信息。
根据本申请的技术方案,通过将访问数据分级分组为多个统计任务,虽然增加了任务数量但是每个任务的运行时间会程几何形的缩短,有效避免了分布式计算统计访问量指标时出现的数据倾斜。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是根据本申请实施例的用户访问数量统计方法的流程图,如图1所示,该方法包括:
步骤S102,获取预设时间段内用户访问业务数据的访问信息。
具体而言,当用户通过客户端访问网站中的某个(些)业务数据时,服务端根据用户的访问浏览情况会生成用户访问日志表。一般地,每个业务数据对应有多个页面,每个页面对应有多个控件,每个用户会访问点击页面中的多个的控件,而且同一个控件也会被同一个用户多次访问点击。
在本申请实施例中,通过用户访问日志表获取至少以下的用户访问业务数据的访问信息:
业务数据标识信息(product_id),例如对于购物网站来说业务数据可以是用户访问的某个产品;
页面标识信息(view_id),即业务数据对应的页面的标识信息,每个业务数据具有对应的一个或多个页面,每个页面具有唯一标识信息。
控件标识信息(action_id),即页面对应的控件的标识信息,每个页面具有对应的一个或多个控件,每个控件具有唯一标识信息。
用户标识信息(user_id);
访问的时间(create_date)。
步骤S104,对所述访问信息进行分组及去重处理。
在本申请的一个实施例中,首先根据业务数据标识信息(product_id)对访问信息进行第一次分组,即将业务数据标识信息相同的访问信息划分到同一组中;然后,根据页面标识信息(view_id)对第一次分组后得到的每个组进行第二次分组,即将页面标识信息相同的访问信息划分到同一组中;最后,对第二次分组后得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,汇总后得到统计数据。下面结合表1至表7详细描述本实施例的处理细节。
表1
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
1 |
11 |
1111 |
1 |
11 |
1112 |
1 |
11 |
1111 |
1 |
11 |
1112 |
1 |
12 |
1111 |
1 |
12 |
1112 |
1 |
12 |
1111 |
1 |
12 |
1112 |
2 |
11 |
1111 |
2 |
11 |
1112 |
2 |
11 |
1111 |
2 |
11 |
1112 |
2 |
12 |
1111 |
2 |
12 |
1112 |
2 |
12 |
1111 |
2 |
12 |
1112 |
表1中示出了通过用户访问日志表获取的部分访问信息。通过表1可以看出,每个产品(1、2……)分别对应有多个页面(11、12……),不同的用户(1111、1112……)访问这些页面。
在进行分组处理时,首先根据业务数据标识信息(product_id)对表1所示的访问信息进行第一次分组(即将业务数据标识信息相同的访问信息划分到同一组中),得到如表2和表3所示的分组数据。其中,表2所示的分组数据为关于业务数据1的访问信息,表3所示的分组数据为关于业务数据2的访问信息。
表2
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
1 |
11 |
1111 |
1 |
11 |
1112 |
1 |
11 |
1111 |
1 |
11 |
1112 |
1 |
12 |
1111 |
1 |
12 |
1112 |
1 |
12 |
1111 |
1 |
12 |
1112 |
表3
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
2 |
11 |
1111 |
2 |
11 |
1112 |
2 |
11 |
1111 |
2 |
11 |
1112 |
2 |
12 |
1111 |
2 |
12 |
1112 |
2 |
12 |
1111 |
2 |
12 |
1112 |
接着,根据页面标识信息(view_id)对表2所示的分组数据继续进行第二次分组(即将页面标识信息相同的访问信息划分到同一组中),得到如表4和表5所示的分组数据。其中,表4所示的分组数据为关于业务数据1的页面11的访问信息,表5所示的分组数据为关于业务数据1的页面12的访问信息。同理,对表3所示的分组数据也进行同样如表2的分组处理,不再赘述。
表4
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
1 |
11 |
1111 |
1 |
11 |
1112 |
1 |
11 |
1111 |
1 |
11 |
1112 |
表5
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
1 |
12 |
1111 |
1 |
12 |
1112 |
1 |
12 |
1111 |
1 |
12 |
1112 |
最后,对表4所示的分组数据进行去重,即,将页面标识信息和用户标识信息相同的访问信息进行去重处理,汇总后得到如表6所示的统计数据。同理,对表5所示的分组数据也进行同样如表4的去重处理,汇总后得到如表7所示的统计数据。之后就可以根据统计数据统计UV类或PV(Page View,页面浏览量或点击量)类的指标数据。
表6
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
1 |
11 |
1111 |
1 |
11 |
1112 |
表7
业务数据(product_id) |
页面(view_id) |
用户(user_id) |
1 |
12 |
1111 |
1 |
12 |
1112 |
需要说明,在上述分组去重处理中,涉及到的访问信息包括业务数据标识信息、页面标识信息和用户标识信息,并不涉及控件标识信息。
在本申请的另一实施例中,如果通过上述的分组去重后得到的数据还存在数据倾斜,即存在每个业务数据对应的统计数据分布不均匀的情况,则还可以通过以下的方法进行分组去重。首先,根据业务数据标识信息(product_id)对访问信息进行第一次分组,即将业务数据标识信息相同的访问信息划分到同一组中;其次,根据页面标识信息(view_id)对第一次分组后得到的每个组进行第二次分组,即将页面标识信息相同的访问信息划分到同一组中;然后,根据控件标识信息(action_id)对第二次分组后得到的每个组进行第三次分组,即将控件标识信息相同的访问信息划分到同一组中;
最后,对第三次分组后得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,汇总后得到统计数据。下面结合表8至表13详细描述本实施例的处理细节。
表8
表8中示出了通过用户访问日志表获取的部分访问信息。通过表8可以看出,每个产品(1、2……)分别对应有多个页面(11、12……),每个页面(11、12……)分别对应有多个控件(111、112……),不同的用户(1111、1112……)访问页面上的多个控件。
在进行分组处理时,首先根据业务数据标识信息(product_id)对表8所示的访问信息进行第一次分组(即将业务数据标识信息相同的访问信息划分到同一组中),得到如表9和表10所示的分组数据。其中,表9所示的分组数据为关于业务数据1的访问信息,表10所示的分组数据为关于业务数据2的访问信息。
表9
表10
接着,根据页面标识信息(view_id)对表9所示的分组数据继续进行第二次分组(即将页面标识信息相同的访问信息划分到同一组中),得到如表11和表12所示的分组数据。其中,表11所示的分组数据为关于业务数据1的页面11的访问信息,表12所示的分组数据为关于业务数据1的页面12的访问信息。同理,对表10所示的分组数据也同样进行如表9的分组处理,不再赘述。
表11
表12
然后,根据控件标识信息(action_id)对表11所示的分组数据继续进行第三次分组(即将控件标识信息相同的访问信息划分到同一组中),得到如表13和表14所示的分组数据。其中,表13所示的分组数据为关于业务数据1的页面11的控件111的访问信息,表14所示的分组数据为关于业务数据1的页面11的控件112的访问信息。
表13
表14
最后,对表13和表14所示的分组数据进行去重,即,将页面标识信息和用户标识信息相同的访问信息进行去重处理,汇总后得到统计数据。需要说明的是,在表13和表14所示的数据中并未出现相同的访问信息,但是在实际应用中却可能会出现大量相同的信息,这并不限制申请的保护范围。此外,在表1至表14中所示数据仅为示例性说明,也不限制本申请的保护范围。
需要说明,在上述分组去重处理中(即表8至表14所示的实施例),涉及到的访问信息包括业务数据标识信息、页面标识信息、控件标识信息和用户标识信息。
根据上述实施例,通过将一个较大的访问数据分组为多组较小的统计数据,数据分级分组越多,数据分布就越均匀,数据倾斜就越小。
步骤S106,根据分组去重的结果统计业务数据的独立访客数据(UV)。
根据上述实施例,通过增加计算的任务数量(分组数量),但是每个任务的运行时间会程几何形的缩短,有效避免了数据倾斜。
图2是根据本申请另一实施例的用户访问数量统计方法的流程图,如图2所示,包括:
步骤S202,获取一段时间内(例如1天、1周或1月)用户访问业务数据的访问信息,所述访问信息包括:业务数据标识信息、页面标识信息、控件标识信息、用户标识信息、访问时间。
步骤S204,根据业务数据标识信息对访问信息进行第一次分组。
步骤S206,根据页面标识信息对第一次分组后得到的每个组进行第二次分组。
步骤S208,对第二次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到第一统计数据。
步骤S210,判断是否存在数据倾斜情况,若是则执行步骤S212,否则执行步骤S216。在实际应用中,当对于每个业务数据上的统计数据分布不均匀时判断存在数据倾斜。
步骤S212,根据控件标识信息对第二次分组后得到的每个组进行第三次分组。
步骤S214,对第三次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到第二统计数据。
步骤S216,通过分布式计算统计业务数据的独立访客数据(UV)。具体地,若不存在数据倾斜的情况,则根据所述第一统计数据统计业务数据的独立访客数据;若存在数据倾斜的情况,则根据所述第二统计数据统计业务数据的独立访客数据。
在本申请的其他实施例中,还可以根据统计数据统计PV(浏览总数)类的指标数据,此处不再赘述。
图3是根据本申请实施例的用户访问数量统计系统的结构框图,如图3所示,其包括:
获取模块31,用于获取预设时间段内用户访问业务数据的访问信息;其中,所述访问信息包括:用户标识信息、业务数据标识信息、业务数据对应的页面标识信息、以及页面对应的控件的标识信息。
在一个实施例中,所述获取模块31可以通过用户访问日志表获取所述访问信息。
分组及去重模块32,用于对所述访问信息进行分组及去重处理得到统计数据。
统计模块33,用于根据所述统计数据统计业务数据的独立访客数据。其中,所述统计模块通过分布式计算根据所述统计数据统计业务数据的独立访客数据。
参考图4,在本申请的一个实施例中,所述分组及去重模块32进一步包括:
第一分组模块321,用于根据所述业务数据标识信息对所述访问信息进行第一次分组;
第二分组模块322,用于根据所述页面标识信息对第一次分组后得到的每个组进行第二次分组;
第一去重模块325,用于对第二次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到第一统计数据。
参考图5,在本申请的一个实施例中,所述分组及去重模块32进一步包括:
第一分组模块321,用于根据所述业务数据标识信息对所述访问信息进行第一次分组;
第二分组模块322,用于根据所述页面标识信息对第一次分组后得到的每个组进行第二次分组;
第三分组模块323,用于根据所述控件标识信息对第二次分组后得到的每个组进行第三次分组;
第二去重模块326,用于对第三次分组得到的每个组内、页面标识信息和用户标识信息相同的访问信息进行去重处理,得到第二统计数据。
在本申请的一个实施例中,统计模块33根据所述第一统计数据或所述第二统计数据、通过分布式计算统计业务数据的独立访客数据。
本申请的方法的操作步骤与系统的结构特征对应,可以相互参照,不再一一赘述。
综上所示,根据本申请的上述实施例,通过将访问数据分级分组为多个统计任务,虽然增加了任务数量但是每个任务的运行时间会程几何形的缩短,有效避免了分布式计算统计访问量指标时出现的数据倾斜。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。