CN106528778A - 用户留存类数据获取方法及装置 - Google Patents
用户留存类数据获取方法及装置 Download PDFInfo
- Publication number
- CN106528778A CN106528778A CN201610977073.5A CN201610977073A CN106528778A CN 106528778 A CN106528778 A CN 106528778A CN 201610977073 A CN201610977073 A CN 201610977073A CN 106528778 A CN106528778 A CN 106528778A
- Authority
- CN
- China
- Prior art keywords
- data
- product
- user
- record
- retention
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供的一种用户留存类数据获取方法,基于hadoop系统的基础构架,通过Hive语句引入外部辅助函数,首先通过辅助函数筛选出具有共通点的留存数据集合,缩小数据记录的范围,缩短计算时筛选数据记录的时间,再在集合数据记录中筛选数据并通过辅助函数进行留存数据计算并以映射关系存储于汇总数据表中,最后对汇总数据表的数据进行运算,获得产品的留存率。辅助函数通过预定义数据类型,除去重复数据记录,简化预算流程,通过辅助函数避免了多次重复join操作在大数据的范围内筛选有用数据,使整个运算过程的逻辑简单清晰,缩短计算时间,计算效率大幅提升。此外,本发明还提供了一种用户留存类数据获取装置,用于运行所述方法。
Description
技术领域
本发涉及数据处理技术领域,明尤其涉及一种用户留存类数据获取方法及装置。
背景技术
Hadoop一个由Apache基金会所开发的分布式系统构架,由于能够让用户轻松架构和使用的分布式计算平台,使得Hadoop一出现就受到众多大公司的青睐。Hadoop系统带有用Java语言编写的框架,用户可以在不了解分布式底层细节的情况下,开发分布式程序,轻松地在Hadoop上开发和运行处理海量数据的应用程序,Hadoop上的应用程序也可以使用其他语言编写,如C++。到目前为止,Hadoop技术在互联网领域已经得到了广泛的运用。但是Hadoop技术无论在功能上还是在稳定性等方面还有待进一步完善,如在大数据开发过程中,大数据存储在Hadoop集群中,利用Hive提供的SQL语句进行处理。在很多产品中,为了判断产品能否留住用户,通常在Hadoop系统基础上进行留存类数据统计,进而改进产品功能。一般情况下,在统计计算留存类数据过程中利用了join操作,但是运算过程比较冗长,且利用率比较低,为此,急需提出一种逻辑清晰、效率高的获取用户留存类数据的方法。
发明内容
为了解决上述问题,本发明提供用户留存类数据获取方法及装置,规避了运算过程中的join操作,大幅缩减了计算时间,提高了计算性能,且可利用率高,特别是在用户量上亿的情况下,具有丰富的扩展性。
为实现上述目标,本发明采用了如下技术方案:
本发明的一种用户留存类数据获取方法,包括如下步骤:
对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中;
对筛选数据表运算,获得每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量,以映射关系将所述产品、所述全部用户量及留存用户量关联性存储于汇总数据表中;
对汇总数据表运算,以每个产品的留存用户量与其全部用户量之比求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中。
进一步的,本方法的各步骤分别用单一Hive语句构造的指令执行。
进一步的,对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中,所述数据记录在筛选时使用外部函数collect_set(col),所述col为基本类型数据,且去掉重复数据记录;
进一步的,对筛选数据表运算,获得每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量,在此过程中使用了外部函数dt_contains(set,start,end),所述set为日期集合,所述start为开始日期,所述end为结束日期。
在其中一个实施例中,对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中步骤之前,包括:
接收数据库的选定,从对应数据库中获取预定时间范围内所有用户访问产品产生的数据记录。
进一步的,所述函数dt_contains(set,start,end)在计算过程,所述函数用于在由set指定的数据表中选出由start至end所限定的日期范围之间的数据记录,且所述start时间必须小于所述end时间。
优选的,在对筛选数据表运算过程中,获取所述全部用户量和所述留存用户量是基于同一用户在同一时间范围内使用同一产品的数据记录进行去重。
相应地,本发明还提供了一种基于hadoop系统获取用户留存类数据的装置,包括筛选数据单元、汇总单元、留存率求取单元:
所述筛选数据单元,预设数据记录筛选的时间条件值,在hadoop系统的数据库中对预设时间范围内的数据记录进行筛选,将该些数据记录存储在筛选数据表中;
所述汇总单元,用于设定所述全部用户量及留存用户量的时间条件值,同时以映射关系将所述产品、所述全部用户量及留存用户量关联性存储于汇总数据表中;
所述留存率求取单元,用于求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中。
优选的,与所述筛选数据单元相对应时间条件值预设单元,用于设定从hadoop系统数据库中筛选所有用户访问产品产生的数据记录的前提条件值;
与所述汇总单元相对应的时间条件值设定单元,用于设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值。
进一步的,时间条件设定单元,用于设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值,并接受所述运算的前提条件值及运算条件值。
优选的,所述汇总单元中还包括判断单元,用于判断函数中时间设定值和函数计算前提条件值是否同时满足,若满足则计算,若不满足则返回。
与现有技术相比,本发明具有如下有益效果:本发明提供的一种用户留存类数据获取方法及装置,首先通过辅助函数筛选出具有共通点的留存数据集合,缩小数据记录的范围,缩短计算时筛选数据记录的时间,再在集合数据记录中筛选数据并通过辅助函数进行留存数据计算并以映射关系存储于汇总数据表中,最后对汇总数据表的数据进行运算,获得产品的留存率。本发明在hadoop系统上通过Hive提供的SQL语句引入外部函数提炼共同点,再进行计算,避免了多次重复join操作,即避免重复在大数据的范围内筛选有用数据,缩短计算时间,提高计算性能,有效的提高了计算效率。
附图说明
图1为本发明一实施例的用户留存类数据获取方法流程图;
图2为本发明一实施例的用户留存类数据获取方法子流程图;
图3为本发明另一实施例的用户留存类数据获取方法装置流程图;
图4为本发明另一实施例的用户留存类数据获取方法装置汇总模块流程图;
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本发明所述Hadoop系统和被使用产品数据记录存储的数据库是对接的,即外在人员可以通过hadoop系统读取或者访问与hadoop对接数据库的数据记录,其中数据库可以是多个,其对接的类型也可以不同,数据库类型按照存储模型的划分,主要可分为:网状数据库(Network Database)、关系数据库(Relational Database)、树状数据库(HierarchicalDatabase)、面向对象数据库(Object-oriented Database)等。商业应用中主要是关系数据库,比如Oracle、DB2、Sybase、MS SQL Server、Informax、MySQL等。SQL作为一门ANSI的标准计算机语言,用来访问和操作数据库系统,同时SQL语句用于取回和更新数据库中的数据,SQL可与数据库程序协同工作。在此过程中,通过Hive工具和SQL查询功能,预设从大数据中筛选的时间条件,获得在预设时间条件值内访问设定产品的所有用户量,并创建一张用于存储筛选出数据记录的临时表。
本发明中所述的用户留存类数据获取方法,使产品运营者可以以数据形式了解用户对产品满意程度,判断该产品是否能留住用户,同时以此数据作为产品运营者改进、提升产品性能的依据。
以下实施例所揭示的一种用户留存类数据获取方法,如图1所示,包括:
S100:对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中。
通过产品运营者预设的时间范围,调用预设时间范围内的数据记录,数据数据记录包括一个或任意多个用户信息(如用户名称)、用户使用某产品的产品信息(如产品名称)、用户使用的时间等,其中用户信息和产品信息有可能不在一个数据库中,由于各个数据库是对接的,当调用某一数据记录时,若与某一记录相关的信息存储在不同数据库中,则在调用一个数据库中的数据记录时,将不同数据库中与数据记录的相关的信息进行核对比较,将信息相同的且时需要调用的数据记录的数据提取出来,并进行后一步应用,整个过程在hadoop提供的系统构架上运行。如产品1需要统计用户留存率的情况,其在数据库中的存储表格的结构如表1所示,具体用户使用不同产品的数据记录如表2所示。
表1为数据库中存储用户行为类的数据表,表结构详情如下:
为了获得产品1统计用户留存率,首先从表2中提炼出用户在2016-06-14到2016-06-21时间段内使用过产品1的用户,并通过Hive将晒选出来的数据记录存储到筛选数据表中,即表3,以产品为整个数据的共同点,以日期为共通点,从大数据中提炼出与后面计算有效的数据记录,提升了数据运算的有效性能,其中表1中用户包括一个或任意多个如下信息:用户名称、用户账号、用户邮箱、用户密码等,其中各个有可能不存在同一个数据库中,因此在查询数据的过程中,对于多个用户名称相同的情况,需要调用与用户名称存储数据库对接的其他数据库中和用户名称相关联的用户账号、用户邮箱、用户密码等信息进行比较核对,并把信息相同的数据记录合并到一条数据记录中,将信息不同的数据记录分开表示。
表2为数据库中不同用户使用不同产品的记录情况,详情如下:
product | dt | passport | ayyuid |
1 | 2016-06-14 | User1 | 01 |
1 | 2016-06-14 | User2 | 06 |
1 | 2016-06-15 | User1 | 01 |
1 | 2016-06-17 | User1 | 02 |
2 | 2016-06-14 | User3 | 04 |
1 | 2016-06-14 | User3 | 01 |
1 | 2016-06-21 | User1 | 05 |
1 | 2016-06-21 | User2 | 01 |
表3预设在2016-06-14到2016-06-21时间范围内用户使用过产品1数据记录,详情如下:
passport | product | dt |
User1 | 1 | 2016-06-14 |
User2 | 1 | 2016-06-14 |
User1 | 1 | 2016-06-15 |
User1 | 1 | 2016-06-17 |
User3 | 1 | 2016-06-14 |
User1 | 1 | 2016-06-21 |
User2 | 1 | 2016-06-21 |
在上述过程表格中,还包括用户在同一天多次使用的记录的情况,筛选的共同点可多样选择,例如可以是主播和产品等,产品和主播等在筛选过程中可以选择多个,并同时进行筛选。
S200:对筛选数据表运算,获得每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量,以映射关系将所述产品、所述全部用户量及留存用户量关联性存储于汇总数据表中。
根据筛选出的有效数据,对筛选数据表中的有效数据进行计算,并将其存储到汇总数据表中。如从表3的数据记录中获取在2016-06-14时间段总的用户量(All user),一天的留存用户量,即在2016-06-14和2016-06-15时间段内均有使用(访问)产品1的用户量(User_1th_day),三天的留存用户量,即在2016-06-14和2016-06-15到2016-06-17时间段内均有使用(或访问)产品1的用户量(User_3th_day),7天的留存用户量,即在2016-06-14和2016-06-15到2016-06-21时间段内均有使用(访问)产品1的用户量(User_7th_day),并通过Hive将结果映射为汇总数据表,即表4。
表4为用户使用(或访问)产品1的用户总量和留存数据量,详情如下:
product | All user | User_1th_day | User_3th_day | User_7th_day |
1 | 3 | 1 | 1 | 2 |
在上述过程中避免了每一次都先从大数据中查询到数据记录之后再进行下一步计算,从而提高了计算性能,缩短了计算时间,计算效率得到大幅度的提升。
S300:对汇总数据表运算,以每个产品的留存用户量与其全部用户量之比求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中。
根据步骤S200获得的用户留存数据记录,通过求取留存用户量与其全部用户量之比的各产品相关的用户留存率,并将产品及其相应的用户留存率以映射关系存储于留存数据表中。如表4获得的数据记录,通过求取User_1th_day、User_3th_day、User_7th_day分别和all user的值的比例,可获得产品1的用户留存率。
表5为产品1的留存率,详情如下:
User_1th_day | User_3th_day | User_7th_day |
33.3% | 33.3% | 66.67% |
通过计算结果可以简单清晰了解产品1不同时间段的留存率,即用户返回使用的情况。
本方法的各步骤分别用单一Hive语句构造的指令执行。
本方法在实施过程中都通过Hive提供的SQL语句执行每一个步骤的每一个操作,例如上述例子中的步骤S100,包括:
CREATE TABLE tmp_user_log_days AS
SELECT passport,product,collect_set(dt)dt_set
FROM user_log
WHERE dt>='2016-06-14'AND dt<='2016-06-21'
GROUP BY passport,product
tmp_user_log_days即为表格2,首先是通过Hive语句创建指令创建一个用于存储具有共同点的数据记录集合的表格3,再通过Hive语句创建指令,在预设日期条件下,即在2016-06-14到2016-06-21时间段内,从原结构类数据表中(表2)查询具有passport,product,collect_set(dt)信息,并映射为由passport,product作为存储相关信息的列的数据表格3。
对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中,所述数据记录在筛选时使用外部函数collect_set(col),所述col为基本类型数据,且去掉重复数据记录;
对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,通过辅助函数collect_set(col)对数据记录进行筛选,并将数据记录存储到筛选数据表中。
由于hadoop系统提供的一个底层框架,开发人员可在此框架中添加与产品相关的各步操作,对hadoop系统进行扩展,获得想要实现的操作步骤。如在进行步骤S100操作过程中,底层引入了外部辅助函数collect_set(col),扩展了Hive中简单的四则运算,使运算过程更为简便。
对筛选数据表运算,获得每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量,在此过程中使用了外部函数dt_contains(set,start,end),所述set为日期集合,所述start为开始日期,所述end为结束日期。
在步骤S200对筛选数据表运算过程中,引入了外部的辅助函数dt_contains(set,start,end),规避原有操作中的join,减少了重复使用join操作的时间,set作为日期集合,即为上述数据表格3,在对应设定的时间段内,将用户使用(或访问)过product1的数据记录统计到表格3中,在计算过程start为计算条件的开始日期即对应上述表格3中的2016-06-14和2016-06-15,end作为计算条件的结束日期,对应表格3中的不同用户量的结束日期,如全部用户量统计截止日期为2016-06-14,1日留存用户量的统计截止日期为2016-06-15,3日留存用户量的统计截止日期为2016-06-17,7日留存用户量的统计截止日期为2016-06-21。
在其中一个实施例中,如图2,对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中步骤之前,包括:
接受数据库的选定,从对应数据库中获取预定时间范围内所有用户访问产品产生的数据记录。
由于数据类型不同,数据库也有不同的类型,如上述表格中的数据类型为字符型,有相对应的存储数据的数据库,与hadoop系统对接的数据库种类很多,根据产品开发者的布局,将相应的数据记录存储到指定的数据库中,因此在进行数据记录筛选之前,首先是根据开发者需要统计的数据,查找对应的数据库,并接受数据库查找结果的选定,只有接受数据库的查找结果,才能进行后一步的计算,继而进行下一步从数据库中获取用户设置时间范围内所有用户访问产品产生的数据记录。
所述函数dt_contains(set,start,end)在计算过程,所述函数用于在由set指定的数据表中选出由start至end所限定的日期范围之间的数据记录,且所述start时间必须小于所述end时间。
在采用函数dt_contains(set,start,end)在运算过程中,通过start和end确定数据记录的时间范围,但是其确定的每一条数据记录都应该存在set中,因为在start和end确定的时间范围为set集合的范围内。如上述表格2即为set,表格2中数据记录的时间范围是2016-06-14到2016-06-21,因此函数dt_contains(set,start,end)在进行计算时,在start和end时间范围内计算的每一条记录均应存在于set,如若start和end的范围超出了set的时间范围,则在统计全部set中的数据记录,无论start和end确定的时间范围是否在set时间范围内,start的值均应小于end的值,否则函数dt_contains(set,start,end)会出现无效的情况,即不进行运算。
在对筛选数据表运算过程中,获取所述全部用户量和所述留存用户量是基于同一用户在同一时间范围内使用同一产品的数据记录进行去重。
在步骤S200中,为了获得更准确用户留存类数据记录,在进行计算过程中,对具有相同信息的数据记录合并到一条中,或者保留一条数据记录,特别地,针对同一时间范围内的同一用户的数据记录只记录一次,如对表格3的计算过程中,user1使用(或访问)product1在2016-06-15到2016-06-21时间段的数据记录包括三条,在计算过程中只计算一条数据记录。
如图3,本发明还提供了一种基于hadoop系统获取用户留存类数据的装置,包括筛选数据单元10、汇总单元20、留存率求取单元30:
筛选数据单元10,预设数据记录筛选的时间条件值,在hadoop系统的数据库中对预设时间范围内的数据记录进行筛选,将该些数据记录存储在筛选数据表中。
留存类数据的统计需要获取一段时间内的数据记录进行计算,通过筛选单元将有效数据从大数据中筛选出来,使后续计算的便捷性及流畅性。在对某产品留存数据进行统计的过程中,首先在筛选数据单元10预设筛选数据记录的时间范围,在与hadoop系统对接的数据库内筛选出预设时间段内对应产品的数据记录,并将其存储到筛选数据表内,如上述表格3,整个筛选过程都是通过Hive语句在hadoop系统上运行的。
汇总单元20,用于设定所述全部用户量及留存用户量的时间条件值,同时以映射关系将所述产品、所述全部用户量及留存用户量关联性存储于汇总数据表中;
筛选数据单元10对大数据进行筛选后,获得时间范围内相关产品对应的数据记录,汇总单元20再分别对筛选数据单元10筛选出的数据进去汇总统计。在汇总单元20,首先是设定小于或者等于筛选数据单元10筛选的时间范围,在再设定时间范围内通过函数运算获得相关产品的全部用户量及留存用户量,并将全部用户量、留存用户量和产品以映射关系关联性存储到汇总数据表中,即在汇总数据表中,产品与产品相关的全部用户量值和留存用户量值是对应存储及表示的,如表4。
留存率求取单元30,用于求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中。
为了以更简便的数字表达用户使用产品的情况,汇总数据单元10获得对应产品的留存数据之后,通过留存率求取单元30调用汇总数据表中的数据,以每个产品的留存用户量与其全部用户量之比求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中,如表5。
优选的是,所述筛选数据单元10包括与之相对应时间条件值预设单元,用于设定从hadoop系统数据库中筛选所有用户访问产品产生的数据记录的前提条件值。
在筛选数据单元10中包括与之相对应的时间条件预设单元,时间条件预设单元显示于显示器,便于用户直接预设从hadoop系统数据库中筛选所有用户访问产品产生的数据记录的前提条件值。
优选的是,所述汇总单元20包括与之相对应的时间条件值设定单元,用于设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值。
在汇总单元20中包括与之相对应的时间条件值设定单元,同样时间条件值设定单元显示于显示器,便于用户直接设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值。
时间条件设定单元,用于设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值,并接受所述运算的前提条件值及运算条件值。
上述时间条件预设单元和时间条件设定单元都存在与时间条件设定单元中,时间条件设定单元与筛选数据单元和汇总单元相连,通过在不同的单元中设置对应的时间条件,则从与之相对应的数据记录表格中筛选对应的数据记录。如当统计程序进行到汇总这一步骤即S200时,在时间条件设定单元中,设置从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值,时间条件设定单元接受条件值的设定,才能从筛选数据表格中获得条件值内的数据记录,并进行后续的汇总统计。
在其中一个实施例中,如图4,汇总单元20中还包括判断单元11,用于判断函数中时间设定值和函数计算前提条件值是否同时满足,若满足则计算,若不满足则返回。
汇总单元20中的判断单元11用于判断在步骤S200中设置的运算前提条件值和运算条件值是否同时满足,如若不满足,则步骤S200不进行计算。例如在对表3进行步骤S200的汇总运算过程中,设定了运算的前提条件是用户在2016-06-14这一天有使用(或访问)过product,在进行1日留存用户量的运算的条件为用户在2016-06-15到2016-06-15这天有使用(或访问)过product1,在获得结果之前,判断单元需要首先判断用户是否在2016-06-14和2016-06-15两段时间范围内是否都有使用(访问)product1,只有当两者都有,即两个条件同时满足时,步骤S200才会有运算结果,否则,步骤S200就不会有运算结果。
实施例二
为了进一步说明本方法的实用性,本方法还可以有扩展性。
在留存类数据中还包括产品回流用户数据的情况。如在一些产品中,需要计算产品的回流用户,意为:在一段时间前和后有使用(访问)某产品的数据记录,而在时间段内未有使用(访问)某产品的数据记录。具体实施方式同实施例一步骤S100和S200一样,本方法的另一种实施方式具体过程如下:
S100:对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中。
如产品1需要统计2016-06-14这天回流用户的情况,在6月14日有使用该产品的用户,但在之前的7天(即:6月7—13日)没有使用该产品,而在之前的第8天(即:6月6日)有使用该产品的用户量。其在数据库中的存储表格的结构同样如表1所示,具体用户使用不同产品的数据记录如表6所示。
表6为数据库中不同用户使用不同产品的记录情况,详情如下:
为了获得产品1在2016-06-14回流用户情况,首先从表6中提炼出用户在6月14日有使用该产品的用户,但在之前的7天(即:6月7—13日)没有使用该产品,而在之前的第8天(即:6月6日)有使用该产品的用户量,并通过Hive将晒选出来的数据记录存储到筛选数据表中,即表7,在此过程中同样以产品为整个数据的共同点,以日期为共通点,从大数据中提炼出与后面计算有效的数据记录,提升了数据运算效率,其中表6中用户包括一个或任意多个如下信息:用户名称、用户账号、用户邮箱、用户密码等。
表7预设在2016-06-14到2016-06-21时间范围内用户使用过产品1数据记录,详情如下:
passport | product | dt |
User1 | 1 | 2016-06-4 |
User2 | 1 | 2016-06-4 |
User1 | 1 | 2016-06-5 |
User1 | 1 | 2016-06-6 |
User1 | 1 | 2016-06-14 |
User2 | 1 | 2016-06-14 |
User3 | 1 | 2016-06-14 |
在上述表格中,同样还包括用户在同一天多次使用的记录的情况,筛选的共同点也可多样选择,例如可以是主播和产品等。
S200:对筛选数据表运算,运算条件为在某日有用户使用(或访问)每一个产品的所述数据记录,在该日前持续一段时间内所述用户未有使用(或访问)所述产品得所述数据记录,而在持续时间段前有所述用户使用(或访问)所述产品的所述数据记录,根据所述运算条件并获得所述用户量总和,以映射关系将所述产品、所述用户量总和关联性存储于汇总数据表中。
根据筛选出的有效数据,对筛选数据表中的有效数据进行计算,并将其存储到汇总数据表中。如从表6的数据记录获取用户在2016-06-14当天和在2016-06-06当天及以前时间段内有使用(或访问)product1,而在2016-06-07到2016-06-13时间段内未有使用(或访问)product1的数据记录,将所述数据记录中的不同用户进行求和并通过Hive将结果映射为汇总数据表,即表8。
表8为用户使用(或访问)产品1的用户总量和留存数据量,详情如下:
product | user |
1 | 2 |
在上述过程中同样避免了至少三次都从大数据中查询数据记录的过程,是计算效率得到大幅提升。
本方法的各步骤分别用单一Hive语句构造的指令执行。
本方法在实施过程中都通过Hive提供的SQL语句执行每一个步骤的每一个操作,例如上述例子中的步骤S100,包括:
CREATE TABLE tmp_user_log_days AS
SELECT passport,product,collect_set(dt)dt_set
FROM user_log
WHERE dt>='2016-06-06'AND dt<='2016-06-14'
GROUP BY passport,product
tmp_user_log_days即为表7。在步骤中,同样是由Hive语句创建可存储数据记录的表格7,再通过Hive语句创建指令,在预设日期条件下,即在2016-06-06之前和2016-06-14之后的时间段内,从原结构类数据表中(表7)查询具有passport,product,collect_set(dt)信息,并映射为由passport,product作为存储相关信息的列的数据表格7。
对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中,所述数据记录在筛选时使用外部函数collect_set(col),所述col为基本类型数据,且去掉重复数据记录;
在hadoop提供的框架中引入辅助函数collect_set(col),为后续调用筛选数据表中数据记录缩小范围,提高整体运算效率,在运算过程中,col作为一个基本的数据类型,在运算过程根据对数据的预定义,已除去信息相同的数据记录,节省了后续运算时间。
对筛选数据表运算,运算条件为在某日有用户使用(或访问)每一个产品的所述数据记录,在该日前持续一段时间内所述用户未有使用(或访问)所述产品得所述数据记录,而在持续时间段前有所述用户使用(或访问)所述产品的所述数据记录,根据所述运算条件并获得所述用户量总和,在此过程中同样引入了辅助函数dt_contains(set,start,end)。
在步骤S200对筛选数据表运算过程中,引入了辅助函数dt_contains(set,start,end),减少了原有函数中至少三段join代码,且整个运算逻辑更为清晰简单,效率更高。Set日期集合数据记录即为上述表7,在对应的时间段内,在对应设定的时间段内,将用户使用(或访问)过product1的数据记录统计到表格8中,在运算开始前包括了三个前提时间条件值,即用户在2016-06-14当天和在2016-06-06当天及以前时间段内有使用(或访问)product1,而在2016-06-07到2016-06-13时间段内未有使用(或访问)product1的数据记录,start为三个条件值的初始日期即2016-06-14、2016-06-06、2016-06-07,end为三个条件值的结束日期即2016-06-14、2016-06-06、2016-06-13。
在其中一个实施例中,如图2,对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中步骤之前,包括:
接受数据库的选定,从对应数据库中获取预定时间范围内所有用户访问产品产生的数据记录。根据本实施例和实施例一的对比,两者的数据库一致,其调用数据记录和与数据相关的信息路径也是一致的。
所述函数dt_contains(set,start,end)在计算过程,所述函数用于在由set指定的数据表中选出由start至end所限定的日期范围之间的数据记录,且所述start时间必须小于所述end时间。
上述表格7即为set集合的数据记录,表7的数据记录为时间范围为2016-06-04到2016-06-14,在运算过程中,start和end的时间范围使小于或者等于set集合数据记录的时间范围,由star和end条件决定调用的数据记录都存在set中,在采用函数dt_contains(set,start,end)在运算过程中,通过start和end确定数据记录的时间范围,但是其确定的每一条数据记录都应该存在set中,当start和end的范围超出了set集合数据记录时间范围时,则在统计全部set中的数据记录,无论start和end确定的时间范围是否在set时间范围内,start的值均应小于end的值,否则函数dt_contains(set,start,end)会出现无效的情况,即不进行运算。
在对筛选数据表运算过程中,获取所述全部用户量和所述留存用户量是基于同一用户在同一时间范围内使用同一产品的数据记录进行去重。
在步骤S200中,为了获得更准确用户留存类数据记录,在进去计算过程中,对具有相同信息的数据记录合并到一条中,或者保留一条数据记录,特别地,针对同一时间范围内的同一用户的数据记录只记录一次,如对表格6的计算过程中,user1使用(或访问)product1在2016-06-06之前的数据记录包括三条,在计算过程中只计算一条数据记录。
为便于本领域技术人员更容易理解本发明的实现方式,以下示例叙述产品运营者如何在装置上获取留存类数据。
某产品运营者需要了解产品能否留住用户,由于产品的数据记录可能存储在不同的数据库中,首先在运算装置上设置指定产品和指定时间范围,如上文所述产品product1、所述时间范围2016-06-14到2016-06-21,服务器接收上述条件的设定,通过Hive语句创建为执行指令语句在hadoop系统上运行,并选定所述数据存储的数据库,通过函数collect_set(col)从数据库中调用所述时间范围内的数据记录,通过Hive语句将筛选出数据记录表映射到一张新的筛选数据表中。再根据产品运营者设置从筛选数据表中调用数据记录的时间前提条件即用户在2016-06-14这天有使用(或访问)所述产品product1,计算条件即一天的留存用户量在:2016-06-14和2016-06-15时间段内均有使用(访问)产品1的用户量(User_1th_day);三天的留存用户量,:2016-06-14和2016-06-15到2016-06-17时间段内均有使用(或访问)产品1的用户量(User_3th_day);7天的留存用户量:即在2016-06-14和2016-06-15到2016-06-21时间段内均有使用(访问)产品1的用户量(User_3th_day)。Hive语句将上述条件转化为执行指令操作,通过底层dt_contains(set,start,end)函数获得在上述条件下每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量。最后产品运营者设置以每个产品的留存用户量与其全部用户量之比获得各产品相关的用户留存率。
本技术领域技术人员可以理解,在筛选以及运算过程中可以同时获取多个产品的数据记录,本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。该处理器可以执行任一本实施例的操作指令。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种用户留存类数据获取方法,其特征在于,包括如下步骤:
对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中;
对筛选数据表运算,获得每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量,以映射关系将所述产品、所述全部用户量及留存用户量关联性存储于汇总数据表中;
对汇总数据表运算,以每个产品的留存用户量与其全部用户量之比求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中。
2.根据权利要求1所述的一种方法,其特征在于,本方法的各步骤分别用单一Hive语句构造的指令执行。
3.根据权利要求1所述的方法,其特征在于,
对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中,所述数据记录在筛选时使用外部函数collect_set(col),所述col为基本类型数据,且去掉重复数据记录;
对筛选数据表运算,获得每个所述产品在某日产生所述数据记录的用户的数量总和作为各相应产品的全部用户量,以及获得每个所述产品在该日起后续时间段内产生所述数据记录的用户的数量总和作为各相应产品的留存用户量,在此过程中使用了外部函数dt_contains(set,start,end),所述set为日期集合,所述start为开始日期,所述end为结束日期。
4.根据权利要求1所述的方法,其特征在于,对hadoop系统的数据库运算,获得预定时间范围内所有用户访问产品产生的数据记录,将该些数据记录存储在筛选数据表中步骤之前,包括:
接收数据库的选定,从对应数据库中获取预定时间范围内所有用户访问产品产生的数据记录。
5.根据权利要求3所述的方法,其特征在于,所述函数dt_contains(set,start,end)在计算过程,所述函数用于在由set指定的数据表中选出由start至end所限定的日期范围之间的数据记录,且所述start时间必须小于所述end时间。
6.根据权利要求1所述的方法,其特征在于,在对筛选数据表运算过程中,获取所述全部用户量和所述留存用户量是基于同一用户在同一时间范围内使用同一产品的数据记录进行去重。
7.一种基于hadoop系统获取用户留存类数据的装置,其特征在于,包括筛选数据单元、汇总单元、留存率求取单元:
所述筛选数据单元,预设数据记录筛选的时间条件值,在hadoop系统的数据库中对预设时间范围内的数据记录进行筛选,将该些数据记录存储在筛选数据表中;
所述汇总单元,用于设定所述全部用户量及留存用户量的时间条件值,同时以映射关系将所述产品、所述全部用户量及留存用户量关联性存储于汇总数据表中;
所述留存率求取单元,用于求取各产品相关的用户留存率,将各产品及其相应的用户留存率以映射关系存储于留存数据表中。
8.根据权利要求7所述的装置,其特征在于,
与所述筛选数据单元相对应时间条件值预设单元,用于设定从hadoop系统数据库中筛选所有用户访问产品产生的数据记录的前提条件值;
与所述汇总单元相对应的时间条件值设定单元,用于设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值。
9.根据权利要求8所述的装置,其特征在于,时间条件设定单元,用于设定从筛选数据表格中获得全部用户量和留存用户量运算的前提条件值及运算条件值,并接受所述运算的前提条件值及运算条件值。
10.根据权利要求7所述的装置,其特征在于,所述汇总单元中还包括判断单元,用于判断函数中时间设定值和函数计算前提条件值是否同时满足,若满足则计算,若不满足则返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610977073.5A CN106528778A (zh) | 2016-11-04 | 2016-11-04 | 用户留存类数据获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610977073.5A CN106528778A (zh) | 2016-11-04 | 2016-11-04 | 用户留存类数据获取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106528778A true CN106528778A (zh) | 2017-03-22 |
Family
ID=58350275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610977073.5A Pending CN106528778A (zh) | 2016-11-04 | 2016-11-04 | 用户留存类数据获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528778A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329998A (zh) * | 2017-06-09 | 2017-11-07 | 广州虎牙信息科技有限公司 | 用户增量类数据获取方法、装置及设备 |
CN109376192A (zh) * | 2018-09-20 | 2019-02-22 | 北京空中信使信息技术有限公司 | 一种用户留存分析方法、装置、电子设备及存储介质 |
CN109408559A (zh) * | 2018-10-09 | 2019-03-01 | 北京易观智库网络科技有限公司 | 进行留存分析的方法、装置以及存储介质 |
CN109559142A (zh) * | 2017-09-27 | 2019-04-02 | 北京国双科技有限公司 | 用户留存率的计算方法及装置 |
CN109710876A (zh) * | 2018-12-26 | 2019-05-03 | 咪咕文化科技有限公司 | 一种信息推荐方法及装置、计算机可读存储介质 |
CN112036957A (zh) * | 2020-09-08 | 2020-12-04 | 广州图普网络科技有限公司 | 一种访客留存数确定方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593453A (zh) * | 2013-11-20 | 2014-02-19 | 北京国双科技有限公司 | 用户留存率的计算方法和装置 |
CN104504084A (zh) * | 2014-12-24 | 2015-04-08 | 小米科技有限责任公司 | 确定用户留存率的方法及装置 |
CN105787039A (zh) * | 2016-02-25 | 2016-07-20 | 四川长虹电器股份有限公司 | 多时段计算并展示用户留存率的方法 |
CN105869022A (zh) * | 2016-04-07 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 一种应用流行度预测方法和装置 |
-
2016
- 2016-11-04 CN CN201610977073.5A patent/CN106528778A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593453A (zh) * | 2013-11-20 | 2014-02-19 | 北京国双科技有限公司 | 用户留存率的计算方法和装置 |
CN104504084A (zh) * | 2014-12-24 | 2015-04-08 | 小米科技有限责任公司 | 确定用户留存率的方法及装置 |
CN105787039A (zh) * | 2016-02-25 | 2016-07-20 | 四川长虹电器股份有限公司 | 多时段计算并展示用户留存率的方法 |
CN105869022A (zh) * | 2016-04-07 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 一种应用流行度预测方法和装置 |
Non-Patent Citations (2)
Title |
---|
YHAO2014的专栏: "《https://www.2cto.com/database/201506/404331.html》", 2 June 2015 * |
李京: "百度玩图的用户访问行为分析系统设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329998A (zh) * | 2017-06-09 | 2017-11-07 | 广州虎牙信息科技有限公司 | 用户增量类数据获取方法、装置及设备 |
CN109559142A (zh) * | 2017-09-27 | 2019-04-02 | 北京国双科技有限公司 | 用户留存率的计算方法及装置 |
CN109376192A (zh) * | 2018-09-20 | 2019-02-22 | 北京空中信使信息技术有限公司 | 一种用户留存分析方法、装置、电子设备及存储介质 |
CN109408559A (zh) * | 2018-10-09 | 2019-03-01 | 北京易观智库网络科技有限公司 | 进行留存分析的方法、装置以及存储介质 |
CN109710876A (zh) * | 2018-12-26 | 2019-05-03 | 咪咕文化科技有限公司 | 一种信息推荐方法及装置、计算机可读存储介质 |
CN112036957A (zh) * | 2020-09-08 | 2020-12-04 | 广州图普网络科技有限公司 | 一种访客留存数确定方法、装置、电子设备和存储介质 |
CN112036957B (zh) * | 2020-09-08 | 2023-11-28 | 广州图普网络科技有限公司 | 一种访客留存数确定方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528778A (zh) | 用户留存类数据获取方法及装置 | |
CN103177068B (zh) | 按照生存规则合并源记录的系统和方法 | |
US7693857B2 (en) | Clinical genomics merged repository and partial episode support with support abstract and semantic meaning preserving data sniffers | |
CN110168515A (zh) | 用于分析数据关系以支持查询执行的系统 | |
US8862638B2 (en) | Interpolation data template to normalize analytic runs | |
US8589424B1 (en) | Method and system for accurate medical-code translation | |
EP3418910A1 (en) | Big data-based method and device for calculating relationship between development objects | |
CN104732154A (zh) | 将数据匿名化的方法和系统 | |
US9098630B2 (en) | Data selection | |
CN108280234B (zh) | 数据查询方法及装置 | |
CN110347724A (zh) | 异常行为识别方法、装置、电子设备及介质 | |
CN108846695A (zh) | 终端更换周期的预测方法及装置 | |
CN112085488A (zh) | 一种通用积分账户管理方法及系统 | |
CN112256584B (zh) | 互联网造数方法及系统 | |
CN111090780A (zh) | 可疑交易信息的确定方法及装置、存储介质、电子设备 | |
CN111932135B (zh) | 基于分布式数据库的客户风险识别方法及装置 | |
Pinheiro et al. | Fitting nonlinear mixed-effects models | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
CN108629381A (zh) | 基于大数据的人群筛选方法及终端设备 | |
CN107329998A (zh) | 用户增量类数据获取方法、装置及设备 | |
CN111028088A (zh) | 一种基于频繁集挖掘的团伙骗保行为识别方法与系统 | |
WO2023098034A1 (zh) | 一种业务数据报表的分类方法及装置 | |
Tayebati et al. | Process mining case study approach: Extraction of unconventional event logs to improve performance in Hospital Information Systems (HIS) | |
CN110010231A (zh) | 一种数据处理系统及计算机可读存储介质 | |
CN115080594A (zh) | 一种对数据进行多维度分析方法、系统和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170322 |
|
RJ01 | Rejection of invention patent application after publication |