全部產品
Search
文件中心

DataWorks:加工資料

更新時間:Feb 05, 2026

本文為您介紹如何將同步至MaxCompute的使用者資訊表ods_user_info_d及訪問日誌資料ods_raw_log_d,通過DataWorks的MaxCompute節點加工得到目標使用者畫像資料,閱讀本文後,您可以瞭解如何通過DataWorks+MaxCompute產品組合來計算和分析已同步的資料,完成數倉簡單資料加工情境。

前提條件

開始本案例前,請先完成同步資料中的操作。

一、搭建資料加工鏈路

同步資料階段,已經成功將資料同步至MaxCompute,本階段需要對資料進行進一步加工,以輸出基本使用者畫像資料。

  1. 在Data Studio左側導覽列單擊image,進入資料開發頁面,然後在專案目錄地區找到已建立好的工作流程,單擊進入工作流程編排頁。

    本教程節點名稱樣本及作用如下:

    節點類型

    節點名稱

    節點作用

    imageMaxCompute SQL

    dwd_log_info_di

    使用內建函數、自訂函數(getregion)等完成原始日誌ods_raw_log_d資料拆分寫入dwd_log_info_di表多個欄位。

    imageMaxCompute SQL

    dws_user_info_all_di

    使用者基本資料表ods_user_info_d)和初步加工後的日誌資料表dwd_log_info_di)進行匯總,將資料寫入dws_user_info_all_di表中。

    imageMaxCompute SQL

    ads_user_info_1d

    dws_user_info_all_di表中資料進一步加工,將資料寫入ads_user_info_1d表,產出基本使用者畫像。

  2. 手動拖拽連線,配置各節點的上遊節點。最終效果如下:

    image
    說明

    工作流程中支援通過手動連線方式設定各節點的上下遊依賴關係,也支援在子節點中,使用代碼解析自動識別節點上下遊依賴關係。本教程採用手動連線方式,代碼解析的更多資訊,請參見自動解析機制

二、註冊自訂函數

為了後續資料處理任務的順利進行,您需要註冊MaxCompute自訂函數(getregion),將同步資料階段同步至MaxCompute的日誌資料結構拆解成表格。

重要
  • 本教程已為您提供用於將IP解析為地區的函數所需資源,您僅需將其下載至本地,並在DataWorks註冊函數前,將函數涉及的資源上傳至DataWorks空間即可。

  • 該函數僅為本教程使用(IP資源範例),若需在正式業務中實現IP到地理位置的映射功能,需前往專業IP網站擷取相關IP轉換服務。

上傳資源(ip2region.jar)

  1. 下載ip2region.jar

    說明

    ip2region.jar資源範例僅為教程使用。

  2. 在Data Studio頁面左側導覽列單擊image,進入資源管理頁面,單擊image > 建立資源 > MaxCompute Jar,設定資源名稱後,進入資源上傳頁面。

    說明

    資源名稱無需與上傳的檔案名稱保持一致。

  3. 檔案來源選擇本地,單擊檔案內容後的點擊上傳,選擇已下載至本地的ip2region.jar

  4. 資料來源選擇準備環境階段綁定的MaxCompute計算資源。

  5. 在節點工具列單擊儲存,然後單擊發布,根據發布面板提示,將資源發布至開發環境和生產環境對應的MaxCompute專案中。

註冊函數(getregion)

  1. 在資源管理頁面,單擊image > 建立函數 > MaxCompute Function,設定資源名稱後,進入註冊函數頁面(本教程函數命名為getregion)。

  2. 註冊函數頁面,配置相關參數。以下為本教程所需配置的關鍵參數,未說明參數保持預設即可。

    參數

    描述

    函數類型

    選擇OTHER

    資料來源

    選擇準備環境階段綁定的MaxCompute計算資源。

    類名

    輸入org.alidata.odps.udf.Ip2Region

    資源清單

    選擇ip2region.jar

    描述

    IP地址轉換地區。

    命令格式

    輸入getregion('ip')

    參數說明

    IP地址。

  3. 在節點工具列單擊的儲存,然後單擊發布,根據發布面板提示,將函數發布至開發環境和生產環境對應的MaxCompute專案中。

三、配置資料加工節點

資料加工需要將每層加工邏輯通過MaxCompute SQL調度實現,本教程已提供完整的資料加工SQL範例程式碼,您需要依次為dwd_log_info_didws_user_info_all_diads_user_info_1d節點配置。

配置dwd_log_info_di節點

在本節點的範例程式碼中,利用建立的函數處理上遊表ods_raw_log_d欄位的SQL代碼,並將其寫入dwd_log_info_di表中。

  1. 在Data Studio左側導覽列單擊image,進入資料開發頁面,然後在專案目錄地區找到已建立好的工作流程,單擊進入工作流程編排頁。

  2. 在工作流程編排頁面中,滑鼠移至上方至dwd_log_info_di節點上,單擊開啟節點

  3. 將如下代碼粘貼至節點編輯頁面。

    dwd_log_info_di節點程式碼範例

    -- 建立dwd_log_info_di表
    CREATE TABLE IF NOT EXISTS dwd_log_info_di (
     ip STRING COMMENT 'ip地址',
     uid STRING COMMENT '使用者ID',
     time STRING COMMENT '時間yyyymmddhh:mi:ss',
     status STRING COMMENT '伺服器返回狀態代碼',
     bytes STRING COMMENT '返回給用戶端的位元組數',
     region STRING COMMENT '地區,根據ip得到',
     method STRING COMMENT 'http請求類型',
     url STRING COMMENT 'url',
     protocol STRING COMMENT 'http協議版本號碼',
     referer STRING COMMENT '來源url',
     device STRING COMMENT '終端類型 ',
     identity STRING COMMENT '訪問類型 crawler feed user unknown'
    )
    PARTITIONED BY (
     dt STRING
    )
    LIFECYCLE 14;
    
    -- 加工資料
    -- 情境:以下SQL使用函數getregion對原始日誌資料中的ip進行解析,並通過正則等方式,將未經處理資料拆解為可分析欄位寫入並寫入dwd_log_info_di表。
    --      本教程已為您準備好用於將IP解析為地區的函數getregion。
    -- 補充:
    --     1. 在DataWorks節點中使用函數前,您需要先將註冊函數所需資源上傳至DataWorks,再通過可視化方式使用該資源註冊函數。
    --        本教程註冊函數getregion所用的資源為ip2region.jar。
    --     2. DataWorks提供調度參數,可實現調度情境下,將每日增量資料寫入目標表對應業務分區。
    --        在實際開發情境下,您可通過${變數名}格式定義代碼變數,並在調度配置頁面通過為變數賦值調度參數的方式,實現調度情境下代碼動態入參。
    INSERT OVERWRITE TABLE dwd_log_info_di PARTITION (dt='${bizdate}')
    SELECT ip 
      , uid
      , time
      , status
      , bytes 
      , getregion(ip) AS region --使用自訂UDF通過IP得到地區。
      , regexp_substr(request, '(^[^ ]+ )') AS method --通過正則把request差分為3個欄位。
      , regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') AS url
      , regexp_substr(request, '([^ ]+$)') AS protocol 
      , regexp_extract(referer, '^[^/]+://([^/]+){1}') AS referer --通過正則清晰refer,得到更精準的URL。
      , CASE
        WHEN TOLOWER(agent) RLIKE 'android' THEN 'android' --通過agent得到終端資訊和訪問形式。
        WHEN TOLOWER(agent) RLIKE 'iphone' THEN 'iphone'
        WHEN TOLOWER(agent) RLIKE 'ipad' THEN 'ipad'
        WHEN TOLOWER(agent) RLIKE 'macintosh' THEN 'macintosh'
        WHEN TOLOWER(agent) RLIKE 'windows phone' THEN 'windows_phone'
        WHEN TOLOWER(agent) RLIKE 'windows' THEN 'windows_pc'
        ELSE 'unknown'
      END AS device
      , CASE
        WHEN TOLOWER(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler'
        WHEN TOLOWER(agent) RLIKE 'feed'
        OR regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') RLIKE 'feed' THEN 'feed'
        WHEN TOLOWER(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)'
        AND agent RLIKE '^[Mozilla|Opera]'
        AND regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') NOT RLIKE 'feed' THEN 'user'
        ELSE 'unknown'
      END AS identity
      FROM (
        SELECT SPLIT(col, '##@@')[0] AS ip
        , SPLIT(col, '##@@')[1] AS uid
        , SPLIT(col, '##@@')[2] AS time
        , SPLIT(col, '##@@')[3] AS request
        , SPLIT(col, '##@@')[4] AS status
        , SPLIT(col, '##@@')[5] AS bytes
        , SPLIT(col, '##@@')[6] AS referer
        , SPLIT(col, '##@@')[7] AS agent
      FROM ods_raw_log_d  
      WHERE dt ='${bizdate}'
    ) a;
  4. 配置調試參數。

    在MaxCompute SQL節點編輯頁面右側單擊回合組態,配置以下參數,用於在步驟四調試運行中使用回合組態的相關參數測試回合。

    配置項

    配置說明

    計算資源

    選擇準備環境階段綁定的MaxCompute計算資源以及其對應的計算配額。

    資源群組

    選擇準備環境階段購買的Serverless資源群組。

    指令碼參數

    無需配置。本教程提供的範例程式碼中統一使用${bizdate}表示業務日期,在步驟四調試運行工作流程時,設定本次運行值為具體常量(例如20250223),任務運行將會使用此常量替換任務中定義的變數。

  5. (可選)配置調度屬性。

    本教程調度配置相關參數保持預設即可,您可以在MaxCompute SQL頁面右側單擊調度配置。調度配置中參數的詳細說明,詳情可參見節點調度配置

    • 調度參數:本教程已在工作流程調度參數中統一配置,工作流程內部節點無需配置,在任務或代碼中可直接使用。

    • 調度策略:您可以在延時執行時間參數中指定子節點在工作流程執行後,延遲多久再執行,本教程不設定。

  6. 在節點工具列單擊儲存

配置dws_user_info_all_di節點

本節點對使用者基本資料表(ods_user_info_d)和初步加工後的日誌資料表(dwd_log_info_di)進行匯總,將資料寫入dws_user_info_all_di表中。

  1. 在工作流程編排頁面中,滑鼠移至上方至dws_user_info_all_di節點上,單擊開啟節點

  2. 將如下代碼粘貼至節點編輯頁面。

    dws_user_info_all_di節點程式碼範例

    -- 建立dws_user_info_all_di表
    CREATE TABLE IF NOT EXISTS dws_user_info_all_di (
     uid STRING COMMENT '使用者ID',
     gender STRING COMMENT '性別',
     age_range STRING COMMENT '年齡段',
     zodiac STRING COMMENT '星座',
     region STRING COMMENT '地區,根據ip得到',
     device STRING COMMENT '終端類型 ',
     identity STRING COMMENT '訪問類型 crawler feed user unknown',
     method STRING COMMENT 'http請求類型',
     url STRING COMMENT 'url',
     referer STRING COMMENT '來源url',
     time STRING COMMENT '時間yyyymmddhh:mi:ss'
    )
    PARTITIONED BY (
     dt STRING
    )
    LIFECYCLE 14;
    
    -- 加工資料
    -- 情境:將加工後的日誌資料dwd_log_info_di與使用者基本資料資料ods_user_info_d匯總寫入dws_user_info_all_di表。
    -- 補充:DataWorks提供調度參數,可實現調度情境下,將每日增量資料寫入目標表對應業務分區。
    --      在實際開發情境下,您可通過${變數名}格式定義代碼變數,並在調度配置頁面通過為變數賦值調度參數的方式,實現調度情境下代碼動態入參。
    INSERT OVERWRITE TABLE dws_user_info_all_di  PARTITION (dt='${bizdate}')
    SELECT COALESCE(a.uid, b.uid) AS uid
      , b.gender
      , b.age_range
      , b.zodiac
      , a.region
      , a.device
      , a.identity
      , a.method
      , a.url
      , a.referer
      , a.time
    FROM (
      SELECT *
      FROM dwd_log_info_di  
      WHERE dt = '${bizdate}'
    ) a
    LEFT OUTER JOIN (
      SELECT *
      FROM ods_user_info_d
      WHERE dt = '${bizdate}'
    ) b
    ON a.uid = b.uid;
  3. 配置調試參數。

    在MaxCompute SQL節點編輯頁面右側單擊回合組態,配置以下參數,用於在步驟四調試運行中使用回合組態的相關參數測試回合。

    配置項

    配置說明

    計算資源

    選擇準備環境階段綁定的MaxCompute計算資源以及其對應的計算配額。

    資源群組

    選擇準備環境階段購買的Serverless資源群組。

    指令碼參數

    無需配置。本教程提供的範例程式碼中統一使用${bizdate}表示業務日期,在步驟四調試運行工作流程時,設定本次運行值為具體常量(例如20250223),任務運行將會使用此常量替換任務中定義的變數。

  4. (可選)配置調度屬性。

    本教程調度配置相關參數保持預設即可,您可以在MaxCompute SQL頁面右側單擊調度配置。調度配置中參數的詳細說明,詳情可參見節點調度配置

    • 調度參數:本教程已在工作流程調度參數中統一配置,工作流程內部節點無需配置,在任務或代碼中可直接使用。

    • 調度策略:您可以在延時執行時間參數中指定子節點在工作流程執行後,延遲多久再執行,本教程不設定。

  5. 在節點工具列單擊儲存

配置ads_user_info_1d節點

本節點對dws_user_info_all_di表中資料進一步加工,將資料寫入ads_user_info_1d表,產出基本使用者畫像。

  1. 在工作流程編排頁面中,滑鼠移至上方至ads_user_info_1d節點上,單擊開啟節點

  2. 將如下代碼粘貼至節點編輯頁面。

    ads_user_info_1d節點程式碼範例

    -- 建立ads_user_info_1d表
    CREATE TABLE IF NOT EXISTS ads_user_info_1d (
     uid STRING COMMENT '使用者ID',
     region STRING COMMENT '地區,根據ip得到',
     device STRING COMMENT '終端類型 ',
     pv BIGINT COMMENT 'pv',
     gender STRING COMMENT '性別',
     age_range STRING COMMENT '年齡段',
     zodiac STRING COMMENT '星座'
    )
    PARTITIONED BY (
     dt STRING
    )
    LIFECYCLE 14;    
    
    -- 加工資料
    -- 情境:以下SQL用於對使用者訪問資訊寬表dws_user_info_all_di進一步加工產出基本的使用者畫像資料寫入ads_user_info_1d表。
    -- 補充:DataWorks提供調度參數,可實現調度情境下,將每日增量資料寫入目標表對應業務分區。
    --      在實際開發情境下,您可通過${變數名}格式定義代碼變數,並在調度配置頁面通過為變數賦值調度參數的方式,實現調度情境下代碼動態入參。
    INSERT OVERWRITE TABLE ads_user_info_1d  PARTITION (dt='${bizdate}')
    SELECT uid
      , MAX(region)
      , MAX(device)
      , COUNT(0) AS pv
      , MAX(gender)
      , MAX(age_range)
      , MAX(zodiac)
    FROM dws_user_info_all_di
    WHERE dt = '${bizdate}'
    GROUP BY uid; 
  3. 配置調試參數。

    在MaxCompute SQL節點編輯頁面右側單擊回合組態,配置以下參數,用於在步驟四調試運行中使用回合組態的相關參數測試回合。

    配置項

    配置說明

    計算資源

    選擇準備環境階段綁定的MaxCompute計算資源以及其對應的計算配額。

    資源群組

    選擇準備環境階段購買的Serverless資源群組。

    指令碼參數

    無需配置。本教程提供的範例程式碼中統一使用${bizdate}表示業務日期,在步驟四調試運行工作流程時,設定本次運行值為具體常量(例如20250223),任務運行將會使用此常量替換任務中定義的變數。

  4. (可選)配置調度屬性。

    本教程調度配置相關參數保持預設即可,您可以在MaxCompute SQL頁面右側單擊調度配置。調度配置中參數的詳細說明,詳情可參見節點調度配置

    • 調度參數:本教程已在工作流程調度參數中統一配置,工作流程內部節點無需配置,在任務或代碼中可直接使用。

    • 調度策略:您可以在延時執行時間參數中指定子節點在工作流程執行後,延遲多久再執行,本教程不設定。

  5. 在節點工具列單擊儲存

四、加工資料

  1. 加工資料。

    在工作流程工具列中,單擊運行,設定各節點定義的參數變數在本次運行中的取值(本教程使用20250223,您可以按需修改),單擊確定後,等待運行完成。

  2. 查詢資料加工結果。

    1. 在Data Studio左側導覽列單擊image,進入資料開發頁面,然後在個人目錄地區,單擊image,建立一個尾碼為.sql的檔案(檔案名稱自訂即可)。

    2. 在頁面底部如下位置確認語言模式是否為MaxCompute SQLimage

    3. 在SQL編輯視窗中輸入如下SQL語句,查看最終結果表ads_user_info_1d的記錄數,確認是否產生資料加工結果。

      -- 此處您需要修改分區過濾條件為您當前操作的實際業務日期。本教程中,前文配置的調試參數bizdate(業務日期)為20250223。
      SELECT count(*) FROM ads_user_info_1d WHERE dt='業務日期';
      • 上述命令查詢存在資料,即表示資料加工已完成。

      • 如果沒有資料,請確保運行工作流程時,配置的本次運行值與此處查詢時dt指定的業務日期一致,您可以單擊工作流程,單擊右側的運行歷史,在運行記錄右側操作列單擊查看,然後在工作流程的作業記錄中確認運行工作流程時業務日期的取值(partition=[pt=xxx])。

五、發布工作流程

任務需要發布至生產環境後才可自動調度運行,您可以參考如下步驟,將工作流程發布至生產環境。

說明

本教程已在工作流程調度配置中統一配置了調度參數,發布前無需再為每個節點單獨配置調度參數。

  1. 在Data Studio左側導覽列單擊image,進入資料開發頁面,然後在專案目錄地區找到已建立好的工作流程,單擊進入工作流程編排頁面。

  2. 單擊節點工具列中的發布,開啟發布面板。

  3. 單擊開始發布生產,在彈出的發布方式確認視窗內,根據實際需求選擇發布方式:

    • 全量發布:發布當前工作流程以及內部的所有任務。

    • 增量發布:僅發布當前工作流程,以及所儲存內容相較於當前所有發布環境基準存在變更的內部任務節點,適用於迭代最佳化,小範圍更新等情境。

      image.png

  4. 確認發布方式後,系統將自動執行發布流程,依次將工作流程和所選任務節點發布到開發環境和生產環境;在發布到生產環境環節,需單擊確認發布完成最終操作。

    image

六、在生產環境運行任務

任務發布後,在次日才會產生執行個體運行,您可以通過補資料來對發行流程進行補資料操作,以便查看任務在生產環境是否可以運行,詳情可參見補資料執行個體營運

  1. 任務發布成功後,單擊右上方的營運中心

    您也可以單擊左上方的表徵圖表徵圖,選擇全部產品 > 資料開發與營運 > 營運中心(工作流程)

  2. 單擊左側導覽列中的周期任務營運 > 周期任務,進入周期任務頁面,單擊workshop_start虛節點。

  3. 在右側的DAG圖中,按右鍵workshop_start節點,選擇補資料 > 當前節點及下遊節點

  4. 勾選需要補資料的任務,設定業務日期,單擊提交並跳轉

  5. 在補資料頁面單擊重新整理,直至SQL任務全部運行成功即可。

說明

案例完成後,為了避免後續持續產生費用,您可以選擇設定節點調度有效期間或者凍結商務程序根節點(虛擬節點workshop_start)。

後續步驟

  • 資料視覺效果展現:使用者Portrait analysis完成後,使用資料分析模組,將加工後的資料以圖表形式直觀展示,便於您快速提取關鍵資訊,洞察資料背後的業務趨勢。

  • 監控資料品質:為資料加工產生的表配置資料品質監控,提前識別髒資料並進行攔截,避免髒資料影響擴大。

  • 管理資料:使用者Portrait analysis任務流程完成後,在MaxCompute內將建立對應資料表。產生的資料表可在資料地圖模組進行查看,可通過血緣查看產生表之間的關係。

  • API資料服務:擷取最終加工後的資料後,使用資料服務模組,通過標準化的資料服務介面,實現資料的共用與應用,為其他使用API接收資料的業務模組提供資料。