5. 数据分析统计的指标_项目一


数据分析指标

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/279698.html

(0)
上一篇 2022年8月10日
下一篇 2022年8月10日

相关推荐

发表回复

登录后才能评论