进行漏斗分析的方法、装置以及存储介质与流程

文档序号:16330842发布日期:2018-12-19 06:11阅读:191来源:国知局
进行漏斗分析的方法、装置以及存储介质与流程

本发明涉及数据处理领域,具体而言,涉及一种进行漏斗分析的方法、装置以及存储介质。

背景技术

现有的漏斗分析算法,只是简单地在单机上对事件进行统计分析。比如电商类app,运营人员需要统计“搜索”—“查看商品”—“点击购买”三个事件的漏斗情况,即在一定时间段内,有多少人搜索了商品,其中又有多少人查看了商品,又有多少人选择了购买商品。在数据量较小的情况下比较实用,但当数据量较大时,会出现查询效率慢、查询容错性不强的问题。为了提高查询效率,可能会忽略漏斗有序性,这样分析出来的漏斗效果的实用性较弱。

针对上述的单机进行漏斗分析查询效率慢以及容错性不强的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种进行漏斗分析的方法、装置以及存储介质,以至少解决单机进行漏斗分析查询效率慢以及容错性不强的技术问题。

根据本发明实施例的一个方面,提供了一种进行漏斗分析的方法,包括:接收漏斗分析的请求;响应于请求,将需要查询的数据划分为多个不同范围的数据;将基于不同范围的数据的查询任务分别分配给多个运算装置;利用多个运算装置分别基于所分配的查询任务进行查询并获取查询结果;利用多个运算装置基于查询的结果执行合并操作,合并操作用于将与相同用户关联的用户数据合并到同一个运算装置中,从而多个运算装置分别包含与不同用户关联的用户数据;利用多个运算装置分别基于所包含的用户数据进行漏斗分析;以及基于多个运算装置进行漏斗分析的分析结果进行组合处理,并返回处理后的分析结果。

根据本公开实施例的另一个方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在程序运行时由处理器执行上面所述的方法。

根据本发明实施例的另一个方面,提供了一种进行漏斗分析的装置,包括:接收模块,用于接收漏斗分析的请求;数据划分模块,用于响应于请求,将需要查询的数据划分为多个不同范围的数据;任务分配模块,将基于不同范围的数据的查询任务分别分配给多个运算装置;查询模块,用于利用多个运算装置分别基于所分配的查询任务进行查询并获取查询结果;合并模块,用于利用多个运算装置基于查询的结果执行合并操作,合并操作用于将与相同用户关联的用户数据合并到同一个运算装置中,从而多个运算装置分别包含与不同用户关联的用户数据;漏斗分析模块,用于利用多个运算装置分别基于所包含的用户数据进行漏斗分析;以及输出模块,用于基于多个运算装置进行漏斗分析的分析结果进行组合处理,并返回处理后的分析结果。

在本发明实施例中,采用分布式计算的方式,通过将查询的数据进行划分并且通过多个运算装置进行分布式的查询与漏斗分析,达到了提高效率的目的,进而解决了单机进行漏斗分析查询效率慢以及容错性不强的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是用于执行根据本公开的实施例1的第一个方面所述的用于进行漏斗分析的方法的计算机终端的示意图;

图2是根据本公开实施例1所述的进行漏斗分析的漏斗分析系统的示意图;

图3是根据本公开实施例1的第一个方面所述的用于进行漏斗分析的方法的流程示意图;

图4是根据本公开实施例1的第一个方面所述的进行漏斗分析的抽象算法的逻辑结构图;以及

图5是根据本公开实施例2所述的用于进行漏斗分析的装置的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,还提供了一种进行漏斗分析的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现进行漏斗分析的方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的用于进行漏斗分析的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。

进一步地,图2示出了用于实现本实施例所述的漏斗分析的系统200的示意图。参考图2,用户终端100通过网络向进行漏斗分析的系统200发送进行漏斗分析的请求,其中系统200可以是基于hadoop、hdfs等的大数据分布式框架。其中系统200包括多个运算装置210、220以及230等。其中系统200中的运算装置210、220以及230等均可采用图1中所示出的硬件结构图。

在上述运行环境下,本申请提供了如图3所示的用于进行漏斗分析的方法。图3是根据本实施例的第一个方面所述的用于进行漏斗分析的方法的流程图。其中该方法可运行于漏斗分析系统200。参考图3所示,方法包括:

s302:接收漏斗分析的请求;

s304:响应于请求,将需要查询的数据划分为多个不同范围的数据;

s306:将基于不同范围的数据的查询任务分别分配给多个运算装置;

s308:利用多个运算装置分别基于所分配的查询任务进行查询并获取查询结果;

s310:利用多个运算装置基于查询的结果执行合并操作,合并操作用于将与相同用户关联的用户数据合并到同一个运算装置中,从而多个运算装置分别包含与不同用户关联的用户数据;

s312:利用多个运算装置分别基于所包含的用户数据进行漏斗分析;以及

s314:基于多个运算装置进行漏斗分析的分析结果进行组合处理,并返回处理后的分析结果。

正如上面所述,现有技术只是简单地在单机上对事件进行统计分析,但是当数据量较大时,会出现查询效率慢、查询容错性不强的问题。为了提高查询效率,可能会忽略漏斗有序性,这样分析出来的漏斗效果的实用性较弱。

为了解决现有技术中存在的问题,本实施例的底层利用hadoop、hdfs等大数据分布式框架,从而利用多个运算装置共同完成漏斗分析的任务。

在本申请的实施例中,在漏斗分析系统200接收到用户终端100发来的漏斗分析的请求之后(例如,可以通过运算装置210接收用户终端发来的漏斗分析),响应于该请求,会将需要查询的数据划分为多个不同范围的数据。例如漏斗分析系统200可以通过运算装置210按照所要查询的数据的索引的数值范围,将需要查询的数据划分为多个不同范围的数据。例如,索引0~99999对应的数据为第一数据范围的数据,索引100000~199999对应的数据为第二数据范围的数据,索引200000~299999对应的数据为第三数据范围的数据,等等。

从而在此基础上漏斗分析系统200(例如通过运算装置210)将基于不同范围的数据的查询任务分别分配给多个运算装置210~230等。例如,将索引1~99999对应的第一数据范围的数据相关的查询任务分配给运算装置210,将索引100001~199999对应的第二数据范围的数据相关的查询任务分配给运算装置220,将索引200001~299999对应的第三数据范围的数据分配给运算装置230,等等。

从而漏斗分析系统200通过多个运算装置210~230等分别基于所分配的查询任务进行查询并获取查询结果。并且进一步的,漏斗分析系统200还利用多个运算装置210~230基于查询的结果执行合并操作,用于将与相同用户关联的用户数据合并到同一个运算装置中。例如,在完成查询之后,可能运算装置210~230上都会包括关于用户1的用户数据。为了进行接下来的漏斗分析,漏斗分析系统200会将与相同用户关联的用户数据合并到同一个运算装置中,例如将与用户1相关的用户数据合并到运算装置210上。从而例如,与用户1至用户1000相关的数据可以合并到运算个装置210上、与用户1001至用户2000相关的数据可以合并到运算装置220上、与用户2001至用户3000相关的数据可以合并到运算装置230上,等等依次类推。从而,多个运算装置210、220以及230等分别包含与不同用户关联的用户数据。

进一步地,在完成数据的合并操作之后,系统200利用多个运算装置210~230分别基于所包含的用户数据进行漏斗分析,并且基于多个运算装置210~230进行漏斗分析的分析结果进行组合处理,并且返回处理后的分析结果。

根据本实施例的逻辑结构图如图4所示,本实施例的漏斗查询的抽象算法分为三个总的步骤:输入(input)、合并(combine)和输出(output)。

以图4为例,尽管示例性地图4示出了3台运算装置210~230,但是本领域技术人员应当清楚,可以通过更多的运算装置实现本实施例。

其中查询sql在运算装置210上执行。然后运算装置210根据sql将要查询的数据进行划分,比如划分成100份,从而针对该100份数据确定100个查询任务。然后运算装置210将查询任务进行分配,例如运算装置220和运算装置230分别分配30个查询任务,自己保留40个查询任务。然后运算装置210~230根据各自的查询任务启动现成读取自己机器上的数据,这就是输入过程(其中多个运算装置上的数据,例如运算装置210~230上的数据,是相同的)。

运算装置210~230上的每个线程在完成输入过程后,会根据数据对应的用户id在本机之上进行合并以及之后多个运算装置之间进行合并。从而相同用户id的数据在同一个运算装置上,并且不同运算装置上所包含的用户数据不同。然后运算装置210~230各自完成漏斗分析后在运算装置210上进行输出。

从而通过这种方式,无论是对用户数据进行的查询还是基于用户数据进行的漏斗分析操作,都可以在多个运算装置上采用分布式运算的方法实现。从而即便是在数据量较大的情况下,也可以通过实现多机查询来实现较好的容错性,同时保证查询效率。

此外,优选地,在将需要查询的数据划分为多个不同的数据范围之前,还包括:基于与漏斗分析相关联的事件的预定特征,从数据源中筛选需要查询的数据。

其中,作为预定特征的实例,其可以是与漏斗分析相关联的事件发生时间或者是事件名称,当然也可以是其他类型的特征。从而由于在查询之前先从数据源中根据上述特征筛选出需要查询的数据,因此提高了查询效率并且缩短了查询时间。

此外,可选地,返回处理后的分析结果的操作包括:按照自定义的返回类型,返回处理后的分析结果。例如,可以利用presto编写有序漏斗算法,并充分考虑现实情况,自定义算法返回类型,从而可以保证后续应用的灵活性。

此外,可选地,漏斗分析的操作,包括:确定与漏斗分析相关联的多个事件类型;统计用户与多个事件类型相匹配的多个用户事件;并且对于多个用户事件中相同类型的用户事件,执行以下操作:确定相同类型的用户事件是否需要进行进一步划分;以及在确定需要进一步划分的情况下,将相同类型的用户事件进一步划分为不同的事件类型。

例如,客户在实际的操作中(例如,网上购物),很可能会在一个搜索商品的操作之后后继续进行一次搜索商品的操作,或者是在一次下单操作之后继续进行一次下单操作。

这样的话,尽管从事件类型上说,都是搜索操作或者都是下单操作。但是这种情况下进行的连续多次执行的相同类型的操作仍然需要进一步划分。例如将第一次搜索商品的操作的类型确定为一次搜索,将第二次搜索商品的操作的类型确定为二次搜索。又例如,第一次下单的操作的类型确定为一次下单,将第二次下单的操作的类型确定为二次下单。从而,通过这样的划分,可以有效地将漏斗分析中的重复事件以及虚拟事件等进行有效地统计。并且,在算法中可以利用全局变量缓存当前时间对应的时间名称列表,从而提高算法的效率。

可选地,基于所包含的用户数据进行漏斗分析,还包括在多个运算装置中缓存用于查询的参数。具体地,可以利用slicestate缓存作为查询的参数的中间变量,如窗口大小等,以便提高算法效率。从而能够充分考虑漏斗的业务需求,在准确性的前提下尽量提高计算效率。

此外,可选地,返回处理后的分析结果,包括以列表的形式返回处理后的分析结果。例如,上面所述的抽象算法的输出过程(output)的输出参数为列表(day,attr,maxsteps,timedistances…)。其中day表示日期中的“天”,attr表示事件的属性,maxsteps表示输出的最大补偿,以及timedistances表示输出的时间距离。

综上所述,根据本实施例的第一个方面,无论是对用户数据进行的查询还是基于用户数据进行的漏斗分析操作,都可以在多个运算装置上采用分布式运算的方法实现。从而即便是在数据量较大的情况下,也可以通过实现多机查询来实现较好的容错性,同时保证查询效率。

此外,根据本实施例的第二个方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行上面任意一项所述的方法。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

参考图5所示,根据本发明实施例,还提供了一种用于进行漏斗分析的装置500,如图5所示,该装置500包括:接收模块510,用于接收漏斗分析的请求;数据划分模块520,用于响应于请求,将需要查询的数据划分为多个不同范围的数据;任务分配模块530,将基于不同范围的数据的查询任务分别分配给多个运算装置;查询模块540,用于利用多个运算装置分别基于所分配的查询任务进行查询并获取查询结果;合并模块550,用于利用多个运算装置基于查询的结果执行合并操作,合并操作用于将与相同用户关联的用户数据合并到同一个运算装置中,从而多个运算装置分别包含与不同用户关联的用户数据;漏斗分析模块560,用于利用多个运算装置分别基于所包含的用户数据进行漏斗分析;以及输出模块570,用于基于多个运算装置进行漏斗分析的分析结果进行组合处理,并返回处理后的分析结果。

可选地,还包括筛选模块,设置于数据划分模块520之前,用于基于与漏斗分析相关联的事件的预定特征,从数据源中筛选需要查询的数据。

可选地,输出模块570包括自定义返回单元,用于按照自定义的返回类型,返回所述处理后的分析结果。

可选地,漏斗分析模块560,包括:事件类型确定子模块,用于确定与所述漏斗分析相关联的多个事件类型;统计子模块,用于统计用户与所述多个事件类型相匹配的多个用户事件;以及类型划分子模块,用于对于所述多个用户事件中相同类型的用户事件,执行以下操作:确定所述相同类型的用户事件是否需要进行进一步划分;以及在确定需要进一步划分的情况下,将所述相同类型的用户事件进一步划分为不同的事件类型。

可选地,漏斗分析模块560还包括缓存子模块,用于在所述多个运算装置中缓存用于查询的参数。

可选地,输出模块570包括列表子模块,用于以列表的形式返回处理后的分析结果。

综上所述,根据本公开的技术方案,无论是对用户数据进行的查询还是基于用户数据进行的漏斗分析操作,都可以在多个运算装置上采用分布式运算的方法实现。从而即便是在数据量较大的情况下,也可以通过实现多机查询来实现较好的容错性,同时保证查询效率。

单机进行漏斗分析查询效率慢以及容错性不强上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1