00:00
好,各位同学呢,那接下来呢,我们就先完成咱数据仓库的工作流程当中的最后一步,也就这个HDFS到my circlele,对吧,那刚才也分析了这一步,我们要做的就是使用scoop去做这个数据的导出,对吧?啊啊,那这个怎么导出,一会再说,我们现在首先要做的是啥呀?是不是得先在咱们的买so当中是不是建一个库,然后呢,建若干张表去保存我们从ADS层导出来的数据啊,对吧?啊,那这个建控卷表我们先来做一下,OK,那首先在这儿我们需要统一的创建一个数据库,这个数据库呢,就叫做JA report report是不是就是报报报报表的意思啊,对吧?啊然我们所有的表呢,都都建在这个库下边,好,那建库的时候呢,可以使用啊这个这样工具去建,或者说也可以使用啊,咱们下边提供的这个建建库语句去建啊都可以啊好,那接下来继续往下走啊,下边是不是就是我们要建的每一张表了,对吧?啊,那这个建表的时候呢,大家要注意这样的几个问题,咱们刚才其实也已经提到了,我们再总结一下,首先第一个问题,什么问题?
01:03
咱得干啥呀?第一个问题呢,哎,就是哎,我们这个表需要与ADS层的表,它这个数量得是得是一致的,对吧?啊as什么表,那MY咱是不是建相应的表对吧?那其次呢,更重要的就是我们这张表当中的字段啊,啊MY里边建的表字段必须得跟have当中的表示字段完全一致,这个一致体现在什么地方啊,第一个地方就是字段的数量,数量必须一致啊,那第二一个问题呢,就是字段的顺序啊,因为你导过来的是什么是文件对不对,所以你这个字段顺序跟ADS层这个字段顺序是不是也得一致啊,对吧?那再有一个就是字段的类型,这个类型呢,当然没有办法保证完全的一致啊,为啥?因为MYSQ当中的数据类型跟havel当中的数据类型是有有一定的区别的,对不对?比如说我们以字符串为例,MYSO当中字符是啥呀?是watch串对吧?那这个have当中呢,是随针对不对?那当然呢,虽然这个名字不一样,它们俩本质是一样的,对不对,所以。
02:04
和大家要做这个呃对应啊,做做对应就可以了啊,OK,好,那这就是我们在买思当中去建表的时候的几个注意事项啊,那在这儿呢,我们这些建表语句都给大家提供好了啊,那接下来呢,我们把这个库和表创建出来啊,我们先去创建一个数据库,在这我就用这个工具去建吧。打开那。完之后呢,哎,连一下,连一下之后呢,我们新建一个数据库右键,然后呢,新建数据库里边呢,我们起名为g ma report啊下面呢,我们选择一下这个字符集,在这呢,我们就选择这个UT8就行啊,那下面呢还是选择UTF8CA啊,咱们选它点击确定好,那这个库咱们就建好了,建好库之后呢,咱是不是就可以往里边建表了呀,对吧?那建表在这儿呢,我就使用那个界面就行啊,那我在这呢新建查询,然后呢,把咱这些界面语句全部给它粘贴出来,来往下翻。来底一下啊,咱们一共多少张表,一共12张对吧?买so里边一共12张啊,不是那个have当中一共12张对吧,咱们在那也要相应的建12张来,我现在先处理一下啊,咱们把这个所有的标题给它去掉,来CTRLF用一个正字匹配,匹配一个这个,呃,这个括号,那当然应该是中文吧啊中文,然后点二来一个星啊给它全部删除好,那ctrl a ctrl c粘过来,放在我们这个那K里边执行一下啊好,那现在ctrl a全部执行。
03:28
啊,如果没有问题的话呢,那这里边应该建出来的12张表对吧?啊,应该是没问题的啊好了,那到目前为止,咱们这些表就全部都建出来了啊,那接下完之后呢,在接下来咱们该干啥?接下来我们是不是得去写一个使用scoop啊,导我们这个数据的脚本啊,对吧?是这样的啊,那我们前面提到了啊,说我们使用S库导数据的时候,我们由于每天导的都是全表,这个全表啊体现在列和行上面,对吧?我们导的是全部的列以及全部的行啊全部的列我们需要注意的事项呢,是不是就是见表的时候,你对应的见就可以了,对吧?那全部的行,我们这需要考虑一个什么问题。
04:06
你导的是全部的行啊,是不是得考虑到我们这个数据重复的问题能没错吧?啊,那我们死库op去解决重复问题的时候呢,需要用到我们这个表当中的一个字段,这个字段什么一个或者是多个啊啊,这个字段必须得什么样的呢?呃,至少得是唯一的啊,啥意思呢?也就是说我们需要在买私募的每张表当中去指定一个主键,或者至少是一个唯一键,主键或者唯一键啊,那主键跟唯一键的区别大家应该能搞清楚吧?啊,主键就是非空,然后唯一对吧?唯一键呢,是不是就只要唯一就行了,对吧?啊,是这样的啊,那完了之后呢,我们来看一下我们怎么去找这个主键或者是唯一见,当然这个主见唯一见可能听起来简单对吧?但真正让你自己去指定的时候呢,你你可能你还真不一定能指定,对了啊,咱们举个例子啊,比如说我们现在以谁为例,我们以第一个需求为例,以访客统计为例,那你说这张表当中,我们要选择主见的话,你应该选谁?
05:05
这张表咱们要选主页,你应该选谁?有同学想到了DT作为主键,它能,它能够去唯一标识一行数据吗?它是唯一的吗?它是不是唯一的?显然不是啊,为啥我们前面是不是做过这个需求,咱们每天是不是这个需求会得到多条数据,那多条数据他们地T是不是都是一样的,对吧?所以地T肯定是不行的啊,那他不行用谁呢?那用谁呀?是不是应该是用多个字段呀,对不对,那多字段应该指是哪几个啊,DT加上谁,It new再加上谁,再加上谁,再加上China啊这个呢是我们第一个表的,诶这个这个主键它是一个复合主键或者联合主键,对吧?这个大家理解一下啊,那除此之外我们再往下走,哎,这儿是不是还有一个,哎,比如说路径分析对不对?诶那径分析你说我们应该选谁。是对,是不是应该作为我们的主键,但是大家一定要注意一下啊,用这四个字段做主键行不行?
06:16
不行,为什么不行,主件所有要求不能为空对不对啊,那你看这个target它是不是可以为空,而且咱们确实有这个target围空的数据,对吧,那所以说这个是不能用它做主建的,那我们怎么办呢。诶,唯一件是不是就可以了,对不对,因为此库分要求我们这张表是不是至少存在一个唯一键就可以了,对不对啊,你不一定非得是主见啊,所以在这呢,哎,你一会儿咱们就能看到啊,就是这张表我们对应的这个键呢,是一个唯一键,其余的都是主键啊啊那这个就是我们去声明这个主键的一个方式,你必须得准确的找到能够唯一表示一行数据的字段才可以啊好,那现在呢,我们去看一下买S当中,咱们这个键表语句其实二能看出来啊,诶比如说我们随便找一个啊,我们以它为例。
07:03
啊,这个是,那什么ADS库房是不是优惠券统计啊,对吧,那你看我们在最后这个位置。是不是就声明了一个这个primary key,也就是主键应该是啥?应该是DT,然后再加上这个库房ID啊,对吧?啊,这个没问题吧,啊,OK,那我们继续啊,好,那再往上走啊,再往上走,再往上走呢,比如说我们再看一下刚才咱们那个ADS层那个配置,Sta那个那个表,咱们搜一下来看看TRF应该是ad配置,呃,这个pass对吧,应该是这个观察,那这个我们刚才提到了,是不是应该理论上用这几个作为咱们的主,就是,但是由于target的可能为空,所以不能做主键,对不对,那所以说我平长。是unique key对吧?这什么意思,是不是就是唯一见的意思啊,这块大家理解一下就行了啊好了,那现在我们这个买so当中的库和表就全部建出来了,最终总结一下啊,建表的时候到底要注意哪些问题,第一个就是字段,字段顺序,字段个数,字段类型对不对,除此之外还得有一个什么。
08:02
是不是还得去建一个唯一键或者一个主键啊,对吧?主键和唯一键的作用是什么呀?是不?我们scoop需要使用到这个主键或者唯一键去干啥?是不是去解决咱们这个数据的重复导入问题啊,对吧?这个理解一下就行了啊好了,那到目前为止咱们所有的表就完事了啊,我把视频先停一下。
我来说两句