用戶畫像系列第九篇:應用案例之表結構設計

在這裏插入圖片描述
本文摘自趙宏田老師的:“用戶畫像:方法論與工程化解決方案”。

表結構的設計也是畫像開發過程中,需要解決的一個重要的問題。表結構設計的重點是要考慮:儲存哪些信息、如何儲存、如何應用這三個方面的問題。不同的業務背景有不同的設計方式,這裏提供兩個設計思路:一是每日全量數據的表結構;二是每日增量數據的表結構。

每日全量數據,即該表的日期分區中,記錄這截止到當天的全量用戶數據,日全量數據的優勢是方便查詢,缺點是不便與探查更細粒度的用戶行爲。每日增量數據,即該表日期分區中記錄着當日的用戶行爲數據,日增量數據可視爲ODS層的用戶行爲畫像,在應用時還需要基於該增量數據做進一步的建模加工。

下面詳細介紹下這兩種表結構的設計方法:

日全量數據: 日全量數據表中,在每天對應的日期分區中插入截止到當天爲止的全量數據,用戶進行查詢時,只需查詢最近一天的數據即可獲取全新的全量數據。下面以一個具體的例子來說明:

CREATE TABLE 'dw.userprofile_attritube_all' ( 'userid' string COMMENT 'userid', 'labelweight' stringCOMMENT '標籤權重' ) COMMENT '用戶畫像數據' PARTATIONED BY ('data_date' string COMMENT '數據日期', 'them' string COMMENT '二級主題', 'labelid' string COMMENT '標籤ID')

這裏的userid表示用戶id;labelweight表示標籤權重;theme表示標籤歸屬的二級主體;labelid表示一個標籤的id。通過“日期+標籤歸屬的二級主體+標籤id”的方式進行分區,設置三個分區字段,更便於開發和查詢數據。該表結構下的標籤權重僅考慮統計類型的標籤權重,未考慮較爲複雜的用戶行爲次數、行爲類型、行爲距今時間等複雜情況。通過表名末尾追加“_all”的規範化命名形式,可直觀看出這是一張日全量表。

例如:對主題類型爲“會員”的標籤,插入“20190101”日的全量數據,可通過語句:insert overwrite table dw.userprofile_userlabel_all partition (data_date='20190101', theme='member', labelid='ATTRITUBE_U_05_001') 來實現。

日增量數據: 日增量數據表,即在每天的日期分區中,插入當天業務運行產生的新數據,用戶進行查詢時,通過限制查詢的日期範圍,就可以找出,在特定時間範圍內,被打上特定標籤的用戶。下面以一個具體的例子來說明:

CREATE TABLE dw.userprofile_act_feature_append (labelid string COMMENT '標籤ID', cookiedid string '用戶ID', act_cnt int COMMENT '行爲次數', tag_type_id int COMMENT '標籤類型編碼', act_type_id int COMMENT '行爲類型編碼') comment '用戶畫像-用戶行爲標籤表' PARTITIONED BY (data_date string COMMENT '數據日期')

這裏的labelid表示標籤名稱;cookieid表示用戶ID;act_cnt表示用戶當日的行爲次數,如用戶瀏覽某三級品類商品3次,則打上次數爲3;tag_type_id爲標籤類型,如母嬰、3C、數碼等不同的類型;act_type_id表示行爲類型,如瀏覽、搜索、收藏、下單等行爲。分區方式爲按日期分區,插入當日數據。通過表名末尾追加_append的規範化命名形式,可直觀的看出這是一張日增量表。

例如:某用戶在“20180701”日瀏覽某3C電子商品4次(act_cnt),即給該用戶(userid)打上該商品對應的三級品類的標籤(tagid),標籤類型(tag_type_id)爲3C電子商品,行爲類型(act_type_id)爲瀏覽。這裏可通過對標籤類型和行爲類型這兩個字段配置緯度表的方式,對數據進行管理。比如對於行爲類型(act_type_id)字段,可以設定1爲購買行爲,2爲瀏覽行爲,3爲收藏行爲等,在行爲標籤表中,以數值定義用戶行爲類型,在緯度表中,維護每個數值對應的具體含義。

該日增量數據表,可視爲ODS層用戶標籤明細。在查詢過程中,例如對於某用戶id爲001的用戶,查詢其在“20180701”日到“20180707”日被打上的標籤,可通過命令:select * from dw.userprofile_act_feature_append where userid='001' and date)date >= '20180701' and date_date <= '20180707'查詢。該日增量的表結構,記錄了用戶每天的行爲帶來的標籤,但未計算打在用戶身上的標籤權重,計算權重時還需要進一步建模加工。

寬表設計: 用戶畫像表結構如何設計,沒有一個固定的格式,符合業務需求、滿足應用即可。下面通過兩個寬表設計的案例,提供一種解決方案的思路。

該用戶屬性寬表設計,主要用來記錄用戶的基本屬性信息。
在這裏插入圖片描述
在這裏插入圖片描述

用戶屬性寬表設計

該用戶日活躍寬表設計,主要記錄用戶每天訪問的信息。
在這裏插入圖片描述

用戶日活躍寬表設計
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章