一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于UDAF的数据分析方法及装置与流程

2022-07-30 05:51:46 来源:中国专利 TAG:

一种基于udaf的数据分析方法及装置
技术领域
1.本技术涉及计算机技术领域,特别涉及一种基于udaf的数据分析方法及装置、计算设备和计算机可读存储介质。


背景技术:

2.sql(structured query language,结构化查询语言),sql是用于访问和处理数据库的标准的计算机语言。随着互联网、移动app的迅速发展,用户量快速增长,网站、移动app的运营者们收集的数据量越来越大。运营人员需要对用户的行为情况进行统计分析,以找出其中的规律变化,从而帮助运营者进行决策。
3.但是,现有的基于sql技术在查询过程中,其查询速度慢且耗时长,尤其在涉及到大数量的用户数据分析场景中,影响用户的使用体验。因此,如何解决上述问题成为本领域技术人员亟待解决的技术问题。


技术实现要素:

4.有鉴于此,本技术实施例提供了一种基于udaf的数据分析方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
5.根据本技术实施例的第一方面,提供了一种基于udaf函数的数据分析方法,包括:
6.定义udaf函数并注册到presto引擎内;
7.利用所述udaf函数对用户数据进行聚合运算得到运算合集;
8.基于sql语句对所述运算合集进行分析,并输出分析结果。
9.根据本技术实施例的第二方面,提供了一种基于udaf函数的数据分析装置,包括:
10.注册模块,用于定义udaf函数并注册到presto引擎内;
11.聚合模块,用于利用所述udaf函数对用户数据进行聚合运算得到运算合集;
12.分析模块,用于基于sql语句对所述运算合集进行分析,并输出分析结果。
13.根据本技术实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述基于udaf函数的数据分析方法的步骤。
14.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述基于udaf函数的数据分析方法的步骤。
15.本技术实施例中的上述技术方案具有如下有益的技术效果:
16.在本技术实施例中,将自定义的udaf函数注册到presto引擎内,在执行select语句时,通过udaf函数可有效精简sql查询语句,并利用presto引擎的特性大幅提高查询速度;另一方面,本技术的实施例还创造性的使用用户数据的字段与各种运算符组成的语句作为udaf函数的输入参数,对用户数据进行过滤和聚合,实现了用户留存分析的功能,即通过自定义udaf函数建立了一个用户留存分析的函数模型,大大提升了分析的效率。
附图说明
17.图1是本技术实施例提供的一种基于udaf函数的数据分析方法的流程示意图;
18.图2是本技术实施例提供的一种基于udaf函数的数据分析装置的结构示意图;
具体实施方式
19.为使本技术的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本技术进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本技术的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本技术的概念。
20.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
21.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
22.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“响应于确定”。
23.在现有技术中,用户留存分析是互联网产品运营的重要手段之一,常见的分析方法包括新老用户同期群分析等等,在利用这些分析方法时通常需要对数据库进行大量的数据查询,使用传统的sql语句实现查询不仅结构复杂,编写时容易出错,查询的速度也很慢,影响了用户留存分析的效率。例如需要查询2022年1月1号的注册用户在2022年1月2号的登录情况时,传统的sql语句如下所示:
[0024][0025][0026]
上述查询语句可看出,使用传统的sql语句进行分析时,需要分别进行t1和t2的查询,且还需要对t1和t2进行left join关联语句的执行,影响了数据分析时的效率。
[0027]
为了解决上述问题,本技术提供了一种基于udaf函数的数据分析方法,参见图1,图1示出了根据本技术一实施例提供的基于微服务的消息发布方法的流程图,包括步骤s101至步骤s103。
[0028]
s101、定义udaf函数并注册到presto引擎内;
[0029]
presto是一个分布式的sql交互式查询引擎,其支持多种数据源的秒级查询。另外,presto是基于内存查询的,因此具有查询快的特点。udaf(user defined aggregate functions)为用户自定义聚合函数。
[0030]
本技术中,定义udaf函数并注册到presto引擎内,通过利用presto是基于内存查询的特性,可有效提升sql查询语句的查询速度,减少查询寻耗时,提升数据查询效率及用户的使用体验。
[0031]
进一步,对udaf函数的定义包括:
[0032]
定义一个类,利用注解aggregationfunction和description对类进行标注,例如:
[0033]
@aggregationfunction("tu_retention")
[0034]
@description("tu retention function")
[0035]
public class turetention{...}
[0036]
其中,注解aggregationfunction用于定义该udaf函数的名称。
[0037]
注解description用于对udaf函数进行描述说明。
[0038]
在class turetention{}中进行输入函数input、合并函数combine和输出函数output的定义。
[0039]
public class turetention{
[0040]
@inputfunction
[0041]
public static void input();
[0042]
@combinefunction
[0043]
public static void combine();
[0044]
@outputfunction
[0045]
public static void output();
[0046]
其中,输入函数input使用注解@inputfunction,
[0047]
合并函数combine使用注解@combinefunction,输出函数output使用注解@outputfunction。
[0048]
进一步,完成udaf函数定义后,通过插件的方式进行注册。本技术提供的一个实施例中,pluginmanager在安装插件时会调用插件的getfunctions()方法,将获取到的函数集合通过metadatamanager的addfunctions方法进行注册;其中,udaf函数注册后重启服务器,以使udaf函数生效。
[0049]
s102、利用所述udaf函数对用户数据进行聚合运算得到运算合集;
[0050]
在sql语句中使用上述自定义udaf函数,在执行sql语句时,首先针对目标用户数据执行该udaf函数。
[0051]
该udaf函数的执行过程包括:
[0052]
(1)根据udaf函数的定义获取每一行用户数据的状态数据;
[0053]
一些实施例中,根据udaf函数的定义获取每一行用户数据的状态数据包括:
[0054]
将udaf函数的参数作为过滤条件,对每一行用户数据进行过滤,得到状态数据。
[0055]
一些实施例中,将udaf函数的参数作为过滤条件,对每一行用户数据进行过滤,得到状态数据包括:
[0056]
将包含用户数据的字段的语句作为udaf函数的参数;对每一行用户数据,生成一个内存切片slice;利用udaf函数的参数对每一行用户数据进行过滤,在内存切片slice中插入每一个参数对应的过滤结果,得到每一行用户数据的状态数据。
[0057]
其中,内存切片slice的大小与udaf函数的参数的个数相关。
[0058]
进一步的,udaf函数的参数包括由逻辑运算符和/或比较运算符与用户数据的字段组成的语句,该参数的类型为布尔型。
[0059]
可以理解的是,本领域技术人员可以根据需要,合理的对用户数据的字段进行逻
辑运算或比较运算,及逻辑运算与比较运算的组合,从而实现udaf函数参数即数据过滤条件的定义;
[0060]
具体的,该步骤由udaf函数定义中的输入函数input实现。
[0061]
(2)对每一行用户数据的状态数据进行聚合;
[0062]
完成每一行用户数据的状态数据的获取后,对所有用户数据的状态数据进行聚合,得到包含过滤结果的多维数组。
[0063]
其中,过滤结果为true或者false。
[0064]
具体的,该步骤由udaf函数定义中的合并函数combine实现。
[0065]
(3)基于上述状态数据的聚合,输出运算合集。
[0066]
具体的,该步骤由udaf函数定义中的输出函数output实现。
[0067]
s103、基于sql语句对所述运算合集进行分析,并输出分析结果。
[0068]
在该步骤中,基于步骤s102中的输出运算合集,利用sql语句进行数据分析,得到分析结果。
[0069]
在一种可行的实施方式中,利用sql语句中的函数对运算合集进行统计分析,得到分析结果。
[0070]
下面,由一个具体地案例对上述实施方式进行解释说明,该案例为用户留存分析中的常见场景:查询2022年1月1号的注册用户在2022年1月2号的登录情况。
[0071]
在该案例中,使用自定义udaf函数tu_retention实现上述数据分析。
[0072]
在该案例中,使用的完整sql语句为:
[0073][0074]
首先,执行上述括号中的子sql语句:
[0075][0076][0077]
在该sql语句执行时,使用group by对user_id进行分组,对分组后的用户数据执行udaf函数tu_retention。
[0078]
在执行上述sql语句中的udaf函数tu_retention(event_date='20220101'and event_id=10000,event_date='20220102'and event_id=10001)时,分别将其参数event_date='20220101'and event_id=10000和event_date='20220102'and event_id=10001作为输入函数input的参数params1和params2,进而对user_logs.events中的分组后的每一条用户数据执行输入函数input的过滤逻辑。
[0079]
其中,tu_retention中输入函数的示意性代码为:
[0080]
[0081][0082]
其中,user_logs.events中的用户数据示例如下表所示:
[0083]
idxuser_idevent_idevent_nameevent_date14310000regist2022010124810000regist20220101329110000regist20220101431610000regist20220101534210000regist20220101634610000regist2022010174810001login20220102831610001login20220102
[0084]
表1
[0085]
其包含4个字段,分别是user_id(用户标识)、event_id(事件类型)、event_name(事件名称)和event_date(事件发生日期)。
[0086]
tu_retention函数执行时,针对分组用户数据中的每一行,执行input函数,将每一行用户数据与input函数的参数params1和params2(event_date='20220101'and event_id=10000和event_date='20220102'and event_id=10001)进行聚合匹配,生成内存切片slice。
[0087]
如,对于分组后的第1组数据user_id为43的数据行,
[0088]
4310000regist20220101
[0089]
表2
[0090]
进行参数匹配后得到的slice为[1,0],表明user_id为43的用户在2022年1月1日进行了用户注册,但并未在2022年1月2日进行登录。
[0091]
对于第2组数据user_id为48的数据行,
[0092]
4810000regist202201014810001login20220102
[0093]
表3
[0094]
进行参数匹配后得到的slice为[1,1],表明user_id为48的用户在2022年1月1日进行了用户注册,而且在2022年1月2日进行了登录。
[0095]
在处理完所有分组数据后,使用合并函数combine对每组用户数据的状态数据进行合并,得到最终的聚合结果:包含了过滤结果的多维数组r:
[0096][0097][0098]
表4
[0099]
并使用输出函数output进行输出。
[0100]
最后,基于sql语句对运算合集进行分析,并输出分析结果。
[0101]
针对表4的结果执行select语句中的求和函数sum,
[0102]
select
[0103]
sum(r[1])as r1,
[0104]
sum(r[2])as r2
[0105]
from r
[0106]
统计出用户于2022年1月1号的注册用户在2022年1月2号登录的查询结果。统计结果如表5所示:2022年1月1号的注册用户有6人,这6人中在2022年1月2号登录的有2人,从而完成了一个简单用户留存分析。
[0107]
r1r262
[0108]
表5
[0109]
在本技术的实施例中,将自定义的udaf函数注册到presto引擎内,在执行select语句时,通过udaf函数可有效精简sql查询语句,并利用presto引擎的特性大幅提高查询速度;另一方面,本技术的实施例还创造性的使用用户数据的字段与各种运算符组成的语句作为udaf函数的输入参数,对用户数据进行过滤和聚合,进一步形成了包含状态数据的多维数组,基于该数组实现了用户留存分析的功能,即通过自定义udaf函数建立了一个用户留存分析的函数模型,大大提升了分析的效率。
[0110]
与上述方法实施例相对应,本技术还提供了一种基于udaf函数的数据分析装置,如图2所示包括:
[0111]
注册模块,用于定义udaf函数并注册到presto引擎内;
[0112]
聚合模块,用于利用udaf函数对用户数据进行聚合运算得到运算合集;
[0113]
分析模块,用于基于sql语句对运算合集进行分析,并输出分析结果。
[0114]
上述为本实施例的一种基于udaf函数的数据分析装置的示意性方案。需要说明的
是,该装置的技术方案与上述的一种基于udaf函数的数据分析方法的技术方案属于同一构思,该装置的技术方案未详细描述的细节内容,均可以参见上述一种基于udaf函数的数据分析方法的技术方案的描述。
[0115]
本技术一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的一种基于udaf函数的数据分析方法的步骤。
[0116]
本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现上述一种基于udaf函数的数据分析方法的步骤。
[0117]
应当理解的是,本技术的上述具体实施方式仅仅用于示例性说明或解释本技术的原理,而不构成对本技术的限制。因此,在不偏离本技术的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。此外,本技术所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
[0118]
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的一种用于保证企业登录凭证安全的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述一种用于保证企业登录凭证安全的方法的技术方案的描述。
[0119]
上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0120]
计算机指令包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0121]
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
[0122]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0123]
以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原理和
实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献