1.了解表中字段和解析
事实表设计:
Xnip2020-06-29_13-45-05
维度表设计
Xnip2020-06-29_13-47-43
维度表的数据一般要结合业务情况自己写脚本按照规则生成,也可以使用工具生成,方便后续的关联分析。比如一般会事前生成时间维度表中的数据,跨度从业务需要的日期到当前日期即可.具体根据你的分析粒度,可以生成年,季,月,周,天,时等相关信息,用于分析。
创建 ODS 层数据表
我们在hive中新建表来承接
1.原始日志数据表
drop table if exists ods_weblog_origin;
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 delimited
fields terminated by '\001';
2.点击流模型pageviews表
drop table if exists ods_click_pageviews;
create table ods_click_pageviews(
session string,
remote_addr string,
remote_user string,
time_local string,
request string,
visit_step string,
page_staylong string,
http_referer string,
http_user_agent string,
body_bytes_sent string,
status string)
partitioned by (datestr string)
row format delimited
fields terminated by '\001';
3.点击流 visit 模型表
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,
outPage string,
referal string,
pageVisits int)
partitioned by (datestr string)
row format delimited
fields terminated by '\001';
然后分别导入数据到这些表中。就完成了第一步。
2.明细表、宽表、窄表
概念
事实表的数据中,有些属性共同组成了一个字段(糅合在一起),比如年月 日时分秒构成了时间,当需要根据某一属性进行分组统计的时候,需要截取拼接 之类的操作,效率极低。
image为了分析方便,可以事实表中的一个字段切割提取多个属性出来构成新的字段,因为字段变多了,所以称为宽表,原来的成为窄表。
又因为宽表的信息更加清晰明细,所以也可以称之为明细表。
明细表(宽表)实现
建明细表 dw_weblog_detail:
drop table dw_weblog_detail;
create table dw_weblog_detail(
valid string, --有效标识
remote_addr string, --来源IP
remote_user string, --用户标识
time_local string, --访问完整时间
daystr string, --访问日期
timestr string, --访问时间
month string, --访问月
day string, --访问日
hour string, --访问时
request string, --请求的url
status string, --响应码
body_bytes_sent string, --传输字节数
http_referer string, --来源url
ref_host string, --来源的host
ref_path string, --来源的路径
ref_query string, --来源参数query
ref_query_id string, --来源参数query的值
http_user_agent string --客户终端标识
)
partitioned by(datestr string);
通过查询插入数据到明细宽表 dw_weblog_detail中
insert into table dw_weblog_detail partition(datestr='20181101')
select c.valid,c.remote_addr,c.remote_user,c.time_local,
substring(c.time_local,0,10) as daystr,
substring(c.time_local,12) as tmstr,
substring(c.time_local,6,2) as month,
substring(c.time_local,9,2) as day,
substring(c.time_local,12,2) as hour,
c.request,c.status,c.body_bytes_sent,c.http_referer,c.ref_host,c.ref_path,c.ref_query,c.ref_query_id,c.http_user_agent
from
(SELECT
a.valid,a.remote_addr,a.remote_user,a.time_local,
a.request,a.status,a.body_bytes_sent,a.http_referer,a.http_user_agent,b.ref_host,b.ref_path,b.ref_query,b.ref_query_id
FROM ods_weblog_origin a LATERAL VIEW parse_url_tuple(regexp_replace(http_referer, "\"", ""), 'HOST', 'PATH','QUERY', 'QUERY:id') b as ref_host, ref_path, ref_query, ref_query_id) c;
这里就涉及到了表的嵌套查询操作。需要注意的是首先分析最里层的查询,再逐级分解。用里层表的字段名称对应外层的字段名称进行对比。
流量分析常见分类
指标是网站分析的基础,用来记录和衡量访问者在网站自的各种行为。比如我们经常说的流量就是一个网站指标,它是用来衡量网站获得的访问量。在进行 流量分析之前,我们先来了解一些常见的指标。
基础级指标
PageView 浏览次数(PV):
用户每打开 1 个网站页面,记录 1 个 PV。用户多 次打开同一页面 PV 累计多次。通俗解释就是页面被加载的总次数。
Unique Visitor 独立访客(UV):
1 天之内,访问网站的不重复用户数(以浏 览器 cookie 为依据),一天内同一访客多次访问网站只被计算 1 次。
访问次数(VV):
访客从进入网站到离开网站的一系列活动记为一次访 也称会话(session),1 次访问(会话)可能包含多个 PV。
IP
:1 天之内,访问网站的不重复 IP 数。一天内相同 IP 地址多次访问网站只 被计算 1 次。曾经 IP 指标可以用来表示用户访问身份,目前则更多的用来获取 访问者的地理位置信息。
复合级指标
平均访问频度:
平均每个独立访客一天内访问网站的次数(产生的 session 个 数), 平均访问频度=访问次数/独立访客数(vv \ uv)
人均浏览页数(平均访问深度):
平均每个独立访客产生的浏览次数。人均浏览页数=浏览次数/独立访客。(pv / uv)
平均访问时长:
平均每次访问(会话)在网站上的停留时间。体现网站对访 客的吸引程度。平均访问时长=访问总时长/访问次数。
跳出率:
跳出率是指用户到达你的网站上并在你的网站上仅浏览了一个页 面就离开的访问次数与所有访问次数的百分比。是评价网站性能的重要指标。
网友评论