00:00
来大家来看一下啊,刚才那个咱们那个现象是什么现象,这个有同学这个指出来了,他说什么呀,我那个主题DWT层。三星from d wt,然后那个s ku topic,那这张表呢,呃,比如说limit limit10,那这张表呢,按照常理来说,咱们讲过啊,这张表是一个什么?是一个呃,SKU的全量表,一行数据应该是一个SKU,也就是说诶是不会出现重复的SKU的,对不对?但是这边呃,咱们那个只选一个SQID吧,SKU下位线ID。但是这个现象却是什么呢?现在却是我同一个SKU啊。我出现了好几次,对不对,那出现了好几次,那这是为啥啊,这我给大家解释一下啊,来我们去看一下,呃,这边是为什么出现了这个现象,其实跟咱们上边这个S写的有问题。说明这个circleq有问题啊,那这个是咱们往那个往哪,这是咱们往那个呃,Dwtsk topic往这里边导数据的那个circleq,那我们往d wtsq topic这个里边导数据,我们这个circle的主体的思路是什么呢?咱们circle的主体思路是这样的啊给大家说一下,就是首先我需要先从这张表里边,就是每天往里边导数据的时候啊,我需要先从这里边呢,诶拿出来他原原原来的这个历史数据,原理数据,然后呢,和我们今天这个今天的这个,诶这个商品行为进行这个比较。
01:28
对不对,那我可能有一些老的商品,诶,我这个需要去修改某些值,比如说那个什么累计被下单次数啊等等等今天又下单了,是不是得改呀,对吧?那可能还会有一些新上架的这个商品是不是会出现啊,对不对?那我要怎么去处理,对吧?那也就是说我们需要去做一个这样的比较,看看哪些要改,哪些不改,对吧?那比完之后,我们最终要返回的结果应该是哪部分,应该是从这儿是不是到这啊。对吧,因为我们要返回就是全量的,全量的,也就是说他俩进行一个诶for,这是我们整体的一个思路,整体一个思路啊呃,然后这边呢。
02:01
呃,咱们这儿下边除了让这个就是新数据和老数据进行这个full之外呢,下边咱这还做了一件事,这也不知道前面有没有提这个事儿啊,就这我们还让这个新旧转完之后付了,转完之后是不是就得到这个结果了呀,我们还让这个结果呢,又去和这个商品的维度表DWDDSQ和商品的维度表进行了一个join,进行一个什么draw呢?进行一个left join left left返回的结果是什么?返回结果应该是这部分所有数据都返回,那left round完之后,我们为了干什么?我们单纯就是为了拿一个东西,拿谁呀?单纯为了就是拿一下这个商品的SD。商品的SQID啊,PU ids PU ID啊,我们单纯就是为了拿这个值,拿它OK,那拿它的时候,那咱们跟那个按照常理来说,这边也不会出什么问题对不对,但其实问题恰好就出在了这个这个位置。
03:00
就是去和这个商品表,商品维度表进行转的这个位置,那大家可以想一想这块为什么会出现这个问题啊,你琢磨琢磨这张表咱是一个什么表。是一个维度表啊,没错,那是一个什么样的维度表,是一个什么维度表,它是一个全量的维度表吧,嗯。全量维度,什么叫全量维度表,就是每日全量对吧,也就是他这个表呢,首先是一个分区表,然后以每一个分区里边存的是什么样的数据,每一个分区里边我存的都是全量的数据。对不对,每个分区都存在全量数据,那我们跟这样的维度表进行join的时候呢,你得考虑考虑一个问题啊,你join应该是什么,你join应该是诶全量的最新数据,全量最新数据,也就是说你跟这种全量维度表join的时候呢,你应该只join什么,只join它那个最新的这一天的这个分区就够了,而不是去join全表。而不是去join全表,这个大家记住,那为什么咱们这join全表之后就会出现这个数据的重复问题呢?它是这样的啊,那前面咱们这个两张表,这个特转完之后呢,比如说咱们给它当一个区表,比如说就这样,那OK,这里边我可能有一个SQID是一。
04:14
但是你照这张全表的时候,那这个一这个商品是不是有可能在他这张表的每一个分区都出现过,对不对,因为每天都是全量嘛,都出现过,那OK,那这时候我们俩进行join的时候,也是这个表和这个表进行join的时候,那我返回的结果应该是怎么样的?上首先这一行数据它能不能join唤上,能照唤上,那这个跟它能不能也能照唤上对不对,那OK,这时候呢,我就会返回两行数据,那这时候就会导致咱们这个商品的主题宽面当中同一个SQID我出现两次。当然咱们导了两天数据,导两天数据呢,那你就可能会出现四次。因为咱们是两天两天的倒的嘛,对吧,有可能会出现这样的四次,是这样的啊,所以说这边呢,大家要注意,大家要注意,那也就是说咱们看这两天的数据,你看这个是不是出现了四次啊,那这个呢,它也出现了这样的四次,其实是这么回事。
05:08
呃,这个大家得注意到,那也就是说咱们说白了,原因找到了,那这边应该怎么改呢?应该怎么改,改的时候这么去改,那咱们就得这么去写了啊,那就得CTRLX。然后呢,这边你得JOIN1个子查询了来,我我直接在这改吧,改完之后我再给大家把这个笔记再发下去啊,那应该是select select select型from这张表,然后后边呢,得加一个whereer where dt dt得等于咱们最新一天啊,那最新一天,那最新一天应该是诶哪天呢,2020杠零三杠幺零,诶只要这一个分区的数据不要让它和全表进行,这个大家得记住啊,那这边呢,咱们得起一个别名,别名它这个咱们就叫呃,SKU这个下游线,诶in吧,S in啊让它进行,那下边这个名改了,那我下边进行的时候,是不是这个on的条件是不是也得改呀,给CV改成它,那同理,上边我选s po字段的时候,那个别名是不是也得改一下啊,就这个位置啊,咱么得改CTRLV。
06:18
呃,然后呢,保留这个好好,那现在咱们这个circle就是正常的了啊,呃,原因就出在这个地方,原因就出在这个地方啊,这个应该是笔记,当初那个还是有点小漏洞啊,这个笔记我一会再给大家更新一把,好,那这个原因咱们就分析完了啊,那所以说如果说你要是这么去写这个circle的话呢,那我们DWT层的这个商品主题款表,它是不会出现这个数据的重复问题的。诶,这就不会出现了啊好了,那这个完事之后呢,我们把这个视频先录一下吧,好了。
我来说两句