00:00
好,接下来呢,我们来看一下哈,我们现在呢是ODI层,上节课已经回完了啊,接下来我们开始做的是这个,呃,DWD层啊,DWD层呢,相当于是整个数仓当中最核心最核心的地方,那在这里面呢,主要是对用户行为数据进行解析,对核心数据呢进行一个判空处理过滤,那这个呢,其实我们这里面由于是数据啊都比较规范,我们就啊没去过多的去做这个判断哈,那对这个业务数据这块采用这个维度模型啊进行重新建模,简称维度退化,比如说一个是维度退化,另一个用户行为数据呢,是一个把它乘级,比如说even的事件。十张表拆成对应的十张表。啊,你这不是一张吗?对吧,一般它里面包含了十张表,那你要一一个一个的拆解出来好。那么首先看的是这个用户行为哈,我们首先处理的是用户行为的数据,用户行为数据呢,一共有两张表,ODI。嗯,那我们把这个启动一下哈,集群我已经启动了,那下一个呢,这个have启一下哈。
01:09
把写一下。现在这个have啊,启动起来比较麻烦,每次呢都得先起个福。好,那这样呢,这个have,我们就起一下。组团出道可以,你们班主任已经出道了。关键是。名声响彻上归谷内外。行,那我们柚子一下。呃,这个呢是我们之前ODI城建的所有的表,ODI城的表呢,包括业务的表和这个用户行为的表,对吧?呃,我们用户行为呢只有两张表,一个呢是ods even log,还有一个star,我看starlo在这呢。
02:03
在这里面log,那来看一下,看里面的数据长啥样,That from啊,OS start log。哇,太多了,我过滤一下好了。一共应该是1000条,嗯,行,那这里面看到了,这是OD层,它的原始数据长这样。那长这样的话,它目前是接成格式的,这样的格式不方便我们后续的一个处理,我们希望是什么呢?哎,希望是X对吧?啊,然后一就相当于出现的是这种形式。我们把这个。随便来一张表。我们希望看到的是这一列对吧?啊一列每一个字段里面存储着对应的这个值是这样的,并不是你一个接身串整体,你说你需要把这个接身进行进一步的一个解析操作,那这个数据怎么解析呢?
03:14
哎,怎么去解析这个呢。对吧?啊怎么解析接身,那解析接身这里面我们要准备一个B对象,也是把这个接身转换成我们对应的B这样的一个格式,那其实这个B呢,就是建一张表,表里面有对应的这些列啊,一个一个列就行了,好那么来看一下哈。OK啊,我们希望做到的呢,就是在这里面看。我创建一张表dwd starlo,也就是DWD层的lock,它这里面上边呢,就是我们的公共字段,下面是对应的这个解析出来的启动表示数据,我不知道你还记不记得哈,这个启动表长什么样?
04:00
这个好久不看了,可能有可能忘了哈,那这个呢,是在这个第一个文档里面。又开始转圈了,启动。这嗯,这个呢,你看这个呢,是具体的启动日志这个表字段对吧?啊,这里面是一些核心字段,但是呢,别忘了,除了这些核心字段之外,它还有公共字段呢。哎,你说这是一张标准的这个启动日志表里的数据,那这个启动表里的数据呢,就跟我们现在看到的。哎,看到的这呢是一模一样的,那如何把它解析呢。简单啊,你只需要刚才刚才说了,只需要你鉴定的表。这块比说首先你要创建一个D达D城时大的这个表啊,变成上面是公共字段,下面呢是你想要的这个时间字段,这些内容往这一放啊建好,建好之后你就需要把ODI城数据往里面加载。
05:03
对吧,嗯,那先看啊,先看这个表,这个表怎么建的啊,Job table if exist啊,DW startlo啊,昨天其实已经写过好几个了,所以这里面不再写了啊,然后呢,创建一个外部表,外部表的名字是这个,下面是字段,那再往下往下看看,下边呢,这里面要创建的是分区表,也就说一天一个分区。啊,一天一个分区这块变了。再往下这块变了啊,咱们之前ODI上存储呢,都是这个拉着螺方式对吧?哎,那这里面变成了PA qui加上拉着螺。他会在咱们在学have的时候是叫什么呢?就叫劣势存储,拉着罗呢叫压缩。对吧,也就压缩加上存储。啊,劣势存储这样的一个处理哈,那这样的一个劣势存储呢,它会提高你的这个压缩,压缩比会进一步的一个加大,同时呢,呃,它会这个提高你的查询处理。啊,是这样一个情况哈,所以说存储了一个啊,除了这个之外,在企当中还有一个用什么呢?Orc orc和在企业当中都是大量的一个使用啊,选择哪种的都有。
06:07
嗯呢,一般会跟这个Spark。后续这个Spark啊,比较配套的一个使用,因为这个Spark底层默认的就是个爬啊OK,那再往下呢,是这个location,比如说存储数据的位置啊,这个指定一下,那再往下,因为你说了,你光这个这么存储的话,它是列式存储,那如何配上拉呢?哎,帕的这个压缩,再加上一个拉着路,等于说这两条组合在一起。这个表才是一个列式存储,加上拉住往线数啊,其他地方都没有变啊,都没有变行,比如说我们目标是形成这样,那么在这个目标过程当中,我们需要做什么事呢?把这张图打开。啊,这是启动日志,Ods往DWD层转换的过程当中,我们的目标表是这样的,也是DWD层,我们需要的表是解析成这样,完全能够解析开的,那在这个解析过程当中,我们需要把ODI层的数据,这是ODI层哈,就说呃,你要向这张表里面插入数据,那这张数据哪来的呢?是来自于OD乘startup。
07:17
那在这个过程当中,这个一个一个字段怎么获取,通过一个叫get接object,这个是系统内部的一个函数,这个函数呢,就可以把你这个数据解析成对应的一个一个字段,就是解解析阶的,你看叫guide阶成object嘛,对吧?啊然后呢,你传进来这个lie,这个lie呢,就是OD成唯一的那一个字段。就是这一行内容,那后面这个点mind。这是什么含义呢?来看一下哈。看一下这个get接函数的一个用法啊。放大一下它的用法是这样的,首先呢这呢是输入的一个接身数据,那你看这个接身数据啊,这里面是格式比较复杂的,这是一个阶身数组,接身数组里面又嵌套了对应的这个阶层,对吧?啊嵌套两个阶层。
08:13
好,那如果如这个取出第一个接身对象,让你如何取出这个第第一个对象呢?那只需要get接身object传进来你这个接身串。然后这个这里面加上一个刀符,点刀符代表这个S阶整体,也就代表它一个整体。那点儿数组的第零号位置,那就是第一个值。哎,直接你一打印的话就是它。哎,就会把它取出来,就这么简单啊,那你像这个取出接身,呃,第一个接身的is,也就说取出第一个接身的is,把它取出来。把它取出来,怎么取呢?那也简单呢,只需要你哎这个get杰和get X杰森,然后还是这个Dollar符,Dollar符代表它本身之极,然后取出数组零对吧,数组零这是第一个,然后之后呢,数组零当中呢,点is。
09:04
你说如果是下面是接的话,直接点对应的这个K,就能取出对应的Y流值。啊,这就是盖接身的一个,呃,用法哈,用法行,那我们现在呢,来写一下哈,这个创建表,这个我们就。不搞了。嗯。嗯,放在一个这里面。好,这是这表语句啊,建表语句唯一的跟之前的区别呢,就是start as和下上下面这个爬,呃,Comp拉罗啊,那我们来一个。三二,哎呀。
10:04
移动哈,正常应该是移动,刚才搞错了,其我们来看一下哈,看一下不知道大家这个玩没玩过这个啊note notepad加加哈,那左侧呢,现在呢是这个是starlo啊dwd starlo对吧?啊这么一个表右面呢,我可以写对应的往里面去插入数据。往里面插数据怎么写呢?很简单,来吧,一点写inert int啊,Insert overright。Right table向哪张表里面插入数据呢?向这张表里面插入数据。啊,这里面都是这个all right啊,全部覆盖啊,不要ins射,因为ins射的话,它是插入一条数据之后,假如说这个这条数据出现了错误,我这样在重跑的时候,重跑的时候这条数据你你是in射了的话,它盖不掉,只有你是overright overright的话,直接把它全部盖掉啊宇宙覆盖行,那这一块呢,都采用all right,然后呢,后面呢,你这一个张表呢,它是一个分区表。
11:08
啊分级表,那你这块呢,就要指定这个啊partan啊partan,那partan的话,这里面就是DT等于2020杠零三杠幺零对吧?啊像这里面插入数据,那这里的数据哪来的呢。Start,然后from from的话,你这是DWD层,那我的数据就来源于ods层start了,哪一天的数据呢?DT2020杠零三杠幺零,对吧,这样的一个基本架构先给它写出来,那剩下的事儿呢,就是解析具体的一个一个字段。那解析这个字段呢,用到了谁呢?用到了get杰森OBD,我不对这么一个函数,那这个函数的特点呢是。
12:04
啊,你传进来谁,比如说这里面它只有一个字段,这一个字段就是那个了,就是那个了,然后你后续呢,哎,不能用这个单引号,用双引号啊,双引号双引号呢,然后刀乐符刀就代表的这个赖,其实这个Dollar符代表了谁代表它呀。对吧,阿代表它那这块呢,F3。我弄了一个工具哈,快捷键工具,呃,F3的话你会发现啊,这就是健身,这是这一行内容。啊,这强调那line的话,比如说到符第二,第一个key应该是设备ID吧,我看啊设备ID在哪找一下。啊这呢啊这呢啊m mid对吧?啊m mid那对应的这边呢,这个给它一个别名啊这样对吧,哎这样去做哈,然后下一个下一个呢,你可继续,那继续的话,这个就是。
13:05
那你看这里面找UID。UUID。哎,这样呢,去一个一个去写啊,我就不都写了,都写重没了啊,那都写的话,把这个拿过来。比如说在导入过程当中,你看上面这些呢,都是get进行object传进呢是这个一行内容,然后呢,这一这个当符呢,代表着一行内容,然后传进去P取出对应的Y流值啊Y流值,那把它拿回来吧。嗯,剩下的就是体力活了啊。你说把这块这样一搞定。就行了,对吧,哎这样就写完了,比如说把这个数据可以覆盖到里面去,我们测试一下啊,首先呢,建一个DWD层这张表C。OK,那这个表建完之后,那我们往这里面去导数据,导数据呢就是这种方式哈,Insert。
14:10
比如说核心呢,是用这个get object这个函数呢,在我们日后这个开发过程当中啊啊,会一个大量使用哈。非常简单。机器又开始转了哈,像这时候啊,有的时候啊,你可以这个测试一下,我看测到多少。33934,嗯,还差一些哈,还能扛住。行,结束了。行,那现在呢,我们就插入完了,插入完之后啊,这个一定要那个查一下啊from DW d。Start log start log limit limit。对吧,那现在呢,这里面就有数据了,而且呢,这个分区呢,是3月10号的数据,行,那你说这个呃,大表的数据呢,我们就已经搞定了哈。
我来说两句