在线人数计算方法及装置技术领域
本发明实施例涉及在线直播领域,特别涉及一种在线人数计算方法及装置。
背景技术
在互联网产品中,经常需要统计最高同时在线人数(PeakConcurrentUsers,
PCU)。PCU能够在一定程度上表征一个互联网产品的用户活跃度和受欢迎度。
同一个互联网产品可能存在多个子产品,比如,一个直播平台存在对应于桌面操
作系统的子产品,对应于安卓(Android)操作系统的子产品,对应于苹果(IOS)操作系统的
子产品和对应于Web网页的子产品,每个子产品具有相同或相似的功能。现有技术中,将事
实表和时间维表连接,计算出每一秒的同时在线人数,若事实表中有N条记录,则完成N*
86400次计算后,得到N*86400个同时在线人数的统计结果,再从N*86400个结果中取出最大
值,即最高同时在线人数,其中,事实表中的每条记录里至少包含日期、用户名及与用户名
对应的开始时间和结束时间,时间维表中将00:00:00至23:59:59的时间用秒表征,一秒为
一条记录,共有24*3600即86400条记录。
对于每个子产品分别记录每个用户的在线时间段,进而根据每个子产品所记录的
各个用户的在线时间段计算出PCU。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于将事实表
和时间维表做连接时是做笛卡尔乘积,事实表和时间维表连接之后的数据集大小为N*
86400,且每计算一秒的同时在线人数就需要进行一次去重统计,完成N*86400次计算相当
于需要进行N*86400次去重统计,导致计算过程中数据量过于庞大,计算过程较为耗时。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种在线人数计算方法及装置。
该技术方案如下:
第一方面,提供了一种在线人数计算方法,该方法包括:
获取各个用户在互联网产品的n个子产品中的在线时间段,n为正整数;
将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行合并,得
到每个用户对应于互联网产品的在线时间段;
根据各个用户对应于互联网产品的在线时间段,计算有关在线人数的统计数据。
可选的,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行
合并,得到每个用户对应于互联网产品的在线时间段,包括:
对于每个用户,将用户在n个子产品中的在线时间段按照起始时刻的先后顺序进
行排序,得到排序后的m个在线时间段,m为正整数;
将m个在线时间段中的第i个时间段作为目标时间段;
检测目标时间段的结束时刻是否等于或晚于第j个时间段的起始时刻,j的初始值
为i+1;
若目标时间段的结束时刻等于或晚于第j个时间段的起始时刻,则将目标时间段
的结束时候更新为第j个时间段的结束时刻;
令j=j+1,重新执行检测目标时间段的结束时刻是否晚于第j个时间段的起始时
刻的步骤;
起始时刻和结束时刻是用秒表征的时间。
可选的,检测目标时间段的结束时刻是否晚于第j个时间段的起始时刻之后,还包
括:
若目标时间段的结束时刻早于第j个时间段的起始时刻,则i=j,重新执行将m个
在线时间段中的第i个时间段作为目标时间段的步骤。
可选的,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行
合并,得到每个用户对应于互联网产品的在线时间段,包括:
对于每个用户,将所述用户在所述n个子产品中的在线时间段按照起始时刻的先
后顺序进行排序,得到排序后的m个在线时间段,m为正整数;
将m个在线时间段中的第i个时间段作为目标时间段;
检测目标时间段的结束分钟时间戳是否等于或晚于第j个时间段的起始分钟时间
戳,j的初始值为i+1;结束分钟时间戳是目标时间段的结束时刻除以60后向下取整得到的
数值,起始分钟时间戳是第j个时间段的起始时刻除以60后向下取整得到的数值;
若目标时间段的结束分钟时间戳等于或晚于第j个时间段的起始分钟时间戳,则
将目标时间段的结束分钟时间戳更新为第j个时间段的结束分钟时间戳;
令j=j+1,重新执行检测目标时间段的结束分钟时间戳是否晚于第j个时间段的
起始分钟时间戳的步骤;
起始时刻和结束时刻是用秒表征的时间。
可选的,检测目标时间段的结束分钟时间戳是否等于或晚于第j个时间段的起始
分钟时间戳之后,还包括:
若目标时间段的结束分钟时间戳早于第j个时间段的起始分钟时间戳,则i=j,重
新执行将m个在线时间段中的第i个时间段作为目标时间段的步骤。
可选的,根据各个用户对应于互联网产品的在线时间段,计算有关在线人数的统
计数据,包括:
对于每个用户对应于互联网产品的在线时间段,逐个取出在线时间段中所包括的
每个时间点,时间点采用秒或分钟表征;
对于每个时间点,若统计数据中已经存在时间点,则将与时间点对应的在线人数
加一;
若统计数据中尚不存在时间点,则将时间点添加至统计数据,并将与时间点对应
的在线人数设置为一。
可选的,根据各个用户对应于互联网产品的在线时间段,计算有关在线人数的统
计数据之后,还包括:
获取统计数据中时间点对应的在线人数的最大值;
将在线人数的最大值对应的所有时间点合并。
可选的,将在线人数的最大值对应的时间点合并,包括:
获取在线人数的最大值对应的所有时间点;
当时间点采用秒表征时,将在线人数的最大值对应的所有时间点中连续的时间点
合并为时间段;
或,
当时间点采用分钟表征时,将在线人数的最大值对应的每个时间点拆分为采用秒
表征的一个时间段;对时间段中存在交集的时间段进行合并。
第二方面,提供了一种在线人数计算装置,该装置包括:
第一获取模块,用于获取各个用户在互联网产品的n个子产品中的在线时间段,n
为正整数;
第一合并模块,用于将每个用户在n个子产品中的在线时间段中存在交集的在线
时间段进行合并,得到每个用户对应于互联网产品的在线时间段;
计算模块,用于根据各个用户对应于互联网产品的在线时间段,计算有关在线人
数的统计数据。
可选的,第一合并模块,包括:
排序单元,用于对于每个用户,将用户在n个子产品中的在线时间段按照起始时刻
的先后顺序进行排序,得到排序后的m个在线时间段,m为正整数;
目标单元,用于将m个在线时间段中的第i个时间段作为目标时间段;
第一检测单元,用于检测目标时间段的结束时刻是否等于或晚于第j个时间段的
起始时刻,j的初始值为i+1;
第一更新单元,用于若目标时间段的结束时刻等于或晚于第j个时间段的起始时
刻,则将目标时间段的结束时候更新为第j个时间段的结束时刻;
第一执行单元,用于令j=j+1,重新执行检测目标时间段的结束时刻是否晚于第j
个时间段的起始时刻的步骤;
起始时刻和结束时刻是用秒表征的时间。
可选的,第一检测单元,还用于:
若目标时间段的结束时刻早于第j个时间段的起始时刻,则i=j,重新执行将m个
在线时间段中的第i个时间段作为目标时间段的步骤。
可选的,第一合并模块,包括:
排序单元,用于对于每个用户,将所述用户在所述n个子产品中的在线时间段按照
起始时刻的先后顺序进行排序,得到排序后的m个在线时间段,m为正整数;
目标单元,用于将m个在线时间段中的第i个时间段作为目标时间段;
第二检测单元,用于检测目标时间段的结束分钟时间戳是否等于或晚于第j个时
间段的起始分钟时间戳,j的初始值为i+1;结束分钟时间戳是目标时间段的结束时刻除以
60后向下取整得到的数值,起始分钟时间戳是第j个时间段的起始时刻除以60后向下取整
得到的数值;
第二更新单元,用于若目标时间段的结束分钟时间戳等于或晚于第j个时间段的
起始分钟时间戳,则将目标时间段的结束分钟时间戳更新为第j个时间段的结束分钟时间
戳;
第二执行单元,用于令j=j+1,重新执行检测目标时间段的结束分钟时间戳是否
晚于第j个时间段的起始分钟时间戳的步骤;
起始时刻和结束时刻是用秒表征的时间。
可选的,第二检测单元,还用于:
若目标时间段的结束分钟时间戳早于第j个时间段的起始分钟时间戳,则i=j,重
新执行将m个在线时间段中的第i个时间段作为目标时间段的步骤。
可选的,计算模块,包括:
取点单元,用于对于每个用户对应于互联网产品的在线时间段,逐个取出在线时
间段中所包括的每个时间点,时间点采用秒或分钟表征;
第一设置单元,用于对于每个时间点,若统计数据中已经存在时间点,则将与时间
点对应的在线人数加一;
第二设置单元,用于若统计数据中尚不存在时间点,则将时间点添加至统计数据,
并将与时间点对应的在线人数设置为一。
可选的,该装置,还包括:
第二获取模块,用于获取统计数据中时间点对应的在线人数的最大值;
第二合并模块,用于将在线人数的最大值对应的所有时间点合并。
可选的,第二合并模块,包括:
获取单元,用于获取在线人数的最大值对应的所有时间点;
合并单元,用于当时间点采用秒表征时,将在线人数的最大值对应的所有时间点
中连续的时间点合并为时间段;或,当时间点采用分钟表征时,将在线人数的最大值对应的
每个时间点拆分为采用秒表征的一个时间段;对时间段中存在交集的时间段进行合并。
本发明实施例提供的技术方案带来的有益效果是:
通过获取各个用户在互联网产品的n个子产品中的在线时间段,将每个用户在n个
子产品中的在线时间段中存在交集的在线时间段进行合并,得到每个用户对应于互联网产
品的在线时间段,根据各个用户对应于互联网产品的在线时间段,计算有关在线人数的统
计数据;解决了在计算在线人数的统计数据时,计算数据量庞大,计算较为耗时的问题;达
到了在计算过程中规避笛卡尔乘积和大量的去重统计,从而简化数据,减少计算数据量,降
低计算时间,提高了算法运行效率的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。
图1是根据一示例性实施例示出的一种在线人数计算方法的流程图;
图2是根据另一示例性实施例示出的一种在线人数计算方法的流程图;
图3是根据一示例性实施例示出的一种在线人数计算方法的流程图;
图4A是根据一示例性实施例示出的一种在线人数计算方法的流程图;
图4B是根据一示例性实施例示出的一种在线人数计算方法的流程图;
图5是根据一示例性实施例示出的一种在线人数计算装置的框图;
图6是根据另一示例性实施例示出的一种在线人数计算装置的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方
式作进一步地详细描述。
请参考图1,其示出了本发明一个实施例提供的在线人数计算方法的流程图。该在
线人数计算方法适用于互联网产品提供商的服务器中。如图1所示,该在线人数计算方法可
以包括以下步骤:
在步骤101中,获取各个用户在互联网产品的n个子产品中的在线时间段,n为正整
数;
在步骤102中,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段
进行合并,得到每个用户对应于互联网产品的在线时间段;
在步骤103中,根据各个用户对应于互联网产品的在线时间段,计算有关在线人数
的统计数据。
综上所述,本发明实施例通过获取各个用户在互联网产品的n个子产品中的在线
时间段,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行合并,得到
每个用户对应于互联网产品的在线时间段,根据各个用户对应于互联网产品的在线时间
段,计算有关在线人数的统计数据;解决了在计算在线人数的统计数据时,计算数据量庞
大,计算较为耗时的问题;达到了在计算过程中规避笛卡尔乘积和大量的去重统计,从而简
化数据,减少计算数据量,降低计算时间,提高了算法运行效率的效果。
请参考图2,其示出了本发明另一个实施例提供的在线人数计算方法的流程图。该
在线人数计算方法适用于互联网产品提供商的服务器中。如图2所示,该在线人数计算方法
可以包括以下步骤:
在步骤201中,获取各个用户在互联网产品的n个子产品中的在线时间段,n为正整
数。
一个互联网产品通常具有多个子产品,同一个用户可在一个互联网产品的多个子
产品上同时登录。比如,虎牙直播具有网页版、手机版、电脑版几个子产品,同一个用户可同
时登录虎牙直播网页版,或虎牙直播手机版,或虎牙直播电脑版。
一个用户在一个子产品上登录就会有一个与之对应的在线时间段,服务器获取各
个用户在互联网产品的n个子产品中的在线时间段。
比如,获取2个用户在一个互联网产品的2个子产品中的在线时间段,如表一所示:
行号
用户
产品
子产品
起始时刻
结束时刻
1
用户1
虎牙
虎牙_1
9:01:00
9:03:59
2
用户2
虎牙
虎牙_1
9:03:00
9:03:59
3
用户1
虎牙
虎牙_2
9:02:00
9:04:59
4
用户2
虎牙
虎牙_2
9:04:00
9:04:59
表一
在步骤202中,对于每个用户,将用户在n个子产品中的在线时间段按照起始时刻
的先后顺序进行排序,得到排序后的m个在线时间段,m为正整数。
针对每个用户,将用户在n个子产品的在线时间段按照起始时刻的先后顺序排序,
即起始时刻越早,所在位置越靠前,一个用户的在线时间段排列结束后,对下一个用户的在
线时间段进行排序,一共得到排序后的m个在线时间段。
以表一为例,将表一中用户1在2个子产品中的在线时间段按起始时刻的先后顺序
进行排序,得到排序后的2个在线时间段,如表二所示:
行号
用户
产品
子产品
起始时刻
结束时刻
1
用户1
虎牙
虎牙_1
9:01:00
9:03:59
2
用户1
虎牙
虎牙_2
9:02:00
9:04:59
表二
将表一中用户2在2个子产品中的在线时间段按起始时刻的先后顺序进行排序,得
到排序后的2个在线时间段,如表三所示:
行号
用户
产品
子产品
起始时刻
结束时刻
1
用户2
虎牙
虎牙_1
9:03:00
9:03:59
2
用户2
虎牙
虎牙_2
9:04:00
9:04:59
表三
在步骤203中,将m个在线时间段中的第i个时间段作为目标时间段。
对每个用户,将m个在线时间段中的第i个时间段作为目标时间段。
可选的,i的取值范围为1至m。
在步骤204中,检测目标时间段的结束时刻是否等于或晚于第j个时间段的起始时
刻,j的初始值为i+1。
可选的,起始时刻和结束时刻是用秒表征的时间。
将目标时间段的结束时刻与第j个时间段的起始时刻比较,开始时,将第1个时间
段作为目标时间段,将第1个时间段的结束时刻与第2个时间段的起始时刻比较。
可选的,当满足预设条件时,目标时间段的结束时刻等于或晚于第j个时间段的起
始时刻;反之,则目标时间段的结束时刻早于第j个时间段的起始时刻。比如:当第j个时间
段的起始时刻-目标时间段的结束时刻≤1秒时,目标时间段的结束时刻等于或晚于第j个
时间段的起始时刻。
在步骤205中,若目标时间段的结束时刻早于第j个时间段的起始时刻,则i=j,重
新执行将m个在线时间段中的第i个时间段作为目标时间段的步骤。
当目标时间段的结束时刻早于第j个时间段的起始时刻时,也即第i个时间段和第
j个时间段不存在交集时,令i=j,重新执行步骤203,相当于重新令第j个时间段为新的目
标时间段,再将第j个时间段的起始时刻与第j+1个时间段的结束时刻比较;此外,上一个目
标时间段的起始时刻和结束时刻被保存在每个用户对应的在线时间段的集合中,每个用户
对应的在线时间段的集合中有至少一个目标时间段。
比如,刚开始时,将第1个时间段作为目标时间段,比较得到第1个时间段的结束时
刻早于第2个时间段的起始时刻,也即第1个时间段和第2个时间段不存在交集,则令i=2,
重新执行步骤203,也即再将第2个时间段作为目标时间段,将第2个时间段的起始时刻与第
3个时间段的结束时刻进行比较,且第1个时间段的起始时刻和结束时刻被保存在与用户对
应的在线时间段的集合中。
在步骤206中,若目标时间段的结束时刻等于或晚于第j个时间段的起始时刻,则
将目标时间段的结束时刻更新为第j个时间段的结束时刻。
当目标时间段的结束时刻等于或晚于第j个时间段的起始时刻时,也即第i个时间
段和第j个时间段存在交集时,则将目标时间段的结束时刻替换为第j个时间段的结束时
刻。
比如,刚开始时,将第1个时间段作为目标时间段,比较得到第1个时间段的结束时
刻晚于第2个时间段的起始时刻,也即第1个时间段与第2个时间段存在交集,则将第1个时
间段的结束时刻替换为第2个时间段的结束时刻。
在步骤207中,令j=j+1,重新执行检测目标时间段的结束时刻是否晚于第j个时
间段的起始时刻的步骤。
令j=j+1,重新执行步骤204。
将第i个时间段的结束时刻替换为第j个时间段的结束时刻后,令j=j+1,重新执
行目标时间段的结束时刻是否晚于第j个时间段的起始时刻的步骤,即继续将第i个时间段
的结束时刻与第j+1个时间段的起始时刻比较。
针对每个用户,执行目标时间段的结束时刻是否晚于第j个时间段的起始时刻的
步骤到对应的第m个在线时间段结束,最后得到的与用户对应的在线时间段的集合中的所
有的目标时间段即为每个用户对应于互联网产品的在线时间段。
假设当第j个时间段的起始时刻-目标时间段的结束时刻≤1秒时,目标时间段的
结束时刻等于或晚于第j个时间段的起始时刻,以表二为例,用户1对应有2个在线时间段,
将第1个在线时间段作为目标时间段,则第2个时间段的起始时刻-目标时间段的结束时刻
为9:02:00-9:03:59≤1秒,将目标时间段即第1个时间段的结束时刻替换为9:03:59,由于
用户1对应的2个在线时间段都被遍历,因此得到用户1对应于互联网产品的在线时间段的
起始时刻为9:01:00,结束时刻为9:04:59;
同样地,以表三为例,用户2对应有2个在线时间段,将第1个在线时间段作为目标
时间段,则第2个时间段的起始时刻-目标时间段的结束时刻为9:03:59-9:04:00≤1秒,将
目标时间段即第1个时间段的结束时刻替换为9:04:59,由于用户1对应的2个在线时间段都
被遍历,因此得到用户1对应于互联网产品的在线时间段的起始时刻为9:03:00,结束时刻
为9:04:59。
在步骤208中,对于每个用户对应于互联网产品的在线时间段,逐个取出在线时间
段中所包括的每个时间点,时间点采用秒或分钟表征。
对于每个用户对应于互联网产品的在线时间段,从在线时间段中逐个取出其中包
括的每个时间点,每个时间点可以是秒表征的,也可以是分钟表征的。
以表二中的用户1的在线时间段为例,假设每个时间点用分钟表征,用户1的在线
时间段中的时间点为9:01:00,9:02:00,9:03:00,9:04:00,其中9:01:00-9:01:59用9:01:
00表征,9:02:00-9:02:59用9:02:00表征,9:03:00-9:03:59用9:03:00表征,9:04:00-9:
04:59用9:04:00表征。
在步骤209中,对于每个时间点,若统计数据中已经存在时间点,则将与时间点对
应的在线人数加一。
对于第一个用户的每个时间点,将第一用户的每个时间点存储在统计数据中,对
于其他用户的每个时间点,如果统计数据中已经存在相同的时间点,即对于其他用户时间
点有重复,则将与时间点对应的在线人数加一。
可选的,统计数据中包括时间点及每个时间点对应的在线人数。
举例来说,表二中用户1的在线时间段为9:01:00至9:04:59,每个时间点用分钟表
征,首先遍历用户1的时间点,得到统计数据,如下表所示:
时间点
在线人数
9:01:00
1
9:02:00
1
9:03:00
1
9:04:00
1
表四
表三中用户2的在线时间段为9:03:00至9:04:59,每个时间点用分钟表征,即用户
2的在线时间段中有2个时间点:9:03:00和9:04:00,在如表四所示的统计数据的基础上,对
用户2的在线时间段中的时间点进行遍历,由于统计数据中已经存在时间点9:03:00和9:
04:00,因此,将统计数据中时间点9:03:00和9:04:00对应的在线人数分别加一,更新后的
统计数据如下表所示:
时间点
在线人数
9:01:00
1
9:02:00
1
9:03:00
2
9:04:00
2
表五
在步骤210中,若统计数据中尚不存在时间点,则将时间点添加至统计数据,并将
与时间点对应的在线人数设置为一。
对于第一个用户的每个时间点,将第一用户的每个时间点存储在统计数据中,对
于其他用户的每个时间点,如果统计数据中还不存在有相同的时间点,即对于其他用户的
时间点有不同,则将尚不存在的时间点添加至统计数据中,并将与添加的时间点对应的在
线人数设置为一。
举例来说,假设用户3的在线时间为9:04:00至9:06:59,每个时间点用分钟表征,
即用户3的在线时间段中有3个时间点:9:04:00、9:05:00和9:06:00,在如表五所示的统计
数据的基础上,对用户3的在线时间段中的时间点进行遍历,由于统计数据中已经存在时间
点9:04:00,将统计数据中时间点9:04:00对应的在线人数加一,而统计数据中尚不存在时
间点9:05:00和9:06:00,因此将时间点9:05:00和9:06:00添加至统计数据中,并将9:05:00
和9:06:00对应的在线人数设置为一,更新后的统计数据如下表所示:
时间点
在线人数
9:01:00
1
9:02:00
1
9:03:00
2
9:04:00
3
9:05:00
1
9:06:00
1
表六
综上所述,本发明实施例通过获取各个用户在互联网产品的n个子产品中的在线
时间段,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行合并,得到
每个用户对应于互联网产品的在线时间段,根据各个用户对应于互联网产品的在线时间
段,计算有关在线人数的统计数据;解决了在计算在线人数的统计数据时,计算数据量庞
大,计算较为耗时的问题;达到了在计算过程中规避笛卡尔乘积和大量的去重统计,从而简
化数据,减少计算数据量,降低计算时间,提高了算法的运行效率的效果。
在基于图2所示的可选实施例中,如果对统计数据的计算精度要求不是特别高,则
可以对在线时间的始末时刻进行取整,即步骤204至步骤207可被替代实现为步骤204a至步
骤207a,如图3所示:
在步骤204a中,检测目标时间段的结束分钟时间戳是否等于或晚于第j个时间段
的起始分钟时间戳,j的初始值为i+1;结束分钟时间戳是目标时间段的结束时刻除以60后
向下取整得到的数值,起始分钟时间戳是第j个时间段的起始时刻除以60后向下取整得到
的数值。
将目标时间段的结束分钟时间戳与第j个时间段的结束分钟时间戳比较,即将第i
个时间段的结束分钟时间戳与第i个时间段的结束分钟时间戳比较,第j个时间段为第i个
时间段的下一个时间段。
分钟时间戳为用秒表征的时刻除以60后向下取整得到的数值。
可选的,当满足预设条件时,目标时间段的结束分钟时间戳等于或晚于第j个时间
段的起始分钟时间戳;反之,则目标时间段的结束分钟时间戳早于第j个时间段的起始分钟
时间戳。比如:当第j个时间段的结束分钟时间戳-目标时间段的起始分钟时间戳≤1时,目
标时间段的结束分钟时间戳等于或晚于第j个时间段的起始分钟时间戳。
在步骤205a中,若目标时间段的结束分钟时间戳早于第j个时间段的起始分钟时
间戳,则i=j,重新执行将m个在线时间段中的第i个时间段作为目标时间段的步骤。
当目标时间段的结束分钟时间戳早于第j个时间段的起始分钟时间戳时,令i=j,
即保留第i个时间段的起始时刻和结束时刻,重新令第j个时间段为目标时间段,再将第j个
时间段的起始分钟时间戳与第j+1个时间段的结束分钟时间戳比较。
在步骤206a中,若目标时间段的结束分钟时间戳等于或晚于第j个时间段的起始
分钟时间戳,则将目标时间段的结束分钟时间戳更新为第j个时间段的结束分钟时间戳。
当目标时间段的结束分钟时间戳等于或晚于第j个时间段的起始分钟时间戳,即
第i个时间段的结束分钟时间戳等于或晚于第j个时间段的起始分钟时间戳,则将第i个时
间段的结束时刻替换为第j个时间段的结束时刻。
在步骤207a中,令j=j+1,重新执行检测目标时间段的结束分钟时间戳是否晚于
第j个时间段的起始分钟时间戳的步骤。
令j=j+1,重新执行步骤204a。
将第i个时间段的结束时刻替换为第j个时间段的结束时刻后,令j=j+1,重新执
行目标时间段的结束分钟时间戳是否晚于第j个时间段的起始分钟时间戳的步骤,即继续
将第i个时间段的结束分钟时间戳与第j+1个时间段的起始分钟时间戳比较。
针对每个用户,执行目标时间段的结束分钟时间戳是否晚于第j个时间段的起始
分钟时间戳的步骤到对应的第m个时间段结束,最后得到的与用户对应的在线时间段的集
合中所有目标时间段即为每个用户对应于互联网产品的在线时间段。
在基于图2和图3所示实施例的其他可选实施例中,步骤207和步骤207a之后还包
括其他步骤,如图4A所示,还包括步骤401和步骤402:
在步骤401中,获取统计数据中时间点对应的在线人数的最大值。
从统计数据中获取所有时间点对应的在线人数的最大值,即获取最高同时在线的
人数。
在步骤402中,将在线人数的最大值对应的所有时间点合并。
该步骤具体包括如下步骤,如图4B所示:
在步骤402a中,获取在线人数的最大值对应的所有时间点。
在步骤402b中,当时间点采用秒表征时,将在线人数的最大值对应的所有时间点
中连续的时间点合并为时间段。
可选的,当后一个时间点-前一个时间点≤预定值时,将前一个时间点与后一个时
间点合并为时间段。比如:预定值为1秒,前一个时间点为9:05:01,后一个时间点为9:05:
02,则前一个时间点和后一个时间点合并为时间段9:05:01至9:05:02。
可选的,合并后得到的时间段的数量为一个或一个以上。
在步骤402c中,当时间点采用分钟表征时,将在线人数的最大值对应的每个时间
点拆分为采用秒表征的一个时间段。
比如,时间点为9:05:00,拆分为用秒表征的一个时间段即为9:05:00至9:05:59。
在步骤402d中,对时间段中存在交集的时间段进行合并。
将每个用分钟表征的时间点拆分为用秒表征的时间段后,采用如图2中步骤203至
步骤207所示的方法,将拆分得到的多个时间段中存在交集的时间段合并,得到在线人数的
最大值对应的时间段,即最高同时在线人数对应的时间段。
综上所述,本发明实施例还通过获取统计数据中时间点对应的在线人数的最大
值,将在线人数的最大值对应的所有时间点合并;达到了在计算出每个时间点对应的在线
人数的同时,能够快速获取最高同时在线人数,并获取最高同时在线人数的对应时间段,既
提高计算效率又获得更多的数据信息的效果。
在一个示例性的例子中,假设有一个互联网产品:虎牙,该互联网产品有3个子产
品:虎牙_1,虎牙_2,虎牙_3,从与该互联网产品相关的事实表中获取一段时间内的记录,得
到的数据集如下表所示:
行号
用户
产品
子产品
起始时刻
结束时刻
1
用户1
虎牙
虎牙_1
9:01:00
9:03:59
2
用户2
虎牙
虎牙_1
9:03:00
9:03:59
3
用户1
虎牙
虎牙_3
9:04:00
9:05:59
4
用户1
虎牙
虎牙_2
9:02:00
9:04:59
5
用户1
虎牙
虎牙_3
9:07:00
9:07:59
6
用户2
虎牙
虎牙_2
9:04:00
9:04:59
7
用户2
虎牙
虎牙_3
9:05:00
9:07:59
表六
如表六所示,数据集中有2个用户,对于用户1,将用户1在3个子产品中的在线时间
段按照起始时刻的先后顺序进行排序,得到排序后4个在线时间段,如下表所示:
行号
用户
产品
子产品
起始时刻
结束时刻
1
用户1
虎牙
虎牙_1
9:01:00
9:03:59
2
用户1
虎牙
虎牙_2
9:02:00
9:04:59
3
用户1
虎牙
虎牙_3
9:04:00
9:05:59
4
用户1
虎牙
虎牙_3
9:07:00
9:07:59
对于用户1,将4个在线时间段中的第1个时间段作为目标时间段,即令i=1,目标
时间段的起始时刻为9:01:00,结束时刻为9:03:59;
检测目标时间段的结束时刻是否晚于第j个时间段的起始时刻,令j=i+1=2,即
将第2个时间段的起始时刻9:02:00与目标时间段的结束时刻9:03:59比较,假设当第j个时
间段的起始时刻-目标时间段的结束时刻≤1时,目标时间段的结束时刻等于或晚于第j个
时间段的起始时刻,此时,目标时间段的结束时刻晚于第2个时间段的起始时刻,则将目标
时间段的结束时刻更新为第2个时间段的结束时刻9:04:59;
令j=3,继续执行检测目标时间段的结束时刻是否晚于第j个时间段的起始时刻
的步骤,得到目标时间段的结束时刻为9:05:59;
令j=4,继续执行检测目标时间段的结束时刻是否晚于第j个时间段的起始时刻
的步骤,此时,目标时间段的结束时刻9:05:59早于第4个时间段的起始时刻,重新将第4个
时间段作为新的目标时间段,并将上一个目标时间段9:01:00至9:05:59存储至结果集也即
用户1对应于互联网产品虎牙的在线时间段中;
由于用户1对应只有4个时间段,当对第4个时间端的步骤执行完后,得到结果集9:
01:00至9:05:59,9:07:00至9:07:59,也即用户1合并后的在线时间段为9:01:00至9:05:
59,9:07:00至9:07:59。
对于用户1,以分钟表征每个时间点,用户1的结果集中的时间点为:9:01:00,9:
02:00,9:03:00,9:04:00,9:05:00,9:07:00。将取出的时间点记录到统计数据中,由于此时
统计数据中没有记录,因此将上述6个时间点对应的在线人数设置为1,如下表所示,其示出
了统计数据中每个时间点与在线人数的对应关系:
时间点
在线人数
9:01:00
1
9:02:00
1
9:03:00
1
9:04:00
1
9:05:00
1
9:07:00
1
表七
对于用户2,将用户2在3个子产品中的在线时间按起始时刻的先后顺序进行排序,
得到3个在线时间段,如下表所示:
行号
用户
产品
子产品
起始时刻
结束时刻
1
用户2
虎牙
虎牙_1
9:03:00
9:03:59
2
用户2
虎牙
虎牙_2
9:04:00
9:04:59
3
用户2
虎牙
虎牙_3
9:05:00
9:07:59
表八
与合并得到用户1的在线时间段的步骤相同,得到用户2的结果集也即用户2对应
于互联网产品虎牙的在线时间段为9:03:00至9:07:59。
对于用户2,以分钟表征每个时间点,用户2的结果集中的时间点为:9:03:00,9:
04:00,9:05:00,9:06:00,9:07:00,由于统计数据中已经存在时间点9:03:00,9:04:00,9:
05:00,9:07:00,不存在时间点9:06:00,因此将与时间点9:03:00,9:04:00,9:05:00,9:07:
00对应的在线人数加1,将时间点9:06:00添加至统计数据,并将时间点9:06:00对应的在线
人数设置为1,如下表所示,其示出了更新后的统计数据中每个时间点与在线人数的对应关
系:
时间点
在线人数
9:01:00
1
9:02:00
1
9:03:00
2
9:04:00
2
9:05:00
2
9:06:00
1
9:07:00
2
表九
由表九可知,时间点9:01:00对应的在线人数为1,时间点9:02:00对应的在线人数
为1,时间点9:03:00对应的在线人数为2,时间点9:04:00对应的在线人数为2,时间点9:05:
00对应的在线人数为2,时间点9:06:00对应的在线人数为1,时间点9:07:00对应的在线人
数为2。
由表九可知,上述统计数据中时间点对应的在线人数的最大值为2,即最高同时在
线人数为2,在线人数为2对应的时间点为9:03:00,9:04:00,9:05:00,9:07:00。
由于时间点采用分钟表征,因此需将上述4个时间点拆分为用秒表征的4个时间
段:9:03:00至9:03:59,9:04:00至9:04:59,9:05:00至9:05:59,9:07:00至9:07:59。假设后
一个时间段的起始时刻-前一个时间段的结束时刻≤1秒,即为前一个时间段的结束时刻晚
于或等于后一个时间段的起始时刻,则将前一个时间段的结束时刻更新为后一个时间段的
结束时刻,因此,合并后的时间段为9:03:00至9:05:59,9:07:00至9:05:59,即最高同时在
线人数所对应的时间段为9:03:00至9:05:59,9:07:00至9:05:59。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实
施例中未披露的细节,请参照本发明方法实施例。
请参照图5,其示出了本发明一个实施例提供的在线人数计算装置的结构方框图。
该在线人数计算装置可以通过软件、硬件或者两者的结合实现成为上述可提供在线人数计
算方法的终端的全部或者一部分。该装置包括:
第一获取模块510,用于获取各个用户在互联网产品的n个子产品中的在线时间
段,n为正整数。
第一合并模块520,用于将每个用户在n个子产品中的在线时间段中存在交集的在
线时间段进行合并,得到每个用户对应于互联网产品的在线时间段。
计算模块530,用于根据各个用户对应于互联网产品的在线时间段,计算有关在线
人数的统计数据。
综上所述,本发明实施例通过获取各个用户在互联网产品的n个子产品中的在线
时间段,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行合并,得到
每个用户对应于互联网产品的在线时间段,根据各个用户对应于互联网产品的在线时间
段,计算有关在线人数的统计数据;解决了在计算在线人数的统计数据时,计算数据量庞
大,计算较为耗时的问题;达到了在计算过程中规避笛卡尔乘积和大量的去重统计,从而简
化数据,减少计算数据量,降低计算时间,提高了算法运行效率的效果。
请参照图6,其示出了本发明一个实施例提供的在线人数计算装置的结构方框图。
该在线人数计算装置可以通过软件、硬件或者两者的结合实现成为上述可提供在线人数计
算方法的终端的全部或者一部分。该装置包括:
第一获取模块610,用于获取各个用户在互联网产品的n个子产品中的在线时间
段,n为正整数。
第一合并模块620,用于将每个用户在n个子产品中的在线时间段中存在交集的在
线时间段进行合并,得到每个用户对应于互联网产品的在线时间段。
计算模块630,用于根据各个用户对应于互联网产品的在线时间段,计算有关在线
人数的统计数据。
可选的,第一合并模块620,包括:
排序单元621,用于对于每个用户,将用户在n个子产品中的在线时间段按照起始
时刻的先后顺序进行排序,得到排序后的m个在线时间段,m为正整数。
目标单元622,用于将m个在线时间段中的第i个时间段作为目标时间段。
第一检测单元623,用于检测目标时间段的结束时刻是否等于或晚于第j个时间段
的起始时刻,j的初始值为i+1。
第一更新单元624,用于若目标时间段的结束时刻等于或晚于第j个时间段的起始
时刻,则将目标时间段的结束时候更新为第j个时间段的结束时刻。
第一执行单元625,用于令j=j+1,重新执行检测目标时间段的结束时刻是否晚于
第j个时间段的起始时刻的步骤。
可选的,第一检测单元623,还用于:
若目标时间段的结束时刻早于第j个时间段的起始时刻,则i=j,重新执行将m个
在线时间段中的第i个时间段作为目标时间段的步骤。
可选的,第一合并模块620,还包括:
第二检测单元626,用于检测目标时间段的结束分钟时间戳是否等于或晚于第j个
时间段的起始分钟时间戳,j的初始值为i+1;结束分钟时间戳是目标时间段的结束时刻除
以60后向下取整得到的数值,起始分钟时间戳是第j个时间段的起始时刻除以60后向下取
整得到的数值。
第二更新单元627,用于若目标时间段的结束分钟时间戳等于或晚于第j个时间段
的起始分钟时间戳,则将目标时间段的结束分钟时间戳更新为第j个时间段的结束分钟时
间戳。
第二执行单元628,用于令j=j+1,重新执行检测目标时间段的结束分钟时间戳是
否晚于第j个时间段的起始分钟时间戳的步骤。
可选的,第二检测单元626,还用于:
若目标时间段的结束分钟时间戳早于第j个时间段的起始分钟时间戳,则i=j,重
新执行将m个在线时间段中的第i个时间段作为目标时间段的步骤。
可选的,计算模块630,包括:
取点单元631,用于对于每个用户对应于互联网产品的在线时间段,逐个取出在线
时间段中所包括的每个时间点,时间点采用秒或分钟表征;
第一设置单元632,用于对于每个时间点,若统计数据中已经存在时间点,则将与
时间点对应的在线人数加一;
第二设置单元633,用于若统计数据中尚不存在时间点,则将时间点添加至统计数
据,并将与时间点对应的在线人数设置为一。
可选的,该装置,还包括:
第二获取模块640,用于获取统计数据中时间点对应的在线人数的最大值;
第二合并模块650,用于将在线人数的最大值对应的所有时间点合并。
可选的,第二合并模块650,包括:
获取单元651,用于获取在线人数的最大值对应的所有时间点;
合并单元652,用于当时间点采用秒表征时,将在线人数的最大值对应的所有时间
点中连续的时间点合并为时间段;或,当时间点采用分钟表征时,将在线人数的最大值对应
的每个时间点拆分为采用秒表征的一个时间段;对时间段中存在交集的时间段进行合并。
综上所述,本发明实施例通过获取各个用户在互联网产品的n个子产品中的在线
时间段,将每个用户在n个子产品中的在线时间段中存在交集的在线时间段进行合并,得到
每个用户对应于互联网产品的在线时间段,根据各个用户对应于互联网产品的在线时间
段,计算有关在线人数的统计数据;解决了在计算在线人数的统计数据时,计算数据量庞
大,计算较为耗时的问题;达到了在计算过程中规避笛卡尔乘积和大量的去重统计,从而简
化数据,减少计算数据量,降低计算时间,提高了算法运行效率的效果。
此外,本发明实施例还通过获取统计数据中时间点对应的在线人数的最大值,将
在线人数的最大值对应的所有时间点合并;达到了在计算出每个时间点对应的在线人数的
同时,能够快速获取最高同时在线人数,并获取最高同时在线人数的对应时间段,既提高计
算效率又获得更多的数据信息的效果。
需要说明的是:上述实施例提供的在线人数计算装置在计算有关在线人数的统计
数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功
能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上
描述的全部或者部分功能。另外,上述实施例提供的在线人数计算装置与在线人数计算方
法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件
来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读
存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和
原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。