码迷,mamicode.com
首页 > 其他好文 > 详细

数据仓库 用户新增主题

时间:2020-06-26 21:53:41      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:分区表   mod   color   col   mit   pre   mat   form   天都   

实现思路:要知道今天有哪些用户是新增用户,需要知道两件事,一是今天所有的活跃用户,因此,新增用户的数据来源,还是DWS层的设备日活表,新增用户,就是部分日活的用户。二是要知道哪些用户在以前活跃过,用今日活跃用户减去以前活跃过的用户,剩下的就是新增用户。

DWS层(每日新增设备明细表)

建表语句。

分析:这个表用来存储每日新增的设备(用户),数据量比起每日活跃表来说,要少的多。因为一台设备可以在每天都生成活跃记录,而新增设备却只会出现一条记录,数据量相对较少,可以不用分区表。

drop table if exists dws_new_mid_day;
create external table dws_new_mid_day
(
    `mid_id` string COMMENT 设备唯一标识,
    `user_id` string COMMENT 用户标识, 
    `version_code` string COMMENT 程序版本号, 
    `version_name` string COMMENT 程序版本名, 
    `lang` string COMMENT 系统语言, 
    `source` string COMMENT 渠道号, 
    `os` string COMMENT 安卓系统版本, 
    `area` string COMMENT 区域, 
    `model` string COMMENT 手机型号, 
    `brand` string COMMENT 手机品牌, 
    `sdk_version` string COMMENT sdkVersion, 
    `gmail` string COMMENT gmail, 
    `height_width` string COMMENT 屏幕宽高,
    `app_time` string COMMENT 客户端日志产生时的时间,
    `network` string COMMENT 网络模式,
    `lng` string COMMENT 经度,
    `lat` string COMMENT 纬度,
    `create_date`  string  comment 创建时间 
)  COMMENT 每日新增设备信息
stored as parquet
location /warehouse/gmall/dws/dws_new_mid_day/;

数据导入,以2019-02-10为例。用日活表取连接新增设备表,如果以前没有出现在新增设备中的数据(nm.mid_id is null),即为新增的设备。

insert into table dws_new_mid_day
select  
    ud.mid_id,
    ud.user_id , 
    ud.version_code , 
    ud.version_name , 
    ud.lang , 
    ud.source, 
    ud.os, 
    ud.area, 
    ud.model, 
    ud.brand, 
    ud.sdk_version, 
    ud.gmail, 
    ud.height_width,
    ud.app_time,
    ud.network,
    ud.lng,
    ud.lat,
    2019-02-10
from dws_uv_detail_day ud left join dws_new_mid_day nm on ud.mid_id=nm.mid_id
where ud.dt=2019-02-10 and nm.mid_id is null;

 

ADS层(每日新增设备表)

上面的新增设备明细表,只是记录了每日新增了哪些设备,但报表上要展示的,是每日新增了多少数量的设备,因此,还需要一个ADS层的表去存储count后的数据,以便于直接展示在报表里。

建表语句。

drop table if exists ads_new_mid_count;
create external table ads_new_mid_count
(
    `create_date`     string comment 创建时间 ,
    `new_mid_count`   BIGINT comment 新增设备数量 
)  COMMENT 每日新增设备信息数量
row format delimited fields terminated by \t
location /warehouse/gmall/ads/ads_new_mid_count/;

导入数据,以2019-02-10为例。

insert into table ads_new_mid_count 
select
create_date,
count(*)
from dws_new_mid_day
where create_date=2019-02-10
group by create_date;

最后,还要将上面的两个导数据的sql写成脚本,略。

 

数据仓库 用户新增主题

标签:分区表   mod   color   col   mit   pre   mat   form   天都   

原文地址:https://www.cnblogs.com/noyouth/p/13196403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!