00:00
呃,接下来呢,我们看一下。这个我们要查询的是什么东西啊,查询所谓的每个顾客上一次的购买时间啊,好,那原始数据我们拿过来啊,谁来给的新from business这张表拿过来,正常来说应该还是要加一个什么排序,对吧?我们还是曼,或者说我们这个地方应该有啊,我就不写了,我记得这个地方,嗯,按照用户排好序的数据,就这个吧,排好序的对吧,拿过来,这是原始数据的样子,对吧?好,这个后面这个纸我要了啊,我删一下。呃,所谓的是叫查询每一个顾客上一次的购买时间,什么意思呢?这个顾客1月1号是第一次购买,第一次购买一次有吗?没有,那我给个什么,给个那值好,这个月五号他上一次购买是什么,1月1号就类似于这样的效果能听懂,就是说我要把这个字段呀,下移一行整体干什么,下一行也就是说1月5号我要移到哪啊,移到这对吧,对于1月8号而言,我给他要移到2月3号对吧,就类似于这样的点点点同样的到这个地方呢。
01:41
又是一个。浪值是吧,啊,应该又是一个浪值,那这个等我统一消息啊,统一消息对吧,它又是一个值,因为我们是每个顾客下次购买时间,对于ma而言,4月8号是不是他第一次购买,前面时间就是什么,就是一个,那就是一个闹啊,所以在这种情况下,我们那个开窗。
02:08
是不是说按照用户要做什么做分组,然后按照日期要做排序吧,对吧,得这样排照,关键是上一行一下来,对吧,这个用到另外的函数了,来教这个。往前第几行let对吧?哎,力往后第几行,那我们现在要往前数对吧,它里面呢,其实可以传三个参数,也可以传两个。呃,两个的话就是column加哎,三个的话再给一个默认值,没给默认值,如果那个值找不到,因为第一行你再往前数肯定没有了,他就默认值给的就是那啊,当然你可以给一个。默认值,假如给自己对吧,好,那我们把这个写一下,用的是like对不对?好,那我们来写一下这个东西啊,就是select上一上一次购买时间,那我们只要内就行了,然后呢,All的data是不是当前这一次的购买时间,然后上一次购买时间,刚才我们看到说LA函数第一个位置传的是列名or the data,然后呢,往前一次对吧,我们先不给这个值,然后后面要跟over over里边刚才我们说了怎么写帕金山那对吧,然后all对吧,按照这个你组,然后from这个什么所谓的business张对吧,往前一行好拿过来。
03:46
这个东西在生产环境当中一般怎么用呢?是这样的,我们用户是不是可以连续访问某一个网页多个页面?
04:00
对吧,我从A页面点击跳转到C页面,我又点跳转到什么B页面,又跳转到页面对吧,那这个时候是不是每一条日志可能是给每一个页面单独产生的。就是说A页面形成一条日志,B页面形成一条日志,但是有时候我们在需求当中要求一个什么呢?页面与页面之间的单跳转化率。你听这个名字叫单跳转化率什么意思,就看从A页面跳到B页面多少转化率,跳到C页面有多少转化率,能能懂这意思吗?对吧?那我们是不是要把A-BA-C这些东西都求出来。那要求A-C是不是AC得在同一行啊,对吧?但是刚才我们说了你A跟BA跟C访问的值日,它的两行数据跨行跨行你能把它拼接起来吗?我们当时说了抗K的这个函数是udf函数,对不对?
05:04
Udf函数是一行到一行,而刚才我们说了AB在两行,你把它输成A-B,这是聚合函数吧,这个做不到对吧,而且它这样相邻的两个嘛,那我们就可以用什么立,或者那函数是不是说将上一行移下来为一拼接就好了。是。能理解这个事儿吗?没听懂是吧,这样我们正常就是说他这个应用点啊,应用点,因为我们学一个东西就是为了未来工作呀,或者说做项目什么用的,对吧,那我们把这个说慢一点啊,就正常的我们用户啊,一个user相同的UID,对吧?我们在一次访问的时候,是不是我们可以访问A页面,然后U的ID是不是又可以访问什么B页面,这是连续的两次访问对吧?好,UID呢,又从B页面跳转到了D页面,可能。
06:01
对吧,然后呢,又从D页面跳转到了哪啊,可能又跳转到B页面啊,随便啊这个页面当然除了这个UID还有有其他的用户啊。对吧,现在呢,我们要求的是叫单跳转化率,液面的单跳转化率,或者换句话说,所谓的页面单调转化率呢,就是说我想看一下A页面。我总共可能有ABCDE5个页面,对吧?啊有这一个页面,那我想看一下A到B跳转率多少,A到C多少,A到D多少,A到E有多少。对吧?那跳转率既然是一个率的话,是不是要求一个比值啊?我们是不是应该把A到B的总数求出来,除以多少啊?除以总的访问单独访问A一定的,这个没问题吧,这是单调转化率,好,那么问题就在于A到B的总数怎么求呢?
07:07
现在是这样的数据,这是不是就一次A到B啊,这个就记录一次了,那这个怎么算呢?是不是我们得干什么得变成A-B,然后按照这个东西分组求抗心就好了,对不对呀,那你怎么能把这两个值变成A-B呢?抗能做到吗?Contact能吗?Con是不是udf函数只能一行到一行啊,现在是不是两行到一行得用聚函数吧,但是也没有聚函数可以做到这样的事情啊,所以我们就想办法,如果我们能像现在一样把A干什么一下来,我们是不是在同一行上面属于同一行的两个列,我就能做什么做拼接了呀,对吧?啊,是这样的一种情况啊,在生产环境当中一个典型应用就是lead,或者那能听懂吗?还是有问题是吗?啊,如果还有问题也没关系,后面我们会有相似的需求,对吧?我们会去做这个事情啊,会有相似的需求啊,现在呢,去提问下,也就是说我们目的就是说将这两行数据变成什么呀,就是说这四行数据我们想变成还是按UID对吧?我们想变成A到B对吧,然后还有对吧,还有点啊嗯,然后呢是B到B,然后第最后一个是D到B,也就是说我们希望。
08:33
由上面这个数据变成这个样子,你是不是要用到力或者like函数对吧?啊,用到这样的函数能懂这意思吧?因为我们要求的是单调转化率,你得把它们俩拼接到一起去求count,然后除以总数A,就单独按a count的总数是不是就是A到B的一个转化率啊,没问题吧?啊,是这样的东西,这是个点应用啊,这是将上一行移下来,我们可以看一下,哎,在这。
09:00
对吧,第一行数据,对于每一个用户的第一行数据,它都是一个什么那值,因为没有,当然我们可以给什么默认值,哎,可以传三个参数,我给个默认值,假如说默认值没有的话,我通风给什么给1970年1月1号对吧,你是那的看着不好看嘛,因为后续再做日期处理,是不是也不好处理啊,我正常其他都是日期,你呢,是一个闹啊,那我就给一个什么默认值,这是可以给默认值的啊,就是说这个力的力的或者那个函数啊呃,可以接受三个参数啊,第一个是列,第二个是你要往前多少行,对吧?好,是不是这个默认值就生效了,对于每个用户的第一行都是默认值啊,因为它前面没有数据嘛,对吧,当然默认值除了这样给,还可这样给。
10:01
还可以给个列,那这样的话就是说如果你是第一行,你前面是不是没有数据了,我就用自己能懂这意思吗?对吧?啊,那这个我们也可以啊,往前走也就第一行才没有数据吧,如果说这个我写的是二呢。那第一行跟第二行都没有往前两行嘛,对吧?啊往前两行那就看你写的数字了啊。好,来看我们给的是多少啊。给了自己第一行本来如果没给默认值是不是none啊,现在给了给了自己对吧?好,包括这条数据是不是4月8号对吧?还有这个都是自己啊,也可以给自己啊,也可以给自己是这样的东西对吧?那当然呢,这地方除了说把前一行拿下来,我们是不是还有一个立函数啊,这是把后一行拿上去,那是不是最后一行可能没有数据啊,对吧,最后一行就用自己啊,就是对于每一个用户而言,最后一行用自己对吧?这样的一个情况啊。
11:26
我们看一下它这个结果好,呃,你看第一行数据后面给的是多少啊,1月5号是不是这一行移上去了。对吧?啊,就是lead的是往上移,那个呢是往下移,对吧?那看1月8号放在哪了,是不是放在上一行,而对于当前用户的最后一行呢,放的是自己,因为我们刚才写的直接用的是什么默认值al data,当然我们也可以给1970,或者说给什么就不写,那就是最后一个位置是一个浪值,对吧,而且呢,它也是按照用户来的啊,你看这个用户诶全多了,到这是吧,是不是4月13号最后一行数据是什么?4月13号,因为对于最后一行数据而言,它没有什么下一行了,对吧,它没有下一行啊,所以呢,是这样一种现象啊,这是我们所聊的叫立和LA这两个函数,一个把上面的往下啊,一个呢是把下面的往上,这个可以任意啊,这个N呢可以任意,如果没有的话,它默认值给的是now。
12:36
对吧,啊是这样的,这是我们的需求四啊。
我来说两句