需求四:每日应用启动相关指标
原创大约 2 分钟
实现思路
实现
每日人均启动APP数
统计的步骤。首先,基于
DWS层
的dws_app_open_history
表的num
字段求pv
(也就是当日总人数
)和uv
(也就是当日所有用户启动APP的总数
)。然后,将
pv
、uv
以及它们相除的结果保存到APP层
的app_user_open_average
表中。
实现
每日APP启动数分布
统计的步骤。首先,同样基于
DWS层
的dws_app_open_history
表的num
字段,分别统计num=1
、num=2
和num>=3
的记录条数。然后,将计算结果保存到
APP层
的app_user_open_distrib
表中。
APP层开发
根据实现思路,需要在APP层
初始化app_user_open_average
和app_user_open_distrib
表。
> cd /home/work/warehouse_user_action
> vi app_shopmall_requirement04_init.sh
#!/bin/bash
# 需求四:每日应用启动相关指标
# app层数据库和表初始化,只需要执行一次
hive -e "
create database if not exists app_shopmall;
create external table if not exists app_shopmall.app_user_open_average (
pv int,
uv int
) partitioned by(dt string)
row format delimited
fields terminated by '\t'
location 'hdfs://server01:9000/data/app/user_open_average';
create external table if not exists app_shopmall.app_user_open_distrib (
od_1 int,
od_2 int,
od_3 int
) partitioned by(dt string)
row format delimited
fields terminated by '\t'
location 'hdfs://server01:9000/data/app/user_open_distrib';
"
再来给它添加分区。
> cd /home/work/warehouse_user_action
> vi app_shopmall_requirement04_add_partition.sh
#!/bin/bash
# 需求四:每日应用启动相关指标
# 每天凌晨执行一次
if [ "d$1" = "d" ]
then
dt=`date +%Y%m%d --date="1 days ago"`
else
dt=$1
fi
hive -e "
insert overwrite table app_shopmall.app_user_open_average partition(dt='${dt}') select
sum(num) as pv,
count(*) as uv
from dws_shopmall.dws_app_open_history
where dt = '${dt}';
insert overwrite table app_shopmall.app_user_open_distrib partition(dt='${dt}') select
sum(case when num = 1 then 1 else 0 end) od_1,
sum(case when num = 2 then 1 else 0 end) od_2,
sum(case when num >= 3 then 1 else 0 end) od_3
from dws_shopmall.dws_app_open_history
where dt = '${dt}';
"
可以通过定时任务来执行它。
> crontab -e
# 每天凌晨0点1分执行
1 0 * * * /home/work/warehouse_user_action/app_shopmall_requirement04_add_partition.sh
感谢支持
更多内容,请移步《超级个体》。