开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第三阶段): 网站流量日志分析—数据入库—ODS 建表操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/695/detail/12201
网站流量日志分析—数据入库—ODS 建表操作
整个建表需要创建事实表、维度表以及点击流模型表,当中来说,建表难度不大,唯一需要强调一点,就是表当中有哪些字段哪些模型,一定要跟数据对应上。
这个表为了方便发现是一个 partitioned 是一个分区表,今天的数据导过来之后,后面过段时间再去分析,如果说每隔一周分析一次,是不是把数据按照周来分析比较好,同样的要每天分析一次的数据表要为天,所以小技巧要注意到。
接下来具体操作,首先来到数仓当中建立一个新的数据库,打开服务器,当连接之后首先创建一个新的数据库叫做 IT 黑马 ,创建好数据库之后,使用切换的数据库,在这当中没有任何的数据。
首先创建一下原始数据表叫做 ODS 表。打开网站流量日志分析项目资料,当中有一个第三步数据入库 ETL ,当中有一个 ods-create sql,打开它,
drop table if exists ods-weblog-origin
create table ods-weblog-origin(
valid string,
remote-addr string,
remoye-user string,
time-local string,
request string,
status string,
body-bytes -sent string,
http-referer string,
http-user –agent string,
partitioned by (datestr string)
row format delimited
fields terminated by ‘\001’;
第一个表叫做原始日志数据表,再次强调,原始数据表对应的是 mr 处理完的数据,而不是买点采集的数据,这个表有 vaild 校验是否合法,是否有效,用户的IP ,用户的标识,时间,请求页面,状态码,发送的数据量,协议从哪来的以及终端信息,后面是一个分区时段,根据日期来进行分区,后面指定的是分割 row 01, 数据中也是0,所以写不写没有太多的问题。
接下来把表创建一下,上面第一条语序表示删除这个表,如果之前在操作可以删除,现在是新的库不需要执行它,把下面表复制过来,粘贴回车,这样就创建好第一个 ODS 原始数据表,
drop table if exists ods-click-pageviews;
create table ods-weblog-origin(
valid string,
remote-addr string,
remote-user string,
time-local string,
request string,
status string,
body-bytes-sent-string,
http-referer string,
http-user-agent string,
partitioned by (datestr string)
row format datinited
fileds terminated by’\001’;
接下来还要把点击流模型创建,第一个叫做点击流模型的 pageview 模型表,还有一项专注的是绘画识别,绘画停留几步和停留时间,所以有这些字段信息,还要打开进来的数据,结合数据确定一下,有 SOH,IP, 时间,步骤号,步骤停留时间等等,发现有所谓的 SOH ,用户标识,停留的时间,time-local,visit-step 等等,这些字段是数据当中确定的,因此一定要心细。也是一个分区表,点击流模型数据来自于原始数据的一个梳理,它是业务上的延伸扩展,是1号数据,点击流模型也是1号,建立顺序表与它保持一致,分割符是杠01,接下来复制,点击流第一个模型叫做 pageview,复制它来到当中做一个粘贴与之执行。
drop table if exists ods-click-stream-visit;
create table ods-click-stream-visit(
session string,
remote-addr string,
intime string,
outtime string,
inpage string,
referal string
pagevisitioned int)
partitioned by (datestr string)
riw formatdelimited
fields terminated by’\001’’’;
第二个点击流模型叫做 visit 表,它是点击流当中针对每个筛型做了一个起始和结尾情况的聚举,当中有这些字段,有绘画,用户进入时间,离开时间,进入页面离开页面,这就是点击流模型的 visit 模型表,创作数据表叫做 ods-click –stream-visit,这里有一个小技巧需要强调一下,在企业当中叫做什么名字,没有强制规定,但通常叫做以简短的英文表示该表的名字,不要用汉语拼音,更不要用中文,这样看起来易于别人的维护和阅读理解,创建好之后还是保持一样也是个分区表,分区阶段也是日期,因为在数据当中可以发现日期的字段,这里收集的数据是2018年11月1号的数据,所以说建立分区的时候要以日期20181101为分区字段,这是 visit 表模型复制一下创建,复制完成之后来到 have 当中右键粘贴,
drop table if exists t-dim-time;
create table t-dim-time(date key-int,year string,day string,month string,day string,hour string ) row format delimited flieds terminated by’
维度表的数据,在项目当中,以一个维度表为例,叫做时间维度,等下去分析数据的时候,可以从不同的时间维度来开展,时间,小时,月份等等,因此看一下维度表有哪些字段,第一个有一个无意义的主键( int year month day hour)可以想象一下,后面分析每一天确定天跟表进行关联就可以分析相关的指标。根据逗号来分割,之后说到为什么用逗号,需要看数据怎么生成来的,这是非常普通的时间维度表。
把这个表创建,创建完之后,使用命令叫做 show tables 看在数仓当中就存在原始的日志表和时间维度表以及两个点击流模型表,这个表现在当中当然没有数据,是创建表的结构,这样完成了第一步操作去创建 ODS 表的结构。
创建 ods 层表
表名通常以剪短的英文表示,不用汉语拼音甚至中文;
建表的时候表的字段顺序类型要和数据保持一致,心细;
通常企业中采用分区表进行优化,方便后续查询管理。