00:00
来咱们大家来一起这个跟我分析分析啊,那DW层咱们这个业务表,你说我们去导数据的时候应该注意哪些事项啊。DW层的业务表其实有点不太好伺候啊,为什么不太好伺候呢?这个里边这个特殊情况相对来说比较多。咱们来分析分析啊,找一下这个特殊表,首先。这两张表比较特殊,地区纬度表比较特殊,对不对?那它特殊在什么地方?只有第一天有它,后续就没了它了,对不对,那下边这个时间维度表呢,它特殊在什么地方,它特殊在我们导是一次性导一年,所以这个东西其实啊,不用放到脚本里,对不对啊,直接手动一次倒一年就行,那还有谁特殊啊。用户围里边比较特殊。它又特殊在什么地方呢?他有一个初始化。对不对,第一天是不是咱们执行脚本,第一天是没有他的,他他第一天的数据怎么过来的,是咱们使用scoop单独导的,对吧,它是初始化导过来的,那所以他呢,呃相当也比较特,它的特殊之处在于什么呀,在于脚本当中啊,这张表那个重复执行的任务应该是第一天的时候没有课本每天都有。
01:09
对不对,第一天是初始化嘛,手动挡啊,那这样一来的话,相当于我们这个要注意的事项啊,就有这几个,那这个东西时间表咱们不往脚本里写,好好处理,那地区维度表呢,相当于是只有第一天有的后续就没有它了,那像它呢,相当于什么呀,只有第一天没有后续每天都得有,对不对,然后剩下的表呢。那就是每天都打对吧?啊有这样的几个特殊情况,哎,那这个特殊情况咱们怎么去处理它呢。啊,有的第一天有,有的只有第一天没有啊,那这个怎么处理。来把这个脚本粘出来看一看,诶,我是怎么写的这个脚本啊,其实很简单啊,这都是小问题,就是脚本有点长啊,因为我把这个所有的表都放到一个脚本里了啊,其实这个这么去做的话呢,其实有点不太规范啊,同学们,呃,就是应该是尽可能的把这个,呃,咱们这些表呢,尽可能怎么做。
02:03
啊,给它分散开,就是一张表一个脚本,一张表一个脚本,因为这样一来,咱们任务是不是可以并行的提交啊,因为同一层实际上咱们没有这个前后的依赖关系吧,啊还是这个道理啊来,那现在呢,我们去看一看啊,这块咱们怎么处理一下,呃,我们把这个脚本先粘出来吧,来。CTRLV啊,看这个脚本,咱们能看懂这个脚本不太场400多行啊,400多行来其实就全是这个字段啊,字段比较多啊,您可以看一下我这其实这个circleq呢,写的三个三个circleq字符二啊,这有CIRCLEQ2,这有CIRCLEQ3,前面这个大的呢是CIRCLEQ1啊这三个circleq分别是什么呢?啊解释一下,先看CIRCLEQ2吧啊先不看SQ1。先看三个。来来,四块二,四块二里你看下是哪张表。地区表对吧,那S3的是哪张表啊。测三是谁?是咱们那个user infer his,对吧?这是咱们那个拉链表吧,对不对?拉链表一共两步对不对?一步呢,是合并数据放到临时表,第二步呢,是把临时表的数据呢,放到真正的拉链表对不对?这是相当于SQ3呢,是咱们的这个拉链表啊,OK,那既然看到这一步之后呢,咱们SQ一应就知道是啥了,对吧?就是剩下的左右表啊,当然得把那个时间维度表排除在外啊好,那这样一来问题就很简单了,你说我第一天执行的时候啊,执行这个脚本,你说咱们应该执行的是谁?
03:30
应该是CIRCLEQ1加上circle几二。对不对,那后续每天重复执行的呢,应该是SQ1加上SQ3对不对,就这么处理呗,所以说你看一下下边咱们那个传参怎么传的啊,哎,那如果说我传的是first,那我执行就是SQ1SQ2,那如果是all的话呢,就是SQ1SQ3,哎,我这个写法大家现在能看懂不,相当于说我在一个字符串二里是不是引用了俩变量啊,一个SQ1,一个CIRCLEQ2,那这么直接拼它会不会报错啊,会不会不会,为啥,因为咱们这个circleq啊,这个你说你看我这个字符串结尾这是不是有分号啊,这个分号是不是跟下边个分号能够跟下边这个circleq能够分开啊,对不对,因为咱们circle呢这边,呃,你其实它跟这个换行不换行没关系,它指认谁啊?
04:13
是不是只认分号啊啊,一个分号就表示了我一条测库结束了啊,只认分号啊,那这个呢,不用担心啊,这就是咱们这个脚本啊好,脚本搞清楚之后,Ctrl a ctrl这个C啊,那这张脚本咱们一会去使用的时候,咱们应该传几个参,传俩参,一个是first或者是O,第二个就是日期对吧?啊日期在上面到了二嘛啊,咱们把这个脚本粘出来啊,出来之后呢,我在102给它创建一下啊CD。哎,就在BI幕论啊起名咱叫啥名叫做应该是o.S层到DWD层啊,叫做DB.c是吧?啊然后把脚本粘过来,然后shift zz加上执行权限。Moded加X,哎,Odsdw d db.sh好,这个搞定,呃,那搞定之后呢,我们来看看这个脚本咱们到底怎么用啊,就是咱们第一天的这个数据到底怎么导啊,这块有一个,呃,第二小节叫做脚本使用说明,来咱们看一下啊,先看初次导入。
05:12
啊,那初次导入的话呢,首先时间维度表咱们得自己导对吧?啊一导导一年的,咱这个已经导过了吧,这个我在讲的时候已经导过了,如果没倒,大家没倒的话,自己去看一下4.4.5这一节就这啊这个怎么导,是不是已经告诉大家了呀,那这个已经导过了,不再重复啊往下看来,往下看这个表完事了,那接下来是用户维度表,那用户维度表呢,第一天导入我们需要做一个什么,做一个初始化对吧?那初始化这步咱们是不是也已经做了呀?诶做没做没做啊,初化没做啊,我只是把那个建表语句写了对吧,但是咱们没有没有做,咱们给这个初始化做一下,初始化就是。这就出手挖呗。对不对啊,这个初始啊,那咱们把这一步呢,给做一下啊来执行。
06:01
啊,这个初始化走一下。那它初始化完之后呢,应该在咱们DWD层的这个用户维度表当中,是不是应该有数据了,咱们找一下dwd dim user in for his刷新双击好里边有应有数据了,对吧,有数据了,当然这个S类都是,哎这个14号嘛,哎这个出R完成好,那接来往下走。那其余的表呢,那咱是不是就可以直接用这个脚本导了呀,直接用脚本导了,那当然因为咱们现在是测试环境,测试环境咱们那个日期是不是不能让它自动获取前一天呀,那我们得手动传,而且咱们现在是第一天对不对,第一天是不是应该是first,那我们应该执行的是这个命令。加上first,然后传一个六月14,没错吧,啊没错啊啊,这是咱们初次导入啊,初次导入那比较简单啊,那一会儿呢,咱们是不是剩下的表直接用这个脚本去倒一下就行了呀,那现在就让他跑着吧,那拿过来我所有准备工作都准备完了,这时候可以直接执行它来走你。
07:02
好,咱们让他导,然后呢,呃,初次导入完之后呢,后续我们所有的这个流程全开发完之后呢,那我们是不是得上线呀,对吧?那从15号开始,那我们就得每日定时调度了,那每日定时调度,那咱们这个脚本应该怎么出,怎么去使用呢?是不是应该这么用呢?Ass to DW db.sh,然后再传一个哦,然后日期呢,呃,日期你就得看你是你是那个上线还是测试了,如果测试的话呢,日期是不是还得传,如果咱们是这个真正的上线之后,那第二个参数是不是就不传了呀,每天自动获取前一天是不是就行了。啊,是这样的一个过程啊,啊,那这块呢,大家搞清楚就行了啊,那这个每日定时调度呢,咱们现在还做不到,因为我们现在只有14号的数据,我们只是做了一个什么呀,初次导入啊,每日定时调咱们得开发完之后才能才能去做啊啊那也就大家晚上自己做的时候呢,啊,就照着这个做就行啊,只完成这个初次导入就行,时间怎么做?哎,用户初始化怎么做,其余的表怎么做,诶照这个做就行啊啊那这边咱们就等它执行就行了,这个可能需要一定的时间,等他一会执行完之后呢,咱们抽查几张表看看结果就行啊好,那我把这个视频先录一下。
我来说两句