00:00
好,那既然咱们要把此库当中的数据呢,导出到咱们的这个,呃,呃这个have,呃,这个MYSO把A,呃把ADS层的数据呢,导出到咱们MYL当中,既然要导,那你你说你买S当中得得怎么样啊,是不是必须得有得有一些表去呃接收咱们a Di层导过来的数据啊,对吧?那所以我们要做第一件事儿呢,就是在买SQL当中呢,去创建哎,咱们这个表。啊创建表,那关键是建表的时候呢,我们需要考虑哪些问题啊,建表的时候咱们需要考虑哪些问题。嗯,建表的时候需要考虑哪些问题啊。现在大家能想的第一点就是你这个ADS就是买so当中你建什么表呗,建什么表啊,是不是ADS有什么表买这个当中就建什么表就完事了呀,对吧?那当然这个建表呢,最好还是得跟跟哪儿啊,是不是得跟咱们那个呃做那个就是可视化的那个加我组的同事是不是得跟他们去沟通一下呀,对不对,你看看人家那边我需要的数据是什么样的,那你ADS层或者是你那个买S当中表那就应该是什么样的,反正总之一句话啊,就是你买S当中的数据跟哪的数据应该是一致的呀。
01:08
跟adi层的数据是不是也是一致的呀?啊,这个得搞清楚啊,得搞清楚啊,就是你买色当中有什么表,呃,你adi层有什么表,跟你买S当中对应的建容表就行啊,那再一个呢,咱们来说一下啊,就是我们买so当中这个表的字段跟ADS层这个表的字段应该有什么样的要求。是必须得一模一样,必须得一模一样啊,啊,这个一模一样体现在什么地方?一是表的这个字段的个数,那再一个呢,就是表的这个字段的顺序,这个必须得一样,为什么一样?因为前面也说了啊,我们把AADS层这个数据导到have,当导到MYQ当中的时候呢,咱们导的是啥呀?导的是文件对吧,对不对?所谓文件你导的是不是就是全表,那全表是不是所有字段都导过来了啊,那导导的过程当中是不是会根据你的分割符去解析每一个字段,然后放到买SQ当中对应的这个字段呀,对不对?所以说你这个字段的个数以及顺序必须相同,要不然的话,你买SQ这边呢,是解析不成功的,能理解吧,这是我们建表的时候呢,大家要注意的,第一个第一个事儿啊,就是买SQL当中的表,跟我们have ADS层的表呢,这是完全一致的。
02:19
啊,完全一致的啊,这就是这个行,那接下来呢,咱们去把这个表呢,给它建一下啊建一下,那在建表之前呢,我们在这儿呢,先建一个,诶这个库先建一个库,这个库呢,是我们后续专门用来做可视化展示的一个库啊,咱们叫做机贸report,就是报表嘛,啊那这个库呢,咱们先给它建出来。呃,打开这个一个可视化的工具吧,咱们在这儿建啊,会用那个script也能对接买色Q也能建啊,那我们在这建吧,来右键啊,然后呢,点击新建数据库,在咱们起名字叫做g ma,然后下游线re p rt贸report,那字符集呢,我们在这选择UTF8啊,那排序规则呢,我们选择UTF8-JACA,咱们还是选择这两个啊,然后点击确定。
03:05
啊,这个库就建完了啊,或者大家如果说不愿意这么建的话,你要想在命令行操作,我在这儿呢,也给大家把这个建库的语具准备好了,你也可以直接粘贴啊,把这个粘贴到那个命令行的客户端黑窗口啊,直接建也行啊,这样也行啊,这是咱们那个建数据库,那接下来呢,是这个建表啊,接来是建表,呃,那建表的时候呢,咱们刚才也说了,大家需要考虑这样两个问题,第一个呢,就是建哪些表,这样表跟ADS层一样就行,呃,那在这边我们表当中字段呢,也是跟IADS层跟它对应的那张表的字段一模一样就行啊,一模一样就行啊,当然这个一模一样的只是体现在这个字段的个数以及字段的顺序上,那字段的类型可能一模一样吗?不可能,为啥?因为我们have当中的字段类型跟MYSO当中的字段类型它不是一一对应的吧,对不对?比如说我们have当中字符串类型是啥呀?String啊,那买so当中有死string类型吗?没有啊,它叫我叉对吧?啊,那所以这块呢是有区别的,大家要注意区分啊,但是呢,这个大致上应该得对应上才行啊好,那正常来说呢,我们在这儿要建表的话呢,需要建ADS是不是一共有20张表啊,那咱们需要做20张啊,但在这边呢,我们没有把这个所有本都建出来了啊,我们建了这样的两张,一个是这个,诶会员主题表啊,其实它对应的应该就是哪张表,就是我们会员主题当中这张。
04:24
啊,Ad层就是它啊,我们对应是这个啊,咱们建立一个这张表,那还建了哪张表呢?还建了下边还有一个地区主题,地区主题这个其实就是咱们之前没有做的那个需求啊,就这个里边是不是放放了咱们当天每一个省份的各种统计信息啊,对不对,咱们建立这两张表,那其余的表呢,在这儿咱们省略了啊省略了那也就是后续我们做可视化展示的时候呢,我们也就是说给大家演示一下这两张表,咱们怎么做展示就行,那其余的呢?呃,基本思路是一样的,所以说咱们这儿没有都建出来啊,建这两张就行啊,那正常咱们自己开发的时候,假如需要建表的话,那其实你就直接怎么建就行,是不是找到你那个库,然后右键是不是通过这种什么方式啊,通过这种就是向导的方式去建表就行啊,比如说新建表,那这边呢,呃,你可以右键,然后新建表。
05:16
那这里边是不是有什么字段,然后字段类型是什么,那包括是不是那个主键,那是不是直接点击就可以啊,正常你这么剪就行,但是这边呢,我给大家已经把这建表语句准备好了啊,所以这边呢,就直接复制这个建表语句就行,来我们新建查询好,那咱们先把这两张表建出来啊,然后呢,我一会儿再给大家补充一点,这个见表的时候呢,这个注意事项一会儿再补充啊。来,CTRLC。CTRLV啊好,那我现在把这个先运行啊,表已经建出来了,那完了之后呢,我们看下一个建表语句啊,也给它拿过来。嗯。放在这儿。
06:02
好,那这两张表建来了,其余的表呢,我们就不再演示了啊,就省略了啊,其余表咱们就省略了啊,这也写了其余ad层表略啊好,那现在表已经建出来了,我现在再给大家来,诶看一个东西啊,这个键表语当中呢,我们是不是都声明了primaryk啊,PMPK这就啥呀,这就是。这就什么呀,这就是主见对吧?啊,这就主见primary k啊,那你会发现这两表都有主见啊,都有主见啊,那这边我们为什么一定要给这个表建主键呢?现在买三当中键表,我们也可以不加这个主键约束,对吧,你可以不加,不加主键呢,也没问题,也不会报错,对不对,但是在这儿我们为什么要加主键呢?为什么要加主键呀?这跟什么有关系啊?其实这个呢,是跟我们刚才给大家提到的,咱们那个SCO,它导数据的这个,呃,重复数据重复问题的一个解决方案啊,主要是针对他的,我们SCO呢,刚才也说了,每天从MYSQ,当从那个have当中往MYSQ上导出去,是不是导的都是全表啊,每天都是全表,那scoop呢,他给我们提供了一个这样的机制啊,它可以利用MYSQ当中的这个主键冲突。
07:14
啊,来解决这个数据的重复问题,就是它可以有一个这样的机制啊,就是你每天把have当中的数据啊,导到my soq当中的时候呢,我可以根据什么呀?如果说假如说举个例子啊,买色如果说咱们这张表有主件啊,那你往里写的时候,假如说我这里边已经有ID主键等于一的这条数据了,那你到了第二天你再往里边导ID等于一的数据,它会报一个什么样的错误啊,是不是主键冲突啊,对吧?因为主键必须保证唯一性嘛,对不对啊,那这样一来的话,它有这个冲突,它这条数据呢,就不往里边写了,那是不是能够解决咱们这个数据的重复问题啊,对不对,其实咱们在那儿之所以建主件呢,是为了诶满足它的这个机制了啊,满足这个机制啊,行,那这个怎么满足,怎么配scoop呢?咱们后续再教大家啊,然后现在我们要面临的一个问题啊,就是咱们这个表的主键应该怎么选择。
08:04
啊,怎么选择这个表的主键,因为我们在have当中,ADS层咱们电表的时候有声明主见吗?没有对吧,咱们在have当中是没有主见的啊,没有特地没有,就是很明显的声明这个主见没有声明啊,但咱们得知道哪个是主见啊,咱们得知道啊,那接下来咱们看看大家能不能选啊,会不会选,我们来一起看一下,比如说ADS层,你比如说以这张表为例。活跃设备数就这张表,他应该谁作为主件呀?DT,这肯定地T对吧,一天一条数据,是不是日期能够唯一标识一行数据,那就是这张表,我们要选主件的话,就选地T作为主件就行啊,那下边这个呢,新增设备它谁作为主件呀,可是这个日期没问题吧,那接着往下留存率,留存率这个谁作为谁谁作为主件。也是统计日期是吗?这个也是统计日期行不行?
09:01
行不行,这个统计日期咱怎么来的呀,你看啊,下面是咱们有一天样例数据,对吧,你看。日期,这剩一个统计日期吧,哎,六月15这条是不是也,六月15这条也是六月数,也就是我们一天往这张表里是不是导三条数据,这三条数据的统计日期是不是都是那个Dollar do date呀,对不对?所以这个东西能作为主键吗?很显然不能,主线必须得是唯一的,对吧?那你这三条都是它,那这个肯定不能作为主线,你看那这个表谁作为主见比较合适呢?谁做主件比较合适啊?新增日期作为主键。好像也不行,对不对,那到底谁作为主线呢。诶,你得明确啊,我们这张表当中它的一行数据是什么,是不是一个咱们计算出来的一个留存率啊,对吧?那我们留存率的唯一标识应该是什么?是哪一天的几日留存对不对?那所以这张表的组件应该是一个复合主件,应该用谁呀?可read date加上retention date,它们俩是不是组成一个复合主件,那这个是不是就能够唯一标识一行数据了呀?
10:09
能理解吧,你看选主键的时候呢,咱们得去注意一下啊,就是你必须得选一个能够唯一表示这一行数据的字段,或者是多个字段作为咱们的这个主键才行啊,这个必须得注意啊,好,那咱们再往下走啊,再往下走,呃,看看还有没有其他比较特殊的啊,你像这种东西,这个统计日期呢,就可以作为咱们的主件啊,这个东西统计日期就可以作为主件啊,那再往下其他的呢?呃,其他的其他的应该就比较简单了,你像这个也是同学日期,我看还有没有特殊的啊。来看一下我们刚才自己建的表吧,来找一下自己建的表。呃,我们自己建代表的主件,我们看一下诶在哪往下翻在这个位置啊好,我们不是一共建了两张表吗?一个是user user topic user topic主建的,我们就第题这个没问题对吧,一天一行啊,那下边那个地区主题的主件咱们用的谁呀?
11:05
看一下谁。这是谁呀?咱们用的是DT和ISO code的,对不对啊,那接下来我们来看一看,咱们分析分析,那这张表的主键还能不能是其他的啊,来我们看一下啊,地区主题表,地区主题表。啊,地区主题表,那咱们地区主题表我们先说啊,我们每天会往ADS层导几条数据啊。ADS这张表里,我们每天往里边导几条,是一条吗?是不是34条啊,对不对,我们每天往ADS这张表里导的是不是都是一天咱们34个省份的当天的统计值啊,对不对?那所以说一天是34个省份,一天34个省份,也就是说一天34条数据,那这34条的数据,它的那个统计日期都是多少,是不是都是当天日期,所以一个BT是肯定不能作为主件的,对不对?那这个到底谁作为主件比较合适呢?
12:03
谁做谁做主件呀,是不是也得是一个复合主件用日期再加上一个地区的唯一标识,那是不是就能作为咱们主建了呀?哎,那它就是一个唯一的吧,对不对?那这个用谁谁可以唯一表示一个地区啊,ID,这个ID是不是就那个地区ID它可以吧?那pronce name省份名称能不能唯一标识一个地区也可以吧?那area code呢?这可不可以,这也行,还记得area code是什么吗?这是我们国内通用的一个地区编码,能够唯一标识一个省份对不对?那它也可以,那它行不行?ISO的还记得是什么吗?这个是国际上咱们通用的一个标准,是不是也是用来唯一标识一个省份的呀,对不对?那咱们这儿为什么要放一个ISO code啊,这个其实纯粹是为了给我们后续的那个suicide可视化展示去用的啊,因为suicide这是一个开源框架啊,一开源的开源的它是不是由国际上开源的呀,对不对?那所以说它肯定不能识别咱们自己国内的地区编码,那用的是什么呀?是一套国际上的标准啊,那所以咱们这儿呢,往这放了一个ISO code,国际上通用的一个地区编码标准啊,然后呢,就是为了让superce能够识别啊,也就是它呃,也是能够唯一标识一个省份的啊,那这样一来的话,那这四个字段是不是都可以唯一表示一个省省份呀,那所以咱们这的主键呢,其实你去选择的时候呢,这个可选的这个余地就比较大,你是不是可以用DT加ID,也能用DT加provice name啊,DT加every code dt加ISO code是不是都是可以的呀,都行啊,那在这咱们选的是谁选的是DT加ISO code。
13:44
啊,咱们选的是这个啊,选择这个啊好,那这个呢,就是我们呃这个键门语的这个主键的选择啊,这个大家呢,需要去注意啊,需要注意啊好,那我们现在总结一下啊,就是我们使用scoop把have当中的数据找到my circle当中的数时候呢,我们需要呃这个在买当中建表,那建表的时候咱们注意事项应该是什么啊来首先我们先说这个第一点啊,就是在买当中咱们建表的时候,咱们建哪些表跟ADS层一致就行啊,ADS有啥,咱MYSQ就有啥,那再一个呢,MYSQ当中字段呢,应该和我们have ADS层的表的字段是不是必须得保持一致啊对不对,这个保持一致体现在两方面,一个是字段的个数,还有一个呢是字段的顺序啊,这个得注意啊,这得注意的啊,然后再有一个呢,就是我们在买当中见表,我们所见的表必须得有主键啊,须得有主键啊,那这个主键的选择呢,就是大家需要去。
14:44
注意的一个事儿了啊,那选择主键的时候呢,我们必须得保证你所选的这个字段能够唯一表示这一一张表当中的一行数据啊,唯一表示啊,这个一定要注意啊,这就是我们在买磁当建表的时候呢,大家的这个注意事项啊,主要就是这么多啊啊那视频我录一下啊。
我来说两句