APP数据模拟处理流程—[次日留存用户]

APP数据模拟处理流程—[次日留存用户]


/*
留存用户分析
概念:昨日新增,今天还活跃

逻辑思路:昨天在新用户表,今天在活跃用户表之中 ---->今日的次日留存用户
                昨天在新用户表的人,今天还在活跃用户表中
*/

--数据建模 -->> 纪录跟活跃用户表相同的字段
--建次日留存etl信息表:纪录跟活跃用户表相同的字段

create table etl_user_keepalive_nextday like etl_user_active_day;

--etl开发


insert into table etl_user_keepalive_nextday partition(day = '2018-05-20')
select
    actuser.sdk_ver
    ,actuser.time_zone
    ,actuser.commit_id
    ,actuser.commit_time
    ,actuser.pid
    ,actuser.app_token
    ,actuser.app_id
    ,actuser.device_id
    ,actuser.device_id_type
    ,actuser.release_channel
    ,actuser.app_ver_name
    ,actuser.app_ver_code
    ,actuser.os_name
    ,actuser.os_ver
    ,actuser.LANGUAGE
    ,actuser.country
    ,actuser.manufacture
    ,actuser.device_model
    ,actuser.resolution
    ,actuser.net_type
    ,actuser.account
    ,actuser.app_device_id
    ,actuser.mac string
    ,actuser.android_id
    ,actuser.imei
    ,actuser.cid_sn
    ,actuser.build_num
    ,actuser.mobile_data_type
    ,actuser.promotion_channel
    ,actuser.carrier
    ,actuser.city
    ,actuser.user_id
from etl_user_new_day newuser join etl_user_active_day actuser 
on newuser.user_id = actuser.user_id
where newuser.day = '2018-05-19' and actuser.day = '2018-05-20';


-------------------------------用左半连接效率略高---------------------------------------------------

insert into table etl_user_keepalive_nextday partition(day = '2018-05-20')
select
     newuser.sdk_ver
    ,newuser.time_zone
    ,newuser.commit_id
    ,newuser.commit_time
    ,newuser.pid
    ,newuser.app_token
    ,newuser.app_id
    ,newuser.device_id
    ,newuser.device_id_type
    ,newuser.release_channel
    ,newuser.app_ver_name
    ,newuser.app_ver_code
    ,newuser.os_name
    ,newuser.os_ver
    ,newuser.LANGUAGE
    ,newuser.country
    ,newuser.manufacture
    ,newuser.device_model
    ,newuser.resolution
    ,newuser.net_type
    ,newuser.account
    ,newuser.app_device_id
    ,newuser.mac string
    ,newuser.android_id
    ,newuser.imei
    ,newuser.cid_sn
    ,newuser.build_num
    ,newuser.mobile_data_type
    ,newuser.promotion_channel
    ,newuser.carrier
    ,newuser.city
    ,newuser.user_id


from etl_user_new_day newuser left semi join etl_user_active_day actuser
on newuser.user_id = actuser.use_id and newuser.day = '2018-05-19' and actuser.day = '2018-05-20';
--注意semi left join 中,右表的引用不能在WHERE中;



/*
维度统计
*/


---利用多重插入语法--















阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页