00:00
啊,大家来跟我一起看一下啊,咱们这个需求,我们最开始的一个思路是什么,是不是得先去求每个user字购买每个品牌的次数,这是咱们这个最开始的一个思路,对吧?啊,最开始的一个目的啊,那咱们是怎么得到每个user购买每个品牌的次数的,怎么得到的?咱们是不是从DWD层得到的,先去DWD层的这个older detail实施表当中,拿这个最明细的记录,对吧,拿最明细的记录,然后呢,去照维度表。然后呢,再进行分组对不对,但很显然这个数据量会比较大,为啥,而且你这一个啥呀,一个月的数据吧,啊,一个月的数据完事,还是最明细的,这个数据量肯定会比较大。啊,那这会儿咱们能不能想办法给他优化一下呢。能不能?啊,如果大家对咱们这个宽表比较熟悉的话,大家应该能想到我们DWS层,DWS层user action对抗的这张表里,那啊,咱把这张表查出来看一下啊。
01:02
诶,这个没查出来,再刷新一下啊。嗯,是不是我这个have two没了联一下啊啊,这个掉了。要是刚才我关机的时候没那什么。没有给它截下来啊好,那接下来咱们就就是回忆一下吧,回忆一下啊,咱们看一个键面语句吧,看下面语句啊,来我们找到那个呃,CTRLF一下啊DW。FDWS层的啊,User IA就是它对吧,那这张表啊,我们看一下咱们这张表主见是啥,是不是user ID啊对吧,那它里边是不是有一个字段叫做。Who detail states对不对?那这张表当中我不这张字这个字段里边呢,我们是一个什么类型,这张字段,这个字段是一个数组加结构体签到的一个类型,对吧?啊,然后里边的每个结构体是一个什么,是不是就是这个user今天购买过的一个SKU对吧?然后呢,你会发现我们这里边是实际上已经做过一次。
02:00
聚合了吧,已经做过一次聚合了啊,也就是说我们从这张表当中啊,一天的分区里是不是能够直接拿到一个user购买过某个SKU的次数啊,对不对啊,那这个显然要比咱们那个最明细的数据是不是要汇总过,相相对那个肯定是汇总过的,对吧,这个力度呢,要要粗一些,显然。对不对,那既然出于这个考虑,那我们能不能就不去DWD层拿数据了呢?我们从哪拿,我们从这拿。对不对,从这拿是不是很显然要比咱们DWD层的数据要少一些呀,对不对,咱们从这拿啊好,那从这拿咱们怎么拿,关键是。啊,从二拿怎么拿。啊,我们最终想得到的这个结果是啥?是每个user购买每个品牌的次数,对不对,那我们可以间接怎么样先拿到每个user购买每个SKU的次数。对不对,也先把这个每个user字购买每个SKU的次数咱们先求出来,求出来之后呢,再去和谁join呢,再去和商品维度表进行join对不对,转完之后呢,再按照品牌分组。
03:10
对不对,这个数据量是不是相对来说要小一些呀,啊要小一些啊是这样的啊好,那所以说这块呢,咱们这么去实现一下这个需求啊来我们往下走。来大家在最底下啊,这个有点多好,那接下来咱们写这个方案二啊,来咱们快速的写一下啊,我们首先like,先from哪from咱们的DWS层的user action对抗T对不对?那我们大家都知道,在这张表当中,那这个字段它里边是一个数组对不对?我们想要的效果应该是什么样呢?应该是一个U字对一个SKU吧,但这个数组里边相当于是一个U字,是不是对多个SKU,那咱这需要怎么做?需要炸开对吧,需要炸开啊,那炸开的话,那咱们先把时间过滤一下吧,就是where这个时间跟上边这个过滤是不是应该是一样的呀,对吧,一样的CTRL拿下来啊来放在这。好,拿出来,拿出来之后呢,我们需要加let'prove you,加lo e explode,然后这里边呢,咱们需要把谁放进来,是不是older detail stays,把它放进来呀,起别名,哎,Tmp啊,然后呢,As啊,咱们叫什么呀?叫做SKU s state。
04:18
这一个是不是应该是一个SKU的一个统计呀,对吧,或者咱们叫SKU吧,TRU啊C啊,是一个skku,好,那咱们这所需要的字段应该是啥呀?我们所需要的应该有第一个应该是啥user ID,那还有一个啥呀,Skuru里边的SKUID,那还需要啥?是不是里边还有一个order count呀,应该是skuru里边的SKU,哎,不是,应该是order吧,Order下问题。啊,那当然大家看啊,这是不是也是爆红了呀,爆红是因为什么来着,因为它语法它不支持对吧,但是其实这个circle是没问题的,你看只要转圈圈就说明语法没错啊好,那现在我们相当于诶已经拿出来了啊,你看一下。
05:03
诶,你看啊,咱这里边儿呢,会有这样的这个数据出现啊,会让出数据出现啊,那这样一来的话,你看一看啊,咱们这里边会有这种U的ID是重复的这这种对不对,那你说为什么会有这种重复的U的ID啊。哎,因为你炸开了对吧?啊,对不相就相当于什么,是不是相当于这一个user,在这一天里边他购买了两个SK啊,对不对,那所以说我们这需要做一步进一步什么呀。做进一步的聚合啊,咱们这儿只有一天数据,你是不是就有这种重复的出现,那你这如果是30天的,是不是更有可能会重复的呀,对不对,所以这咱们怎么做呀,我们葛如拜一下哎,分组按谁分组。按谁分组,是不是user ID加X ku ID分组没错吧?啊没错啊,那所以这边呢,我们格入by user ID啊下划线ID,然后呢,哎,这个是不是也得拿过来啊,这你直接拿就行啊,CTRLV就把它当成你这个表里的一个字段啊,那这个呢。你按他俩分组之后,那这个怎么处理一下。
06:02
这你这怎么做。你先分组分组,这又得干啥?分组就得聚合对吧?那所以这应该是是不是萨姆求和呀,对不对,那相当于你就把这一个月当中的诶,相同的用户购买相同的SKU的记录聚合到一起了,那这就是相当于已经得到了每个U字购买每个SKU的次数了,对吧?那这时候呢,我们再让他去和我们的商品维那个商品维度表进行一个draw对吧?那所以说我们这儿呢,找到商品维度表啊,商品维度表在哪。我们找一下,那这个是不是就是商品维度表啊,CTRLC拿过来,呃,拿过来之后呢,我们这儿吧,这样吧,直接把这个拿过来啊,带着括号来。CRV把它拿来,那这个呢,我们也需要给它放到一个括号里做一个查询吧,CTRLV啊来走CTRLV啊,这个我们往前推一下啊。好,那这写个分号吧,写分号啊啊那这里边我们取名啊,那他管它叫做呃叫做还叫OD吧啊,还叫OD,那这个呢,也也叫SKU啊,那它俩我们应该做的应该也是嗯,Left draw对吧?啊,也是left rund啊,Left draw g,那left draw完之后呢,下边我们应该写一个啥on吧啊OD点咱们上边选的是呃,应该选谁呀,SKID对吧?啊SKUID等于下边那个呃。
07:27
呃,SKu.ID那这个是不是照上了呀?那照上之后咱们现在是不是得到了一个虚表啊,这个虚表应该什么样了呀?啊一共有七个字段,u.IDSQID,然后呢,对应的次数后面呢是品牌ID一级品类是不是应该是这样的一个效果呀?那咱们现在应该怎么做,现在是不是应该按照user加上品牌进行?分组对不对?分完组之后呢,对谁进行聚合呀,对这个字段是不是进行聚合对吧?啊,那所以这呢,我们一会需要对它进合进行聚合,所以取个别名叫做order count,好看看啊,那现在呢,我们开始select from select from,咱们下边这个子查询啊,那下边呢,我们需要分组啊,来goodbye by by,谁goodbye by,一个是useridd,一个是t midd,还有一个呢是CAT1IDD啊,这个不能丢啊,还有一个呢是哎,CATEGOR1NAME哎,按它分组好,那上边呢,我们就可以选这几个字段了,对吧?哎,咱们就可以选了select,然后呢,把它拿过来,那这个最后选一个什么字段呀,选一个some啊,Some,谁some older comes啊,这样一来,我们同样能得到每个user购买每个品牌的次数,对吧?诶,你到了这儿再往下做是不是就会了呀,那这跟上面是不应该是一样的呀。
08:49
那所以说这个咱就不再多写了啊,咱们取个边边跳,或者看看那这个玩意之后呢,相当于是不是相当于这这个T1对吧,然后呢,你再对它进行一个嵌套,上面呢也是哎从里边选,最后呢按照谁分组啊,按照谁分组,最后按谁分组,是不是也是按照TM这仨字段分组,然后呢,各种这个some if就可以了啊其实一样的啊这当然下面这个呢,要比上面内容要好一些,因为我不是从明最明细的数据开始查的啊好,那视频我录一下。
我来说两句