00:01
好,刚才这个我们所讲的行转列里边啊,呃,拼接呢,你要关注一下,重要的是这个函数,其实我们要讲的是这个聚函数啊,看赛它是将我们多个列直接把它拼接,能放到一个数组里边啊,一个聚函数,那接下来还有这种需求呢,来看啊,先不看函数,我们看需求,你看一下是不是会有这种需求,对于某一个电影或者电视剧来说,它的category是不是分类。某一个电影,你不能说只分一个类吧。对吧,那现在它是不是用一个数组来表示的,或者用一个字符串,这个都无所谓,对吧,反正它有多个。现在就是这三个电影,我是不是可以统计一下,老板来了,让你统一个需求,说我这个平台有多少悬疑电影。能听懂。是不是有这种需求,我现在要统计一下,假如说爱奇艺,或者说那个什么用户啊啊,那统计一下当前在平台娱乐节目占的百分比是多少,音乐节目有多少,是不是能看到那个上面说音乐的有多少个多少个视频,对吧,对吧,还有那个什么武打的有多少多少视频,是不是这两个视频之间有交叉的呀。
01:12
那它怎么把它分开的,因为它存的时候,假如说它是这样存的,对吧,这个疑犯追踪它既是悬疑动作科幻具体。那我现在要统计一下动作片有多少。对吧,还有爱情片啊,你们可以统计一下啊,那这个东西是我们所说的列转行,那我们想这个数据集你能直接统计吗。统计不了吧,啊统计不了,那我们想的是干什么事啊,我们最好将这个东西啊,疑犯追踪啊,跟一一对一下,把这个疑犯追踪,把它拆成四条数据。对吧,哎,也就拆成这个样子了。是不是你希望它变成这个样子,因为变成这个样子之后,我接下来说,按照不同的。
02:06
内容去统计是不是就能统计了,我现在假如说数据集现在变成这个样子,我让你统计一下动作片有多少部。能统计吗?那爱情片有多少部能统计吗?对吧,啊,你们想统计的那个也能统计了吧。对吧,啊,也就是说啊,也就是说我们要的是这个数据结果啊,这个呢,就是我们要的这个列转行啊,把这个本来是一列属于同一列的数据吧,对吧?啊,这在一个列里边,我们把它变成哎多个。这里面呢,就要用到一个核心的函数叫X。爆炸,对,它就是炸裂。给他炸裂开啊,给他炸裂开,他将一系列一列中复杂的或者map结构可以拆成多好,就做这个事。啊,做这个事的let view呢,等会我们再聊啊,是干什么用的,先我们看这个X,我先把这个数据给它导进来,对吧?呃,把它打一下啊,这个是建表语句两个,一个是movie,一个category,我们见的是什么?
03:09
数组类型对吧,啊数组类型,而且数组的分割符写的是。逗号啊逗号OK,然后呢,数据集。VI一个Mo VId.TD然后呢,把这个数据集给它导一下,我还是不用这个地方数据集啊,还是从这改这比较靠谱一点。在这看着啊看着。先首先空好干掉,然后呢,杠T没问题吧,啊这个中间杠T没问题,好CTRLC我。保存住,然后接下来把这个数据干什么加载进来叫。Mo,然后这个底下有一个movie movie.t对吧?啊,Into table这个movie。
04:03
好,谁来?这个什么吧,数组第二个没问题了,好,我们先单独的看这个炸裂函数。啊,看这个战列函数来select叫X pro。IDEXP。好不好,里面呢,放一个力。然后from那个什么movie。来看一下,它起到了一个效果。走。全部给它炸开了吧,啊,我可以先给你讲V啊,什么那个电影等于movie movie等于疑犯追踪,那就炸开这四个吧,啊现在呢,你要全部展开,全部展开是这个意思,好,现在我们要的效果是什么?是不是前面带个电影啊,那我们的语法是不是应该这样写?
05:03
我们想法是这样吧,因为我要把原来的那个movie给他干什么带出来吧,因为我们统计多少个嘛,对吧,还有以前的信息要带进来一走。错了,没有关系。发错了这个地方呢,假如说啊,我们想一下,假如说它可以用。假如说这个不报错,现在是语法都不通过吗?对语法有问题,但是单独的是不是可以执行,加了原来的字段是不是不行。对吧,那这个时候呢,也就说不通过,那假设我们假设他能通过,那结果期应该是什么样。而且两个数据之间是什么关系?好奇。能不能想明白这个问题,如果说他能通过是不是抵号对吧,他把这个就根本就不让你通过,就有问题,所以呢,就用到我们这个地方有一个叫什么。Letter letter view是什么东西呢?叫侧写。
06:08
侧写,呃,那个这是一种。叫描写手法是吧,侧面描写形容一个人黑,不说他黑吧。啊,说不白啊,不是说把它丢到煤堆里看不见吗?对吧?啊是这意思,就是侧面描写,侧面描写,那这个在这里面呢,就是我们用这个X explore,它是个UDTF,因为ED多出。啊UTF叫一进多出,好,那用X explore打开之后呢,跟原来的表要进行关联。因为刚才说了,你赤裸裸的把这个东西放在这儿,是不是形成了笛卡尔级。对吧,但是我要干什么呢?新的这个字段,我把它形成一个新的表,但这张表跟原来是不是有关系啊,因为你看这前面这四个东西是不是我们第一行里面炸出来的,这五个东西是不是第二行炸出来的,也就是说我用let view这个字段对原来的表进行一个特写,也就是说保持跟原来的表的一个什么。
07:09
关联性就做这个事,因为它本来的语法它不让你过啊,加一个let view就够了啊来view,那我看一下let view的语法,Let view,然后UDFUDTF,也就是说这块X explore是一个啊传字段后面呢,跟一个表的。别名,然后as一个卡的一个别名啊,就表别名跟这个地方比较奇怪的就是它这个列别名啊,放在这个后面,也就是说你这个炸裂出来,这个炸裂函数是不是有个别名啊,他写在最后面是这个意思。啊,这个意思好,那我们把这个来练习一下啊,把它拿过来。CTRLC啊,先我们来放到这个里边来看一下啊,它这个语法。首先查询的东西是不是跟原来一样?啊,我们要movie和炸裂后的一个结果,对吧,那我们不是简单的from这个刚之前写的是不是到这截止。
08:04
对吧,应该是一个X吧,现在呢,怎么做呢?用let view,然后字段写在这,Time time,它这关链放在这啊,也就是说此时我们跟原来的表要做关联啊,要形成一个侧斜点做这个事了啊,那我们把它走一下,看这个语法能不能够对吧走。要的是不是这种结果对吧?啊,也就是说这个其中呢,是来view这个侧写起了作用啊,侧写起到作用本身这个X这个。这个函数应该不难理解吧。它就是放一个数组进去,然后把这个数组里面有五个元素,它把它变成什么五行,对吧,把它变成五行,你用六个元素,那变成什么六行就做这个事了,只不过说因为更多的生产环境当中,你想想看,单独的炸开它。好像意义也不大,我们更多的是不是要跟原来的信息做匹配啊,是不是类似于这样的一个需求,但是不好意思,这个东西呢,你直接写的话,就像我们分析的,他会如果说语法通过他做的是什么笛卡尔级,那你扎出来这个东西也用不了了,那就不对,是不是,那本来不是我的数据你给我了,所以呢,要加一个什么。
09:18
Let view啊形成一个侧写,也就是说这个关键字啊,就跟原来的表保持着关联啊,原来的关系,因为这个前四个是第一行炸出来的,那最后呢,关联的时候还跟第一行干什么。保持联系啊,就是这个意思啊,这意思也是固定一个写法啊,没有什么,就是固定的一个写法啊,固定写法跟原来你要想但凡这个查询当中要有原来的表格字段,你必须要加什么。来,要不然这个语法就不通过啊,就这意思,这是我们所说的这个列表啊,也就是说我们学一个炸裂函数,后面呢,我们还要自定义。就自己写这种函数,嗯。
我来说两句