大資料實戰(三十七):電商數倉(三十)之使用者行為資料倉庫(十六)流失使用者數
阿新 • • 發佈:2020-08-21
流失使用者:最近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
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"