實現思路:要知道今天有哪些使用者是新增使用者,需要知道兩件事,一是今天所有的活躍使用者,因此,新增使用者的資料**,還是dws層的裝置日活表,新增使用者,就是部分日活的使用者。二是要知道哪些使用者在以前活躍過,用今日活躍使用者減去以前活躍過的使用者,剩下的就是新增使用者。
dws層(每日新增裝置明細表)
建表語句。
分析:這個表用來儲存每日新增的裝置(使用者),資料量比起每日活躍表來說,要少的多。因為一台裝置可以在每天都生成活躍記錄,而新增裝置卻只會出現一條記錄,資料量相對較少,可以不用分割槽表。
drop table ifexists 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 '
螢幕寬高',
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_dayselect
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.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 ifexists 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_countselect
create_date,
count(*)
from dws_new_mid_day
where create_date='
2019-02-10
'group by create_date;
最後,還要將上面的兩個導資料的sql寫成指令碼,略。
資料倉儲主題域
主題域通常是聯絡較為緊密的資料主題的集合。比如銷售分析,進銷存分析都是主題,可以根據業務的關注點,將這些資料主題劃分到不同的主題域。主題域包含了某方面決策者關注的事物。乙個主題域通常會覆蓋多個業務部門,例如產品主題域涉及到銷售 財務 物流 採購等部門。dw的設計方法一般採用面向主題的方法來設計。根據...
什麼是資料倉儲主題
自從學習資料倉儲以來,對資料倉儲 面向主題 的概念始終比較模糊,理解不夠深刻 透徹。昨天晚上翻開課本溫習一下,仍然不能領悟其本質思想 很是困惑,後來從網上找了一些資料,細細著磨一下。1 主題的概念 主題 subject 是在較高層次上將企業資訊系統中的資料進行綜合 歸類和分析利用的乙個抽象概念,每乙...
什麼是資料倉儲主題
1 主題的概念 主題 subject 是在較高層次上將企業資訊系統中的資料進行綜合 歸類和分析利用的乙個抽象概念,每乙個主題基本對應乙個巨集觀的分析領域。在邏輯意義上,它是對應企業中某一巨集觀分析領域所涉及的分析物件。例如 銷售分析 就是乙個分析領域,因此這個資料倉儲應用的主題就是 銷售分析 面向主...