数据仓库 用户新增主题

Posted noyouth

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据仓库 用户新增主题相关的知识,希望对你有一定的参考价值。

实现思路:要知道今天有哪些用户是新增用户,需要知道两件事,一是今天所有的活跃用户,因此,新增用户的数据来源,还是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 	
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写成脚本,略。

 

以上是关于数据仓库 用户新增主题的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库 用户活跃主题

数据仓库的概念

SnippetsLab for Mac 1.9 中文共享版 – 强大的代码收藏管理工具

WordPress主题ripro 6.6

数据的数据仓库

数据仓库基础知识