本文以電商情境為例,為您介紹如何使用MaxCompute進行離線資料計算並串連Quick BI進行漏鬥模型展示。
背景資訊
漏鬥模型是通過產品各項資料的轉化率來判斷產品營運情況的工具。轉化漏鬥則是通過各階段資料的轉化,來判斷產品在哪一個環節出了問題,然後不斷最佳化產品。電商漏鬥模型主要展示使用者購買商品的路徑,即從瀏覽商品到支付訂單的每一個環節的轉化。本文將展示從使用者瀏覽、點擊、購買環節做漏鬥分析及展示。
前提條件
已開通Log ServiceSLS。詳情請參見Log ServiceSLS購買指導。
已開通MaxCompute服務並建立MaxCompute專案。詳情請參見開通MaxCompute服務和建立MaxCompute專案。
已開通DataWorks服務。詳情請參見DataWorks購買指導。
已開通Quick BI服務。詳情請參見Quick BI購買指導。
操作步驟
通過Log Service採集日誌資料。
使用MaxCompute構建離線計算資料模型。
按照如下建表語句,在DataWorks資料開發介面建立資料引入層(ODS)表ods_user_trace_data。
--以dt作為時間分區,單位為天。 CREATE TABLE IF NOT EXISTS ods_user_trace_data ( md5 STRING COMMENT '使用者uid的md5值前8位', uid STRING COMMENT '使用者uid', ts BIGINT COMMENT '使用者操作時間戳記', ip STRING COMMENT 'ip地址', status BIGINT COMMENT '伺服器返回狀態代碼', bytes BIGINT COMMENT '返回給用戶端的位元組數', device_brand STRING COMMENT '裝置品牌', system_type STRING COMMENT '系統類別型,Android、IOS、ipad、Windows_phone', customize_event STRING COMMENT '自訂事件:登入/退出/購買/註冊/點擊/後台/切換使用者/瀏覽/評論', use_time BIGINT COMMENT 'APP單次使用時間長度,當事件為退出、後台、切換使用者時有該項', customize_event_content STRING COMMENT '使用者關注內容資訊,在customize_event為瀏覽和評論時,包含該列' ) PARTITIONED BY ( dt STRING );說明以上建表語句中的欄位是根據測試資料構建的。如何在DataWorks建立表,請參見開發ODPS SQL任務。
更多ODS說明,請參見資料引入層(ODS)。
向ods_user_trace_data表中添加分區,命令如下。
ALTER TABLE ods_user_trace_data ADD PARTITION (dt=${bdp.system.bizdate});將採集的日誌資料移轉至MaxCompute。
採集的日誌資料移轉至MaxCompute,詳情請參見日誌資料移轉至MaxCompute。
按照如下建表語句,在DataWorks資料開發介面建立明細粒度事實層(DWD)表dw_user_trace_data。
--以dt作為時間分區,單位為天。 CREATE TABLE IF NOT EXISTS dw_user_trace_data ( uid STRING COMMENT '使用者uid', device_brand STRING COMMENT '裝置品牌', system_type STRING COMMENT '系統類別型,Android、IOS、ipad、Windows_phone', customize_event STRING COMMENT '自訂事件:登入/退出/購買/註冊/點擊/後台/切換使用者/瀏覽/評論', use_time BIGINT COMMENT 'APP單次使用時間長度,當事件為退出、後台、切換使用者時有該項', customize_event_content STRING COMMENT '使用者關注內容資訊,在customize_event為瀏覽和評論時,包含該列' ) PARTITIONED BY ( dt STRING );說明更多DWD說明,請參見明細粒度事實層(DWD)。
向dw_user_trace_data表中插入資料,命令如下。
INSERT INTO dw_user_trace_data PARTITION (dt = '${bdp.system.bizdate}') SELECT uid ,device_brand ,system_type ,customize_event ,use_time ,customize_event_content FROM ods_user_trace_data WHERE dt = '${bdp.system.bizdate}' ;按照如下建表語句,在DataWorks資料開發介面建立資料應用程式層(ADS)表rpt_user_trace_data。
--以dt作為時間分區,單位為天。 CREATE TABLE IF NOT EXISTS rpt_user_trace_data ( browse STRING COMMENT '瀏覽量', click STRING COMMENT '點擊量', purchase STRING COMMENT '購買量', browse_rate STRING COMMENT '瀏覽轉化率', click_rate STRING COMMENT '點擊轉化量' ) PARTITIONED BY ( dt STRING );說明更多ADS說明,請參見數倉分層。
按照如下SQL語句,在DataWorks資料開發介面編寫業務代碼邏輯。
INSERT OVERWRITE TABLE rpt_user_trace_data PARTITION (dt=${bdp.system.bizdate}) SELECT browse AS 瀏覽量 ,click AS 點擊量 ,purchase AS 購買量 ,concat(round((click/browse)*100,2),'%') AS 點擊轉化率 ,concat(round((purchase/click)*100,2),'%') AS 購買轉化率 FROM (SELECT dt,count(1) browse FROM dw_user_trace_data WHERE customize_event='browse' AND dt = ${bdp.system.bizdate} GROUP BY dt) a LEFT JOIN (SELECT dt,count(1) click FROM dw_user_trace_data WHERE customize_event='click' AND dt = ${bdp.system.bizdate} GROUP BY dt) b ON a.dt=b.dt LEFT JOIN (SELECT dt,count(1) purchase FROM dw_user_trace_data WHERE customize_event='purchase' AND dt = ${bdp.system.bizdate} GROUP BY dt)c ON a.dt=c.dt ;說明使用者路徑是從瀏覽到點擊再到購買。各個環節的轉化率為從當一個頁面進入下一頁面的人數比率,例如點擊轉換率=進入點擊頁面的人數/瀏覽頁面人數。
查詢rpt_user_trace_data表中的離線資料計算結果。
SQL樣本:
SELECT * FROM rpt_user_trace_data WHERE dt='20231126';查詢結果:
+------------+------------+------------+-------------+------------+------------+ | browse | click | purchase | browse_rate | click_rate | dt | +------------+------------+------------+-------------+------------+------------+ | 35 | 16 | 2 | 45.71% | 12.5% | 20231126 | +------------+------------+------------+-------------+------------+------------+
資料視覺效果展示。
通過Quick BI建立網站使用者分析畫像的儀表板,實現該資料表的可視化,詳情請參見雲資料來源MaxCompute和漏斗圖。
重要在Quick BI中建立資料集時,您需要先判斷MaxCompute專案是否開啟了三層模型,再根據對應的方式建立資料集:
可在MaxCompute中使用
setproject;命令查看專案空間屬性中odps.namespace.schema參數的值。值為true:表示該專案已開啟三層模型,您需要使用自訂SQL方式建立資料集。因為Quick BI沒有正式對接MaxCompute的三層模型,如果使用拖拽表(即Quick BI內部產生SQL)的方式,會出現找不到表的報錯資訊。
值為false:表示該專案未開啟三層模型,您可以使用自訂SQL或拖拽表(即Quick BI內部產生SQL)的方式建立資料集。
要產生下述漏斗圖,您需要選擇表對象為
ods_user_trace_data的資料集,並將customize_event欄位作為漏鬥分層/維度。
