数据分析指标
1. 基于时间维度(①每月用户的访问指标 ②每天用户的访问指标 ③每小时用户的访问指标) 重写数据
2. 基于用户维度(不同年龄段用户的访问量指标) 重写数据
3. 基于地理维度(每个分区下不同省份用户的访问指标) 追加数据
创建时间维度表及导入数据
/*
* 统计分析
*/
-- 1. 统计网站每个月用户的访问量指标
-- 创建指标结果的数据存储表 指标表一般都是内部表,而且不需要分区
create table if not exists month_pvs(
visit_year string,
visit_month string,
pvs int
) row format delimited
fields terminated by ',';
-- 将查询结果增加到指标表中
insert overwrite table month_pvs
select visit_month, visit_year, count(*) as pvs
from web_detail
group by visit_month, visit_year;
create table if not exists day_pvs(
visit_year string,
visit_month string,
visit_day string,
pvs int
) row format delimited
fields terminated by ',';
insert overwrite table day_pvs
select visit_year, visit_month, visit_day, count(*) as pvs
from web_detail
group by visit_year, visit_month, visit_day;
/**
* 创建指标表
*/
create table if not exists hour_pvs(
visit_year string,
visit_month string,
visit_day string,
visit_hour string,
pvs int
) row format delimited
fields terminated by ',';
-- 统计网站每小时用户的访问量指标 按照年月日时进行分组,求每一组中的数据 覆盖写
insert overwrite table hour_pvs
select visit_year, visit_month, visit_day, visit_hour, count(*) as pvs
from web_detail
group by visit_year, visit_month, visit_day, visit_hour;
创建用户维度表及导入数据
/*
* 统计不同年龄段
* 划分年龄段规则如下:
* 0-18 少年人
* 18-40 青年人
* 40-65 中年
* 65以上 老年
*/
create table if not exists age_pvs(
age_range string,
pvs int
) row format delimited fields terminated by ",";
insert overwrite table age_pvs
select tmp.ageDuan age_range, count(*) pvs
from
(
select
case
when (age between 0 and 18) then "少年人"
when (age between 18 and 40) then "青年人"
when (age between 40 and 65) then "中年"
else "老年"
end as ageDuan
from web_detail
) tmp
group by tmp.ageDuan;
创建地理维度表及导入数据
/*
* 统计网站不同的省份的用户访问量指标 -- 明细宽表中存在三个字段、省份、纬度、经度
* 这三个字段都是和地理纬度有关的字段
* 只需要统计“昨天”不同省份即可
*/
create table if not exists area_pvs(
logdate string,
provice string,
latitude string,
longitude string,
pvs int
) row format delimited fields terminated by ",";
-- 追加写
insert into table area_pvs
select logdate, province, latitude, longitude, count(*) as pvs
from web_detail
where logdate ="${hiveconf:yesterday}"
-- where logdate ="20220808"
group by province, latitude, longitude, logdate;
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/279698.html