大数据学习笔记之Hive(五):Hive分析项目分析

文章目录

  • 商业网站中经常统计的数据有哪些
  • 例子
    • 创建会话信息表db_web_ana.session_info
    • 创建临时表1
    • 分析数据并向临时表1中插入数据
    • 创建临时表2:db_web_ana.session_info_temp2
    • 向临时表2: db_web_ana.session_info_temp2中插入数据
    • 通过sessionId和trackTime将两张临时表join在一起后插入到会话信息表中:db_web_ana.session_info
    • 分析需要统计的数据,设计最终结果表,并创建之
    • 统计最终结果

商业网站中经常统计的数据有哪些

UV:独立访客
** 同一个用户访问多次会产生多个记录,但是这些记录会在运算的时候合并为1个
** 语法:count(distinct guid)

PV:页面浏览量
** 同一个用户访问多次,产生多条记录,每一条记录都是一次PV
** 语法:count(url)

登录人数:
** 登录网站访问的人数[普通会员,VIP,SVIP]
** endUserId标识会员

游客人数:
** 在没有登录的情况下访问的客户
** endUserId为空 --> “”/null

平均访问时长:
** 用户在网站停留的时间
** trackTime --> max - min

二跳率:
** 在同一个网站中平均浏览了2个以上的页面的用户
** 计算方法:(pv > 2) / 用户总数

独立IP:
** 客户的公网IP
** 正常情况下,分析一天内的数据,同一个用户的IP是不会变的(一般)
** 语法:cunt(distinct ip)

分析结果表的结构
键名 描述 对应track_log字段
session_id 会话id sessionId
guid 访客id guid
trackerU 访问去掉id,获取 trackerU
会话中的第一个
landing_url 着陆URL url
landing_url_ref 着落之前的URL referer
user_id 会员id endUserId
pv
uv
stay_time 停留时间 trackTime
min_trackTime 最小时间
ip
provinceId 省份id provinceId
trackerU渠道描述,通过什么点进来的,这个网页的上一个网页
landing_url 比如京东的主页点进去买鼠标的页面
landing_url_ref

分析步骤:
Step1、创建会话信息表db_web_ana.session_info
Step2、创建临时表1
Step3、分析数据并向临时表1中插入数据

例子

创建会话信息表db_web_ana.session_info

create_session_info.hql

create database if not exists db_web_ana;
create table if not exists db_web_ana.session_info(
session_id string,
guid string,
trackerU string,
landing_url string,
landing_url_ref string,
user_id string,
pv string,
uv string,
stay_time string,
min_trackTime string,
ip string,
provinceId string)
row format delimited fields terminated '\t'

bin/hive -f ./create_session_info.hql

创建临时表1

create_session_info_temp1.hql

create table if not exists db_web_ana.session_info_temp1(
session_id string,
guid string,
user_id string,
pv string,
stay_time string,
min_trackTime string,
ip string,
provinceId string)
partitioned by (date string)
row format delimited fields terminated '\t'

bin/hive -f ./create_session_info_temp1.hql

分析数据并向临时表1中插入数据

insert overwrite table db_web_ana.session_info_temp1
select 
sessionId,
max(guid),
max(endUserId),
count(url),
max(unix_timestamp(trackTime))-min(unix_timestamp(trackTime)),
from_unixtime(min(unix_timestamp(trackTime))),
max(ip),
max(provinceId)
from db_web_data.track_log where date='20150828'
group by 
sessionId;

创建临时表2:db_web_ana.session_info_temp2

create table db_web_ana.session_info_temp2(
session_id string,
tracktime string,
trackerU string,
landing_url string,
landing_url_ref string
)
row format delimited fields terminated by '\t';

向临时表2: db_web_ana.session_info_temp2中插入数据

insert overwrite table db_web_ana.session_info_temp2
select 
sessionId,
tracktime,
trackerU,
url,
referer
from db_web_data.track_log where data='20150828'

通过sessionId和trackTime将两张临时表join在一起后插入到会话信息表中:db_web_ana.session_info

insert_join_session_info.hql

insert overwrite table db_web_ana.session_info partition(date='20150828')
select
p1.session_id,
p1.guid,
p2.checkU,
p2.landing_url,
p2.landing_url_ref,
p1.user_id,
p1.stay_time,
p1.min_trackTime,
p1.provinceId,
fromo session_info_temp1 p1 join session_info_temp2 p2
on p1.session_id=p2.sessionId and P1.min_trackTime=p2.trackTime;

bin/hive -f insert_join_session_info.hql

bin/hive -f create_session_info.hql
bin/hive -f create_session_info_temp1.hql
bin/hive -f create_session_info_temp2.hql
bin/hive -f insert_join_session_info.hql

分析需要统计的数据,设计最终结果表,并创建之

日期 uv pv 登录人数 游客人数 平均访问时长 二条率 独立ip
create_result_info.hql

create table  db_web_ana.result_info(
	date string,
	uv string,
	pv string,
	login_users string,
	visit_users string,
	avg_time string,
	sec_hop string,
	ip_coount string
)
row format delimited fields terminated by '\t';

bin/hie -f create_result_info.hql

统计最终结果

日期 uv pv 登录人数 游客人数 平均访问时长 二条率 独立ip
insert_result_info.hql

insert overwrite table db_web_ana.result_info
select 
date,
count(distinct guid),
sum(pv),
count(case when user_id != '' then user_id else null end),
count(case when user_id = '' then user_id else null end),
avg(stay_time),
count(distinct(case when pv >= 2 then guid else null end))/count(distinct guid),
count(distinct ip)
from db_web_ana.session_info where date='20150828'
group by 
date;

bin/hive -f insert_result_info.hql
大数据学习笔记之Hive(五):Hive分析项目分析_第1张图片
在这里插入图片描述

你可能感兴趣的:(Big,Data,Cloud,Technology❤️,#,Big,Data,------,Hive)