00:00
啊,好了,各位同学,那刚才呢,我们简单的说了一下,就是ods层的几点设计要求,对吧?咱在设计层要严格遵守啊好,那现在呢,我们就来正式开始设计咱们ods层的表结构,OK,那前面就提到过,那我们要设计OD的表结构,是不是得依托这个数据结构啊,那刚才也看到了,数据结构咱是有三种啊对吧?那这个我们只能是一种一种的来,对吧?那咱们现在就先从日志开始,OK,那现在呢,我再把咱那个日志的结构呢给它,诶拿出来,咱们照着这个日志的结构,咱们去好好的去看一看,看看这东西到底如何设计啊。呃,我再找一下刚才咱们的那个命令啊,执行一个history,呃,刚才哪个是咱们的这个日是这个对吧?那在这儿呢,你可以执行一个叹号,前面加上它前面那个序号就行啊,叹号219,那你就能执行这个对应的命令啊,直接回车,OK,好多同学,那现在咱们这个数据是不是就查出来了,对吧?那数据就摆在这儿了,那现在咱们一起来琢磨琢磨吧,我们到底怎样去设计这个所谓的日志,这张表,我才能去正确的解析这个文件。
01:00
对吧,怎样去设计?哎,我再明确一下这个文件当前的结构啊,他当是这样的,虽然大家看着乱啊,但实际上呢,这张表它每行就是一条完整的日志,是一个完整的杰森字符串,对吧?诶,那这就是咱们这个日志目前的一个文件的结构啊,OK,那我们现在要思考的问题对吧?就是我到底要设计一张什么样的这个表,我才能去正确的把这个日志是不是给它解析出来啊,对吧?啊,说白了,你只要保证一点就行,哪一点呢?你将来把这个文件给它漏到咱这张表里,我能够从表里把数据查出来,那是不是就就算是OK,就算是成功的,对吧?好,那分析分析吧,怎样去设计,其实设计这个表结构的时候,跟我们去熟悉一张表的结构的时候,其实要做的工作是一样的,是不是也是要明确它每行是什么,它的列应该有啥呀,对吧,对吧,OK,那现在分析分析,先说行其实行很好说,那我文件里边的一行是什么,那到了我这个表里一行是不是还是什么呀,对吧,这个好说,其实主要。
02:00
就是字段呗,对吧,来分析分析这个字段怎么确定,嗯,字段怎么确定,无非就是说,哎,你有几个字段对不对?完了之后我们每个字段类型是什么,是不是就这些东西啊,对吧?哎,琢磨琢磨吧,先说几个字段吧,嗯,怎么几个字段这个好像有点难度对吧?为啥难度?主要是因为啥?因为咱这是一个阶层色块对吧?而且每个尖字块的长度也不一样,字段也不一样,对不对,乱七八糟的,这个怎么设计比较合理?怎么设计比较合理?嗯,其实最简单粗暴的一个方式啊,你怎么设计就行。我对就一个字段,那有同学想到了就一个字段,那我这个字段是什么类型的呢。就死这类型,就字符串类型对吧?啊,OK,那相当于是我将来要怎么做啊,我是不是就直接把这一整条日志对吧,作为一个字符串是不是放到了这张表的一个字段下面了,对不对,能不能放进去,先说能放进去对吧,那发之后我将来能不能读呢?能啊,对吧,我是不是就直接select from,咱这张表只查这一个字段是不就完事了,你查来这一个字段值是什么呢?那是不是就是一条完整的阶层字符串了,对不对?但是大家都知道,你要想对数据进行分析,你你你查出来一个完整的字符串,这个东西没法分析对吧?你要想分析,你必须得拿到这个字符串当中一个一个的具体字段,是不是才有希望分析啊,对吧,那是这样的,好,那完之后,你现在这样做,你从表里肯定不能直接拿出来这个字段的值啊,你拿到的是一个完整的杰森斯负二,你要想获取这边的值,那还得怎么做呢?我们还得再进一步的去解析这个杰森字符二,对吧?好,那have当中我们怎样去解析阶森字符串的,其实有一个专门用来解析阶森字符串的函数,这个函数大家可能没用过啊,那像这我告诉大家这个函数是什么,这个函数呢叫做。
03:44
Get,然后呢,杰森下边有下线啊,G son,然后后边的是object OB get,杰森object,就这个函数呢,它一共需要传俩参数,第一个参数就是一个杰森字符串,第二个参数呢,就是一个K,就是一个K啊是这样的啊,完了之后呢,它是能够帮我们去获取一个阶森字符串当中的任意一个K所对应的VALUE6的啊,那当然它这返回的是不是就你传的K所对应的Y6啊,对吧?啊是这样的啊OK,那这实际上就是我们用来解析杰森字符块的一个常用的函数,OK,那也就是说实际上我们当前刚刚大家想到的这个比较简单粗暴的方式,其实总体来说还是可行的,对吧,是可行的对不对,也就是我在这儿呢,怎么设计,就设计一张表,这个表里边就一个磁缀类型的字段,完之后呢,我们就把一条完整的阶存字段放到这个字段下边,对吧?那将来我们从这张表里查数据呢,我一查查出来的就是一个完整的字段,你要想获取里边的字段,怎么获取呢,是不是?
04:44
我们再嵌套一个get接object函数,你就可以获取任意的字段拉,对吧?OK,那也就是说整体上来说这个方案是可行的,哎,是可行的啊,但是我感觉这个方案就是不是那么聪明的样子,对吧?啊是这样的,反正其实用起来也不太方便,说实话啊,哪不方便呢,就是说我这里边这么多的字段,我每个字段我是不是都要去使用这个函数去get一下呀,对吧,这个其实不太方便,哎,我OK,那所以这个呢,咱们作为一个保留方案啊,暂时先不用它,OK,那大家想一想,我还有没有其他更好的方案呢?
05:17
就比如说我能不能去这样去设计一张表,我让这张表呢,它的字段能够直接跟我们这个杰森字符串里边的字段给它对应上,对不对?如果能实现这样一个效果,那我们是不是就省去了get杰森object函数解析的这一步来,对吧,对吧?我表的字段能够直接跟杰森字符串的字段给它对应上,对不对?那相当于将来我直接怎么做,我直接从表里查这个字段就能返回杰森字符串当中,这个字段对应到value是不?如果能实现这样的一个效果,是不是就太完美了呀,对吧?OK,好,那能不能实现这样的效果呢?我们have物支持不支持这样的功能呢?实际上是支持的,哎,但是可能大家之前并没有这么去做过啊,那所以咱接下来呢,首先就得先熟悉一下,诶,就是说这种表我到底怎么去玩对吧?OK啊好,那接下来呢,给大家去明确一下啊,就是咱这儿其实提到了两种这个日志表的设计方案,对吧?一种呢,是我就建一个表,这个表就一个死选字段对吧?OK,这是一种方案,还有另一种方案呢,就是说我再建一张表,我这个表里面会有多个字。
06:17
啊,而这多个字段呢,是能够跟杰森字符串当中的字段产生这个映射关系的,对不对,那我只要从表查这个字段,对吧,我就能拿到字符串当中这个字段对应的value对不对?OK,这是咱们的第二种案,那显然第二种方案是不是要更方便一点啊,对吧?OK,那我们最终其实决定用的就是哪种方案,就是第二种方案,OK啊,好,那也就是我们现在呢,需要去建一张这样的表,当然没没学过,那所以我们接下来呢,得先学一下,就是这种表到底怎么去玩啊,好,那视频我停一下啊。
我来说两句