依賴數據:使用日活明細表dws_uv_detail_day作為DWS層數據
建表語句:
drop table if exists ads_continuity_uv_count; create external table ads_continuity_uv_count( `dt` string COMMENT '統計日期', `wk_dt` string COMMENT '最近7天日期', `continuity_count` bigint ) COMMENT '連續活躍設備數' row format delimited fields terminated by '\t' location '/warehouse/gmall/ads/ads_continuity_uv_count';
數據導入腳本:
①date_sub(dt,rank) date_dif,如果是連續的,則日期與排名的差值相等。
②group by mid_id,date_dif,一個設備id可能對應多種差值,所以需要按這兩個字段分組。
③在最近7天中,注意要對前3天連續,后三天連續,中間一天斷開的情況去重。
insert into table ads_continuity_uv_count select '2019-02-12', concat(date_add('2019-02-12',-6),'_','2019-02-12'), count(*) from ( select mid_id from ( select mid_id from ( select mid_id, date_sub(dt,rank) date_dif from ( select mid_id, dt, rank() over(partition by mid_id order by dt) rank from dws_uv_detail_day where dt>=date_add('2019-02-12',-6) and dt<='2019-02-12' )t1 )t2 group by mid_id,date_dif having count(*)>=3 )t3 group by mid_id )t4;