00:00
来,那现在呢,我们先看一下,把这个商品主题的DWT层的这个累积表的这个建表语句啊拿过来放在这。来吧,这个比较多啊,那首先那这张表当中我们得明确啊,这张表是一张什么表也是一张啊,是不是DWT层的课表啊,那要求这张表当中是不是也应该有全量的。SKU才对啊,全量的SKU是不是啊,那既然有全量的SKU,那咱们就得怎么做。就得怎么做,就得初始化吧,啊,这张表是能初始化的啊,它里边的数据主要来自于哪儿啊,商品信息加什么下单的,支付的啊,退款的,评价的,这在哪,是不是在我们的业务系统买搜当中都有相关的这个表去记录他们呀,对吧?既然有,那你是不是就可以拿过来进行初始化。这个没错吧,啊,这是可以进行初始化的啊,那他怎么初始化呢?啊,还是一样的道理啊,找到我们买刺客当中相关的表都是以什么方式导过来,转量同步的方式导过来,导到我们还有当中做一个临时表,然后呢,对我们每个字段呢,进行分别的这个计算。
01:07
计算相当于给他们都计算一个初始值嘛,做这个初始化啊,来保证这张表当中得是具有全量的SKU的啊,啊这点大家先明确啊,好,那明确这一点之后呢,我们再来接着走啊,这张表我们里边的一行数据应该是啥呀?应该是啊,指的是一个SKU吧,一行数据指代的是一个SKU的各种累计值。啊,这是一行数据,然后表当中字段呢,啊,就是所有跟这个商品维度相关的这个实时表的度量值,呃,当然呢,得是累计值了,对吧,得是累计值,好在这里边看一下啊。这一大堆是跟下单相关的啊,最近三十日的下单次数件数金额啊,累积的下单次数件数金额,那其实这里边啊,最好还得包含什么呀,还得包含那个最近什么七天的,最近15天的,最近诶60天的,其实一般情况下会有这么多啊,会有这么多啊75,三十六十,一般都是这样的几个时间节点啊好,那在这边咱们只有一个30的啊来往下走,往下边走,这是支付相关的啊,那下边这个呢,是啊退款相关的,这是加购物车相关,这是收藏相关,下边呢是评价相关啊,评价相关啊,跟我们DWS层也是对应的啊哎,就是这么多字段。
02:26
好,那这个circle咱们要写的话,初始化假如做完了,那我每天这个更新的逻辑应该是啥呀?是不是也跟那个主题是一样的,跟用户主题一样,U主题啊,是不是拿到这张表啊,里边的所有数据对不对,然后呢?啊,是不是还得拿到我们最近一天的这个啊,商品的各种行为啊,对吧?比如说今天这个商品被下单了多少次,被支付了多少次等等等等,拿到之后呢,是不是就可以更新这些累计值啊,对吧?当然咱们这儿是不是也有什么最近30天的呀,有最近30天的,你觉得怎么做?
03:00
是不是就得拿最近30天的数据啊,再给他计算,然后再给他修改一下呀,是这样的,这个其实跟咱们那个用会员主据是一样的,是一样的啊,所以这个搜索咱们不再手敲了啊,我们把文档粘过来,然后给大家解释一下里边的这个注意事项啊,来拿回来这个大S太长了啊。但是结构很简单,逻辑很简单,就是字段多啊。来吧,我们把这个重点的东西看一下啊,首先大致的结构呢,肯定还是所谓的这个新旧对比呗,新旧对比啊,那旧的数据是不是已经放在这儿了呀?D wtsq topic,这就是old对不对?那接下来咱们看这个new里边有哪些东西啊,看new是不是就是这个select,咱们看一下啊,这个一页都占不下啊,首先啊,我们先来看select,我是from哪张表。符哪张表是不是DWS层的SKUXN对count呀,对不对,然后呢,我过来数过滤出来的数据是哪哪哪一天呢,实该是最近30天的呀,这其实应该减多少啊,减29你得看前面是大于等于还是大于啊,如果是大于等于,那这个是不是就得是29才对啊,29才对啊,如果是大于的话呢,那就减30呗,对不对啊,这个搞清楚啊,这块其实应该是29,大于等于是29啊好,那这个拿过来之后呢,我们按照SKD进行分组,是不是把这个相同的SKO啊,它这个30天的记录分到一组里边来啊,然后呢,我们来看一下上面这些字段啊。
04:31
这一大堆字段,你看它是在求什么?啊,Some if对吧,如果说日期等于六月14。那我这个函数返回的是啥?是order count对吧,其他日期的呢,全按零处理,所以说这个返回的结果其实就是啥,其实就是6月14号,那这个SKU被下单的次数吧,说实话说白了也就是当日下单次数,那这个呢,当日下单的件数,当日下单金额,那这一大堆是不是全是当日的值啊对不对,那下边这个呢,直接求和。
05:09
直接求和就是啥?是不是对30天的数据直接求和,那是不是就是最近30天的下单次数,下单件数以及下单金额等等等等,对不对啊,上边全是当日的,下边呢是最近30天的啊跟咱们那个呃,会员主题是不是一样啊啊一样,所写本也是一样啊都统一了啊行,那这个完事之后呢,我们接下来就要做这个所谓的新和旧的一个对比了啊新旧对比啊,那新旧对比的时候呢,那你就按照咱们之前那个逻辑来呗,那咱们举一个小例子吧,咱们看一个就行啊,看一个就行。看下单相关的这个小主题吧,下单相关的啊,看这。不开。看这几个字段呗,对吧,这几个字段是不是先更新的,是最近30天的呀,对吧,你看最近30天的怎么做的啊。最近三天这个逻辑应该能看清吧,是old啊,这是咱们new new里边是不是最近30天的啊,最近30天有你,那我就用最近30天的值没有你,那就是啥,那就是你最近30天没有被下单,没有被支付,那是不是就是零。
06:12
对吧,所以说这个道理一样嘛,啊,那接下来下边这个,下边这个是啥?下边这个是各种累计值对不对,各种累计值啊,累积的下单次数,下单件数,下单金额,那咱们这的原理应该就是啥呀,这是old的,哎,这是new啊对不对啊,一个old的一个new啊,那我应该怎么做,我应该是不是用old的加上当天的下单次数,下单金额和下单的这个件数啊,对不对啊,那当然了,这里边我们需要考虑到这个no的问题,是不是这部分有可能是now,那这一部分是不是也有可能是now啊对不对,那这块得怎么办呀,怎么办。啊,那是不是就得判断了呀,对吧,如果这边为no,那我就按谁处理,按零,那这边为闹的也按零处理,其余的是不是就直接相加就行,对不对,所以说这个公式是不是都是这种啊。啊,那剩下的所有的这个字段都是一样的道,一样的套路啊,都一模一样啊,所以这个呢,咱们就不用再多说了啊啊,其实你要这么去看这个sir的话,是不是感觉也不太难啊,对吧,也还行啊,也不太难啊,就是字段做纯粹就是字段的啊,然后这里边还有一个小点需要给大家说一下啊,然后大家看一下啊,看哪看这。
07:21
我们这个SKU的主题表当中,它的主件是不是应该是SQID对不对,然后你看这它是不是还多了一个SPU啊对不对,这个s puu属于什么?应该是不是应该属于SKU这张维度表当中的一个维度字段呀?对不对,是不是。啊来我们去看一下啊,来CTRLF我们找到啊DWD层的bm s ku的找到这张表,那你看这个ID是不是就是SQID。那D是不是应该是这张维度表里边的一个维度字段,对吧?啊,那为什么咱们这张宽表要把PID这个维度字段也放在这里边呢?
08:06
啊,为什么要放在这里边,其实道理很简单啊,咱们之前其实也提到过这个问题啊,啊提到问题啊,就是我们实际上也可以怎么做呀,也可以将我们的维度表当中的字段直接怎么办,直接是不是放到咱们宽表当中,我这儿只放了一个PID,那我的什么什么三级品类,123级分类以及这个品牌等等各种信息是不是也都可以放在这儿啊,都可以放在这。啊,你放在这儿,那有什么好处,有什么坏处啊,那好处就是你后续如果说需要,呃,按照这个其他这个维度字段进行统计,比如说我按照品类我进行分个组,我按照商品再分个组,那你是不是就不用再去和维度表进行join了呀,对吧,我字段要放在这就不用再join了啊,那坏处是啥呀?坏的就是数据可能会容易一部分呗,我本来这些信息在我的商品维度表里就有,然后你这儿呢,你还要再存一份,是不是就会容易一点啊,对吧?啊是这样的,那所以说实际上我们呃,本本来就可以把什么把所有维度都放在这也是可以的啊,也是可以的,那这边我们只放了一个,为什么只放这一个呢?因为啥,因为因为po ID啊这个字段我们哎相对来说要更常用一些啊,因为大家都知道SKU puu是不是都可以作为我们商品的标识啊,对不对,所以我统计的时候呢,哎,我有时候可能按SKU统计,有时候呢按照s po统计啊这俩哎比较常用,所以说我把SSPD索性就直接给它写写在这里边了啊,那所以说大家这一点注意到就行了,好,那既然要把它写在这里边。
09:37
那你说我们应该从哪张表当中去拿PID呢?从哪出去拿呀?那我们在这里边写的这么多的这个,诶在这这个new里边这么多new里边有sidd吗?没有对吧,那我从哪去拿SPID呀,去哪拿呀。肯定去商品维度表里拿呗,对不对,咱这是不是有SQID,是不是能够根据SQID找到SPIID对不对,那也就是说你这除了要用old跟new进行全外联,你还得怎么做,是不是还得再去和我们的商品维度表去做一个关联呀,对不对,也就是咱们这儿呢,需要去join一下商品维度表,然后大家要注意了啊,商品维度表,注意商品维度表咱们是一个什么样的维度表,是全量维度表吧啊,你要去获取一个全量,去使用一个全量维度表的时候呢,我们一般只能是两种使用场景,一种是获取最新的全量数据,或者是历史上某一天的全量数据,对不对?我们不可能直接照全表的吧,所以说你看这我们照的时候呢,是不是照的是它最新一天的分区啊,而不要转全表,这个一定得注意啊,一定得注意啊,转就就注注意这块就行了啊,然后剩下的是什么,是进行这个重的方式,咱们这。
10:59
全的什么是left draw,其实在这儿呢,我们用哪种转唤方式都行啊,因为上边我old跟new转完之后,这已经是全量sko了吧,对不对,那商品表当中也是这张表,商品维度表当中是不是也是有全量sko啊,所以它俩是不是应该是SKID是相同的呀啊,相同你用哪种召唤方式结果都是一样的啊,这边呢,用left join也行,用inner join也可以啊啊,这是关于它,那再一个呢,就是你跟商品维度表示join的时候呢,你的连接条件应该怎么写?
11:30
这个是不是涉及到了多张表形状了呀?前两张表咱们用的是全外联。啊,全外联是不是应该得到一个这样的虚表啊,应该是这个虚表跟我们第三张这个维度表进行召唤吧,对不对?所以说你连接条件应该怎么写,是不是应该是n v l new.id的点ID得找一个不会no的ID去和第三张表进行召唤吧?啊这个咱们上午的时候是不是已经提到过了呀,这是大家得注意的啊,所以这块呢,就是这样一个小细节,其他的就没有什么了,其他就是全是常规的东西了啊好,那我把这个视频录一下。
我来说两句