一种累计用户的统计方法、装置及计算机可读存储介质与流程

文档序号:15462341发布日期:2018-09-18 18:28阅读:116来源:国知局
本发明涉及通讯
技术领域
,尤其涉及一种累计用户的统计方法、装置及计算机可读存储介质。
背景技术
:在做大数据统计时,常常需要统计累计用户这个数据。所谓累计用户,指的是到当前时间为止,总共有多少个不重复的用户。比如某应用2016-01-01上线,统计2018-04-01的累计用户,则需要统计(2016-01-01到2018-04-01)这个区间的用户数,并进行去重处理。同理,统计2018-04-04的累计用户,则需要计算(2016-01-01到2018-04-04)这个区间的用户数进行去重。现有技术中,统计累计用户时可以通过从每天的活跃用户中去重实现,如,用户1可能在统计区间内的每一天都活跃一或多次,但是在统计累计用户时,该用户只能算一次。假设应用有50个用户,在30天每天活跃1次,那么累计用户数的去重数据量=50*30=1500条,由此可见,现有技术中统计累计用户时,计算量非常大,在机器有限的前提下,往往是跑不动的,容易造成死机或计算失败。技术实现要素:有鉴于此,本发明的目的在于提供一种累计用户的统计方法、装置及计算机可读存储介质,以解决现有技术统计累计用户时,计算量非常大,在机器有限的前提下,往往是跑不动的,容易造成死机或计算失败的问题。本发明解决上述技术问题所采用的技术方案如下:根据本发明的第一个方面,提供一种累计用户的统计方法,所述统计方法包括以下步骤:从当前日的活跃用户中筛选出新增用户;计算当前日新增用户的数量Ni;获取前一日的累计用户的数量Mi-1;根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi;其中,i为大于或等于1的整数,代表从统计日起到当日为第几天。可选的,所述从当前日的活跃用户中筛选出新增用户,包括;采集客户端的用户登陆信息;对所述用户登陆信息进行去重处理获取活跃用户表;将所述活跃用户表与已存的新增用户表进行比对;若所述新增用户表中不存在与某个活跃用户信息相同的用户信息,则确定所述活跃用户为新增用户,并将其存储到所述新增用户表中。可选的,所述方法还包括:预先构建累计用户表和新增用户表;其中,所述累计用户表包括日期以及所述日期对应的累计用户的数量,所述新增用户表包括日期以及与所述日期的新增用户的信息。可选的,所述方法还包括:预先构建并维护时间表,所述时间表中仅存储了从应用上线时间到当前时间每天的日期;执行所述计算当前日的累计用户数量Mi的步骤时,所述方法还包括:将所述时间表与所述累计用户表和新增用户表进行左连接;若所述当前日的累计用户表和新增用户表中均无数据,则取历史累计的最大值,作为所述当前日的累计用户数量;否则,执行所述根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi的步骤。根据本发明的第二个方面,提供一种累计用户的统计装置,所述统计装置包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如下步骤:从当前日的活跃用户中筛选出新增用户;计算当前日新增用户的数量Ni;获取前一日的累计用户的数量Mi-1;根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi;其中,i为大于或等于1的整数,代表从统计日起到当日为第几天。可选的,当执行所述从当前日的活跃用户中筛选出新增用户的步骤时,所述处理器还用于执行所述计算机程序,以实现以下步骤:采集客户端的用户登陆信息;对所述用户登陆信息进行去重处理获取活跃用户表;将所述活跃用户表与已存的新增用户表进行比对;若所述新增用户表中不存在与某个活跃用户信息相同的用户信息,则确定所述活跃用户为新增用户,并将其存储到所述新增用户表中。可选的,所述处理器还用于执行所述计算机程序,以实现以下步骤:预先构建累计用户表和新增用户表;其中,所述累计用户表包括日期以及所述日期对应的累计用户的数量,所述新增用户表包括日期以及与所述日期的新增用户的信息。可选的,所述处理器还用于执行所述计算机程序,以实现以下步骤:预先构建并维护时间表,所述时间表中仅存储了从应用上线时间到当前时间每天的日期;在执行所述根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi的步骤之时,所述处理器还用于执行所述计算机程序,以实现以下步骤:执行所述计算当前日的累计用户数量Mi的步骤时,所述处理器还用于执行所述计算机程序,以实现以下步骤:将所述时间表与所述累计用户表和新增用户表进行左连接;若所述当前日的累计用户表和新增用户表中均无数据,则取历史累计的最大值,作为所述当前日的累计用户数量;否则,执行所述根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi的步骤。可选的,所述处理器还用于执行所述计算机程序,以实现以下步骤:将统计数据以页面的形式在报表中心进行展示;所述统计数据包括所述累计用户数量、新增用户数量、用户登陆信息或活跃用户信息中的至少一种。根据本发明的第三个方面,提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的累计用户的统计方法的步骤。本发明实施例的统计每天的新增用户,得到每天的累计用户的数量,当需要统计累计用户时,只需要将统计当天的新增用户数量与前一日的累计用户的数量相加即可,不仅减少了对大数据去重的计算量,而且缩短了时间跨度,减少了计算量,能够有效避免因计算量过于庞大造成的死机或计算失败的问题。附图说明图1为本发明实施例一提供的一种累计用户的统计方法的流程图;图2为本发明实施例一中从当前日的活跃用户中筛选出新增用户的流程图;图3为本发明实施例二提供的另一种累计用户的统计方法的流程图;图4为本发明实施例三提供又的一种累计用户的统计方法的流程图;图5为本发明实施例四提供的一种累计用户的统计装置的模块结构示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。本发明实施例一提供了一种累计用户的统计方法。请参阅图1,方法流程包括:S101、从当前日的活跃用户中筛选出新增用户;S102、计算当前日新增用户的数量Ni;S103、获取前一日的累计用户的数量Mi-1;S104、根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi;其中,i为大于或等于1的整数,代表从统计日起到当日为第几天,当i=1时,前一日的累计用户的数量Mi-1=0。实际应用中,对累计用户用新增用户去重的话,会缩减很大程度上的计算压力。例如用户A在2016-01-01这天进行注册,算新增用户,那么它在注册以后的每一天都不再是新增用户,只是活跃用户。基于这样的定义,假设应用有50个用户,在30天中每天活跃1次,但是他们只会在注册的那一天是新增用户,那么累计用户数的去重数据量=50*1=50条,比用活跃用户的算法缩减了30倍。但是这仅是基于每天的新增算,实际上时间跨度没有缩小。因为新增用户只会在某天出现,在这天之前,该用户不存在,在这天之后,该用户不能算成新增用户。因此,可以用前一日的累计加上当前日的新增,当成是今日的累计用户。这样的算法能进一步缩减计算的时间跨度并减少计算的数据量。在一个可行的方案中,该方法还包括:预先构建累计用户表和新增用户表;其中,该累计用户表包括日期以及该日期对应的累计用户的数量,该新增用户表包括日期以及与该日期的新增用户的信息。在一个可行的方案中,请参阅图2,步骤S101、从当前日的活跃用户中筛选出新增用户,包括:S201、采集客户端的用户登陆信息;S202、对该用户登陆信息进行去重处理获取活跃用户表;S203、将该活跃用户表与已存的新增用户表进行比对;S204、若该新增用户表中不存在与某个活跃用户信息相同的用户信息,则确定该活跃用户为新增用户,并将其存储到该新增用户表中。实际应用中,步骤S201,可以通过收集客户端上报的登录事件采集用户登陆信息。该登陆事件的数据中包含登录的时间,登录的用户等信息。具体的,一个用户在一天内可能会多次登录很应用,可以预设一个启动用户表,在启动用户表中保存用户每次登录的信息。需要说明的是,虽然一个用户在启动用户表中一天可能有多条数据记录,但是在活跃用户表中,一个用户只能保存一条数据记录,相当于对用户按天去重。在将活跃用户表与已存的新增用户表进行比对时,如果在某个活跃用户在新增用户表中存在的话,则不算新增用户,会被过滤掉。如果该活跃用户在新增用户表中不存在,则当前日这个用户就是新增用户,需要存入新增用户表。本实施例的累计用户的统计方法,统计每天的新增用户,得到每天的累计用户的数量,当需要统计累计用户时,只需要将统计当天的新增用户数量与前一日的累计用户的数量相加即可,不仅减少了对大数据去重的计算量,而且缩短了时间跨度,减少了计算量,能够有效避免因计算量过于庞大造成的死机或计算失败的问题。在前述实施例的基础上,本发明实施例二提供了另一种累计用户的统计方法。实际应用中,使用公式Mi=Mi-1+Ni计算当前日的累计用户会出现断层,例如:应用在2018-02-01到2018-02-11区间内上报的新增数据中,2018-02-03到2018-02-09没数据,如表1所示,没有的天数表示该天没有数据上报或新增为空。表1时间新增用户数2018-02-0122018-02-0212018-02-1032018-02-114假设2018-02-01的累计用户数是10个,在表1的基础上按照Mi=Mi-1+Ni的累计用户的结果如表2所示:表2由此可见,只要数据存在某天没上报的现象,就会出现数据断层,导致之后天数的累计清零。此时,查询2018-02-03到2018-02-09区间内的累计,在页面上的表现是0,因为在数据表中没有保存这几天的累计数据。为了避免上述问题的发生,本实施例预先设置构建并维护一张时间表,该时间表中仅存储了从应用上线时间到当前时间每天的日期。在每天跑离线调度任务的时候,将当天的时间,以yyyy-MM-dd年月日的形式保存在该时间表中。该时间表只有一个字段ds,里面保存了从应用上线时间到当前时间每天的日期。请参阅图3,该方法包括:S301、收集当前日客户端上报的登录事件,该登陆事件中包含登录的时间,登录的用户等登陆信息。S302、将用户当前日的每一次的登陆信息保存在启动用户表中。实际应用各种,一个用户在一天内可能会多次登录,在启动用户表中保存的是用户当天的每次一登陆的登录信息。S303、对启动用户表进行去重,获取活跃用户表。一个用户在启动用户表中一天可能保持了多条数据,但是在活跃表中,一个用户当天只能保存一条信息。S304、从当前日的活跃用户表中筛选出新增用户,并更新新增用户表;具体的,可以将活跃用户表与已存的新增用户表进行比对,如果新增用户表中不存在与某个活跃用户信息相同的用户信息,则确定该活跃用户为新增用户,并将其存储到该新增用户表中。如果在某个活跃用户在新增用户表中存在的话,则不算新增用户,会被过滤掉。S305、将预设的时间表与累计用户表和新增用户表进行左连接,若该当前日的累计用户表和新增用户表中均无数据,执行步骤S306,否则执行步骤S307;S306、取历史累计的最大值,作为当前日的累计用户数量。S307、根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi。具体的,i为大于或等于1的整数,代表从统计日起到当日为第几天,当i=1时,前一日的累计用户的数量Mi-1=0。实际应用中,可以通过结构化查询语言(StructuredQueryLanguage,SQL)的算法实现左连接,具体如下:SELECTa.dsASds,(CASEWHEN昨日的累计用户数ISULLAND新增用户数ISNULLTHEN历史最大的累计用户数ELSE昨日的累计用户数+新增用户数END)今日累计FROM(SELECTdsFROM(SELECTdsFROM时间表)aLEFTJOIN(SELECT昨日的累计用户数,昨天的时间ASdsFROM累计用户表)bLEFTJOIN(SELECTCount(新增用户)AS新增用户数,dsFROM新增用户表)CONa.ds=c.dsANDb.ds=c.ds根据上述算法,计算出来的累计用户数如表3所示,从表3可以看出,通过对时间表的维护,数据断层问题已经克服。表3本实施例的累计用户的统计方法,统计每天的新增用户,得到每天的累计用户的数量,当需要统计累计用户时,只需要将统计当天的新增用户数量与前一日的累计用户的数量相加即可,不仅减少了对大数据去重的计算量,而且缩短了时间跨度,减少了计算量,能够有效避免因计算量过于庞大造成的死机或计算失败的问题。并且,设置了单独的时间表进行维护,确保了每天都有累计从而得到去重的累计用户数据,有效避免出现数据断层的问题。在前述实施例的基础上,本发明实施例三提供了又一种累计用户的统计方法,请参阅图4,方法流程包括:S401、客户端在自身内部进行事件埋点。本实施例中,客户端可以是应用、网站等,可以对登陆事件进行埋点。S402、客户端在预定时间内上报数据。S403、大数据平台收集到客户端上报的数据,根据收集的数据统计从网站或应用上线日起到当前日的累计用户。实际应用中,该步骤可以采用如实施例一或实施例二所列举的方法,此处不再赘述。该步骤中,也可以按照用户需要的指标,从埋点事件中计算出需要的数据,如新增数、活跃数、下载量等。S404、大数据平台将统计数据发送给报表中心。实际应用中,该统计数据包括该累计用户数量、新增用户数量、用户登陆信息或活跃用户信息中的至少一种。S405、报表中心将统计数据以页面的形式进行展示,以方便用户查看分析数据。本实施例的累计用户的统计方法,统计每天的新增用户,得到每天的累计用户的数量,当需要统计累计用户时,只需要将统计当天的新增用户数量与前一日的累计用户的数量相加即可,不仅减少了对大数据去重的计算量,而且缩短了时间跨度,减少了计算量,能够有效避免因计算量过于庞大造成的死机或计算失败的问题。在前述实施例的基础上,本发明实施例四提供了一种累计用户的统计装置,请参阅图5,该统计装置包括:存储器501、处理器502以及存储在该存储器501上并可在该处理器502上运行的计算机程序,该计算机程序被该处理器执行时实现如下步骤:从当前日的活跃用户中筛选出新增用户;计算当前日新增用户的数量Ni;获取前一日的累计用户的数量Mi-1;根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi;其中,i为大于或等于1的整数,代表从统计日起到当日为第几天,当i=1时,前一日的累计用户的数量Mi-1=0。在一个可行的方案中,该处理器502还用于执行该计算机程序,以实现以下步骤:预先构建累计用户表和新增用户表;其中,该累计用户表包括日期以及该日期对应的累计用户的数量,该新增用户表包括日期以及与该日期的新增用户的信息。在一个可行的方案中,当执行该从当前日的活跃用户中筛选出新增用户的步骤时,该处理器502还用于执行该计算机程序,以实现以下步骤:采集客户端的用户登陆信息;对该用户登陆信息进行去重处理获取活跃用户表;将该活跃用户表与已存的新增用户表进行比对;若该新增用户表中不存在与某个活跃用户信息相同的用户信息,则确定该活跃用户为新增用户,并将其存储到该新增用户表中。实际应用中,采集客户端的用户登陆信息,可以通过收集客户端上报的登录事件采集用户登陆信息。该登陆事件的数据中包含登录的时间,登录的用户等信息。具体的,一个用户在一天内可能会多次登录很应用,可以预设一个启动用户表,在启动用户表中保存用户每次登录的信息。需要说明的是,虽然一个用户在启动用户表中一天可能有多条数据记录,但是在活跃用户表中,一个用户只能保存一条数据记录,相当于对用户按天去重。在将活跃用户表与已存的新增用户表进行比对时,如果在某个活跃用户在新增用户表中存在的话,则不算新增用户,会被过滤掉。如果该活跃用户在新增用户表中不存在,则当前日这个用户就是新增用户,需要存入新增用户表。在一个可行的方案中,处理器502还用于执行该计算机程序,以实现以下步骤:预先构建并维护时间表,该时间表中仅存储了从应用上线时间到当前时间每天的日期;在执行该根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi的步骤之时,该处理器502还用于执行该计算机程序,以实现以下步骤:执行该计算当前日的累计用户数量Mi的步骤时,该处理器502还用于执行该计算机程序,以实现以下步骤:将该时间表与该累计用户表和新增用户表进行左连接;若该当前日的累计用户表和新增用户表中均无数据,则取历史累计的最大值,作为该当前日的累计用户数量;否则,执行该根据公式Mi=Mi-1+Ni,计算当前日的累计用户数量Mi的步骤。在一个可行的方案中,该处理器502还用于执行该计算机程序,以实现以下步骤:将统计数据以页面的形式在报表中心进行展示;该统计数据包括该累计用户数量、新增用户数量、用户登陆信息或活跃用户信息中的至少一种。本实施例中的累计用户的统计装置,统计每天的新增用户,得到每天的累计用户的数量,当需要统计累计用户时,只需要将统计当天的新增用户数量与前一日的累计用户的数量相加即可,不仅减少了对大数据去重的计算量,而且缩短了时间跨度,减少了计算量,能够有效避免因计算量过于庞大造成的死机或计算失败的问题。在前述实施例的基础上,本发明实施例五提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一、实施例二或实施例三的累计用户的统计方法的步骤。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1