其他分享
首页 > 其他分享> > 大数据实战(三十七):电商数仓(三十)之用户行为数据仓库(十六)流失用户数

大数据实战(三十七):电商数仓(三十)之用户行为数据仓库(十六)流失用户数

作者:互联网

流失用户:最近7天未登录我们称之为流失用户

 

1 DWS层

 

使用日活明细表dws_uv_detail_day作为DWS层数据

 

2 ADS层

 

1)建表语句

hive (gmall)>
drop table if exists ads_wastage_count;
create external table ads_wastage_count(
    `dt` string COMMENT '统计日期',
    `wastage_count` bigint COMMENT '流失设备数'
)
row format delimited fields terminated by '\t'
location '/warehouse/gmall/ads/ads_wastage_count';
View Code

2)

=============================主题 流失用户数=========================

流失用户: 最近7天未登录我们称之为流失用户
如果一个用户,登录了,产生日活信息!
如果一个用户在日活表中,最后一次登录的日期,距离当前已经间隔了7天,这个用户属于流失用户!
-----------------------------需求-----------------------

 

-----------------------------相关表---------------------
日活表dws_uv_detail_daily
-----------------------------思路-----------------------
统计日活表中,所有用户,最后一次登录的日期!
判断日期是否距离当前小于7天

 

-----------------------------SQL------------------------
insert into table ads_wastage_count
select
'2020-02-18',
COUNT(*)
from
(select
mid_id
from dws_uv_detail_day
where dt<='2020-02-18'
group by mid_id
having max(dt) < date_sub('2020-02-18',7)) tmp

3 编写脚本

 

#!/bin/bash
if [ -n "$1" ]
then
     do_date=$1
else
    do_date=$(date -d yesterday +%F)
fi

echo ===日志日期为$do_date===


sql="

use gmall;
insert into table ads_wastage_count
select 
    '$do_date',
      COUNT(*)
from
(select 
    mid_id
from dws_uv_detail_day
where dt<='$do_date'
group by mid_id
having max(dt) < date_sub('$do_date',7)) tmp

"
hive  -e "$sql"

 

标签:商数,count,ads,数据仓库,用户,三十七,流失,date,wastage
来源: https://www.cnblogs.com/qiu-hua/p/13542938.html