00:00
好,那接下来我们开始搭建DWD层啊,那DWD层呢,被称为明细数据层啊,那这一层保存的是所有的明细数据啊,那咱的数据呢,分为这样的两类,那一类呢是用户行为日志,还有一类呢是业务数据啊,那现在我们先看用户行为日志。啊,那大家现在先想一想啊,我们日志的现状是什么啊,所谓现状呢,就是日志现在存在什么地方啊,那是以什么样的形式来在存储着啊,咱想一想。啊,这个其实不用想啊,那肯定是存在哪儿啊,肯定是存在OD层的唯一的一张日志表里啊,啊,对吧?那简单回顾一下这张表的表结构啊,首先它的每行数据是什么?是不是就是一条日志啊,那它的字段有哪些呢?那其实只有一个字段对吧?就是那个死针类型的烂字段啊,没错吧?那所以说我们现在这个日志呢,就是以一条字符串的形式来存在着,对吧?啊,大家想一想啊,我们要想对日志进行分析统计啊,那日志以一条字符串的形式保存着,那那方便咱们去统计分析吗?
01:06
那肯定是不方便的,对吧?啊,那我们怎样才能方便统计分析啊,那是不是需要对日志进行解析啊,那当然解析的时候呢,我们需要具做的具体的工作就是啥呀啊,就是把不同类型的日志放到不同的表当中啊,那再一个呢,我们需要把这个杰森字符串当中的每个字段解析出来啊,那这样一来,我们才能更加方便的对日志进行分析统计。啊啊好,那接下来我们就来想一想,怎么去解析这个日志是比较合理的呢。啊,那当然我们要想对日志啊进行解析,那我们有一个前提条件,那就啥呀啊,大家得得对日志的结构熟悉才可以对吧?啊,如果你对日志的结构都不熟,那没有办法解析。那所以说我们现在先来回顾一下日志的结构啊,那从结构上去看啊,咱的日志一共有两类,一类呢是页面买点日志,还有一类呢是启动日志啊,现在我们来看一看这两种结构啊,我们先看第一种。
02:08
啊,大家看一下啊,这就是一条完整的页面日志啊,那这个页面日志呢,是一个杰森的格式对吧?啊,那杰森当中呢,有很多的字段,那我们现在逐个的去看一看啊好,我们先看这一部分啊,那这一部分呢,我们称为公共字段对吧?啊公共字段那这里边儿呢,保存的是一些设备信息,用户信息,地理位置信息,应用信息等等等等啊这其实都是一些描述性的信息,或者说呢,是一些维度信息。啊,OK,我们继续往下看。那再往下呢,来有一个字段叫做actions对吧?啊注意啊,Actions后边是一个什么,是一个数组对吧?那这个呢,我们称为动作数组啊,那动作数组里边啊,它的每个元素是什么呢?每个元素就是用户在浏览当前页面的时候所做的一个动作。
03:03
啊,那因为用户在浏览页面的时候呢,可能会做多个动作对吧?那所以说在这儿需要用一个数组去保存这么多的动作啊好,这是action字段,那接下来再往下走,那下边这个字段呢,叫做对吧?那跟action一样,后边也是一个数组对吧?我们称为曝光数组啊,那曝光数字当中存储的就是当前页面的所有曝光信息。啊,OK,那继续往下走,那下边呢,就是这个日志的核心的字段了,就是配置字段啊,那配置字段呢,其实里边保存的就是诶一些页面信息,那比如说哎,我浏览的当前页面的ID是什么啊,那上页的ID是什么啊,那我是浏览这个页面浏览的多长时间啊等等等等,哎,在这里边呢都有啊好,接下来我们继续往下看,那下边呢,还有一个I字段啊,那I字段当中保存的就是错误信息,那当然指的就是我们在浏览该页面的时候,诶产生的错误信息啊,那最后还有一个字段是TS,这TS呢指的是我们跳入当前页面的这个时间啊,然后大家要注意的是什么啊,就是咱这个日志是以页面为单位的,也就是说,我们用户浏览一个页面,就会产生一条这样的日志。
04:16
啊,这是大家要注意的啊,然后还有一个点要注意,就是这个日志咱在这儿看到的呢,是一个最完整的页面日志的结构啊,但是呢,我们呃,真实的这个日志呢,可能不会这么的完整,比如说举个例子啊,假如说用户在浏览页面的时候呢,并没有做任何的动作,那OK,是不是X数组就没有啊对吧?那再有一个我们用户在浏览页面的时候呢,没有报错,那is是不是就没有?啊,这是大家需要去搞清楚的一点啊,OK,这就是页面买点日志的结构啊好,我们继续往下走,来看下一个,下一个呢是启动日志,启动日志的结构呢,要相对简单一点啊,我们点开PPT一起回顾一下。好,那这个就是一个完整的哎启动日志啊,那这里边首先我们看第一个字段,第一个字段是common字段对吧?那common字段当中存放的仍然是诶前面我们提到的那些,诶公共信息,那比如说设备信息,用户信息,地理位置信息,应用信息等等等等啊好接来往下走,那下边呢,就是诶这个start启动字段了啊,那启动字段当中包含了比如说启动方式啊,启动的加载时间啊,启动的时候的那个开屏广告等等等等这样的一些相关信息啊好,下边啊还有一个艾瑞,那艾瑞呢,仍然是错误信息啊,仍然是错误信息啊,那再往下走,那就是TS,这个TS呢,指的是启动应用的时间。
05:39
啊,OK,那这就是咱们的启动日志的结构啊,那同样道理啊,这个结构也是一个最完整的启动日志的结构啊,那当然我们拿到的真实的日志可能不是这么的完整,对吧?那比如说我们用户在启动的时候没有报错,没报错是不是就没有error啊,这是大家需要去注意的一点,OK,那我们刚刚就把这两类结构的日志回顾了一下。
06:02
啊好,回顾完之后,那接下来我们就来想一想啊,那我们解析日志的时候,那具体按照什么逻辑去解析呢。啊,那我们是按照这个日志的结构去解析,还是按照日志的内容去解析。啊,那按照日志的结构分类啊,咱们可以分为两类,一类是买点页面日志对吧,一类是启动日志啊那按照日志的内容去划分呢,诶我们有几类内容啊,诶咱这儿可以有五类对吧?一类是页面信息,一类呢是曝光信息,一类是动作信息,那还有什么呀,还有启动信息,还有错误信息。啊,咱有这样的五类对吧。OK,那咱们就来想一想,到底是按照结构去呃解析日志,还是按照内容去解析日志?啊,其实无论从哪个角度去考虑啊,我们按照内容解析日志都是比较合理的。啊,为啥?首先咱们思考一个问题啊,那你说是不是相同内容的日志,那他们的字段都是相同的呀?比如我举个例子啊,是不是所有的配置信息都是这几个字段啊,那所有的曝光信息是不是都是这几个字段?
07:11
没错吧,那这样一来的话,我是不是方便存储啊,对吧,那我同一内容的日志,我给它放到同一个表当中啊,因为它们有相同的字段啊,这个方便存储,哎,这是诶很很好理解的,那再有一个呢,我们后续啊去分析这个数日志的时候呢,那肯定也是按照不同的内容诶去诶做相关的统计分析,比如说统计一下诶我们这个页面的浏览情况啊,统计一下哎曝光的情况等等等等,那所以说不论从哪个角度啊去考虑,那咱们都是按照内容去解析日志是比较合理的。OK,那最终我们解析日志的大体逻辑呢?其实就是这样的,来往这看。大家来看一下这个PPT吧,啊好,那现在我们日志都存储在ODI层的,哎,这张日志表当中,对吧?这里边包含了页面日志,包含了启动日志啊对吧?那咱解析的时候按照什么解析,按照内容解析,按照内容解析呢,我们就需要将诶这个日志呢,解析到五张表当中,那分别是启动日志表,页面日志表,动作日志表,曝光日表,还有错误日志表啊OK,那当然呢,这五张表就保存在DWD层就可以了啊好,那这就是我们日志解析的一个大概的思路啊。
我来说两句