全部產品
Search
文件中心

MaxCompute:MaxCompute在電商情境中如何進行漏鬥模型分析

更新時間:Jun 19, 2024

本文以電商情境為例,為您介紹如何使用MaxCompute進行離線資料計算並串連Quick BI進行漏鬥模型展示。

背景資訊

漏鬥模型是通過產品各項資料的轉化率來判斷產品營運情況的工具。轉化漏鬥則是通過各階段資料的轉化,來判斷產品在哪一個環節出了問題,然後不斷最佳化產品。電商漏鬥模型主要展示使用者購買商品的路徑,即從瀏覽商品到支付訂單的每一個環節的轉化。本文將展示從使用者瀏覽、點擊、購買環節做漏鬥分析及展示。

前提條件

操作步驟

  1. 通過Log Service採集日誌資料。

    Log Service採集日誌資料,詳情請參見資料擷取概述。本文以測試資料為例示範,如需下載測試資料,請您單擊TestData下載。

  2. 使用MaxCompute構建離線計算資料模型。

    1. 按照如下建表語句,在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  
      );
      說明
    2. 向ods_user_trace_data表中添加分區,命令如下。

      ALTER TABLE ods_user_trace_data ADD PARTITION (dt=${bdp.system.bizdate});
    3. 將採集的日誌資料移轉至MaxCompute。

      採集的日誌資料移轉至MaxCompute,詳情請參見日誌資料移轉至MaxCompute

    4. 按照如下建表語句,在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)

    5. 向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}'
      ;
    6. 按照如下建表語句,在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說明,請參見數倉分層

    7. 按照如下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 
      ;
      說明

      使用者路徑是從瀏覽到點擊再到購買。各個環節的轉化率為從當一個頁面進入下一頁面的人數比率,例如點擊轉換率=進入點擊頁面的人數/瀏覽頁面人數。

    8. 查詢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   |
        +------------+------------+------------+-------------+------------+------------+
  3. 資料視覺效果展示。

    通過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欄位作為漏鬥分層/維度

    image.png