全部產品
Search
文件中心

DataWorks:資料開發:開發人員

更新時間:Aug 27, 2024

本文以使用MaxCompute資料來源,在DataWorks上運行MaxCompute作業任務為例,為您介紹開發人員如何使用資料開發(DataStudio)建立一個周期調度任務,協助您快速瞭解資料開發(DataStudio)模組的基本使用。

前提條件

已完成開發前的環境準備,詳情請參見DataWorks準備工作流程

說明
  • 本文以建立ODPS SQL任務為例,因此,工作空間需綁定MaxCompute類型資料來源。

  • 操作帳號需擁有開發許可權,即阿里雲主帳號,或擁有空間管理員開發角色許可權的RAM使用者。

背景資訊

DataWorks的資料開發(DataStudio)面向各引擎(MaxCompute、Hologres、EMR、CDH等)提供可視化開發介面,包括智能代碼開發、資料清洗加工、正常化任務開發與發布等,保證資料開發的高效與穩定。更多資料開發模組的使用,詳情請參見資料開發概述

通常,寫入原始業務資料至DataWorks,並加工為最終結果表的過程如下:

  1. 在DataWorks建立多個資料表。例如:

    • 源表:儲存從其他資料來源同步過來的資料。

    • 結果表:儲存經DataWorks清洗加工過的資料。

  2. 建立同步任務,將業務資料同步至上述源表。

  3. 建立計算節點,對同步任務產出的表資料進行清洗、逐層加工,並將每層結果寫入對應結果表。

您也可以在建立表後,使用直接上傳方式,將本機資料上傳至DataWorks的源表,再通過計算節點進行清洗加工,將加工後的資料存放區至結果表。本文使用直接上傳本機資料,並通過計算類型節點清洗該表資料為例進行說明。

進入資料開發

登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

操作流程

  1. 步驟一:建立商務程序

    資料開發基於商務程序組織與開發代碼,您需要先建立商務程序,才可進行後續的開發工作。

  2. 步驟二:建立表

    DataWorks支援使用可視化方式建立表,並以目錄結構方式在介面展示。資料開發前,您需先在引擎建立用於接收資料清洗結果的表。

  3. 步驟三:建立節點

    DataWorks基於節點進行任務開發,不同類型的引擎任務在DataWorks上被封裝為不同類型的節點。您可根據業務需要,選擇合適的節點進行引擎任務開發。

  4. 步驟四:編輯節點

    根據節點類型,在節點編輯頁面通過對應資料庫的文法編寫業務代碼。

  5. 步驟五:定義節點調度屬性

    用於定義該節點的調度相關屬性,周期性調度運行節點。

  6. 步驟六:調試代碼

    您可使用DataWorks提供的程式碼片段快捷運行、運行、進階運行三種方式調試代碼,驗證代碼邏輯是否正確。

  7. 步驟七:儲存並提交節點

    節點調試無誤後,您需要儲存並提交節點。

  8. 步驟八:煙霧測試 (Smoke Test)

    為保障生產任務高效運行,避免計算資源浪費。任務發布上線前,您可將任務提交至開發環境進行煙霧測試 (Smoke Test),保障任務的正確性。

  9. 步驟九:發布任務

    DataWorks僅支援自動調度發布至生產環境的任務,因此在煙霧測試 (Smoke Test)無誤後,您需將任務發布至生產環境調度系統進行周期調度。

步驟一:建立商務程序

DataWorks以商務程序為中心組織資料開發,通過各類型開發節點的容器看板,將相關工具、最佳化及管理操作圍繞看板對象進行組織,使開發管理更加方便智能。您可根據業務需求,將同類型業務統一放置一個商務程序。

  1. 進入資料開發頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 建立商務程序。

    您可使用如下兩種方式建立:

    • 方式一:滑鼠移至上方至建立表徵圖,單擊建立商務程序

    • 方式二:按右鍵資料開發左側分類樹的商務程序,選擇建立商務程序

  3. 配置商務程序的名稱及描述,單擊建立

    本文樣本建立名為建立第一個周期調度任務的商務程序。實際開發時,請根據您的業務進行規劃。

    說明

    更多商務程序的使用,詳情請參見建立及管理商務程序

步驟二:建立表

DataWorks的資料開發節點會對您的來源資料進行清洗加工,因此,您需先在引擎建立用於接收資料清洗結果的表,並定義表結構。

  1. 建立表。

    1. 在步驟一建立的商務程序中,展開子目錄,按右鍵MaxCompute > ,選擇建立表

    2. 配置表名稱、引擎執行個體等資訊。

    本文樣本分別建立如下兩種表。

    表名稱

    描述

    bank_data

    用於儲存原始業務資料。

    result_table

    用於儲存資料清洗後的結果。

    說明
    • 建表語句請參考建表語句

    • 更多引擎的可視化建表操作,如建立MaxCompute表、建立EMR表等,詳情請參見建立表

  2. 配置表結構。

    進入表編輯頁面,切換至DDL模式,通過DDL語句配置表結構。產生表結構後,在基本屬性地區輸入表的中文名,並將其提交至開發環境與生產環境,提交成功後可在對應環境的資料來源專案查看該表。查看各環境繫結資料源資訊,詳情請參見建立MaxCompute資料來源

    說明
    • 表的新增、更新等操作均需要提交至對應環境後,才會在引擎側生效。

    • 您也可以使用可視化方式,根據業務需求及介面引導配置所需表結構。可視化建表,詳情請參見建立並使用MaxCompute表

    產生表結構。產生bank_data表結構的參考語句如下。

    CREATE TABLE IF NOT EXISTS bank_data
    (
     age             BIGINT COMMENT '年齡',
     job             STRING COMMENT '工作類型',
     marital         STRING COMMENT '婚否',
     education       STRING COMMENT '教育程度',
     default         STRING COMMENT '是否有信用卡',
     housing         STRING COMMENT '房貸',
     loan            STRING COMMENT '貸款',
     contact         STRING COMMENT '聯絡途徑',
     month           STRING COMMENT '月份',
     day_of_week     STRING COMMENT '星期幾',
     duration        STRING COMMENT '期間',
     campaign        BIGINT COMMENT '本次活動聯絡的次數',
     pdays           DOUBLE COMMENT '與上一次聯絡的時間間隔',
     previous        DOUBLE COMMENT '之前與客戶聯絡的次數',
     poutcome        STRING COMMENT '之前行銷活動的結果',
     emp_var_rate    DOUBLE COMMENT '就業變化速率',
     cons_price_idx  DOUBLE COMMENT '消費者物價指數',
     cons_conf_idx   DOUBLE COMMENT '消費者信心指數',
     euribor3m       DOUBLE COMMENT '歐元存款利率',
     nr_employed     DOUBLE COMMENT '職工人數',
     y               BIGINT COMMENT '是否有定期存款'
    );

    產生result_table表結構的參考語句如下。

    CREATE TABLE IF NOT EXISTS result_table
    (
    education STRING COMMENT '教育程度',
    num BIGINT COMMENT '人數'
    )
    PARTITIONED BY
    (
    day STRING,
    hour STRING
    );
  3. 上傳資料。

    將原始業務資料存放區至DataWorks的表(本文樣本為bank_data表)中。本文樣本採用直接上傳方式,匯入本地檔案banking.txt至DataWorks,通過上傳資料類比實際資料寫入情況。操作圖示如下。上傳資料更多上傳資料內容,請參考本機資料上傳至bank_data

步驟三:建立節點

根據業務需求,選擇合適的節點類型進行開發。

說明

目前DataWorks的節點分為資料同步類型節點與計算類型節點兩大類,實際開發過程中,您通常需要先通過離線同步任務將業務資料庫中的資料同步至數倉中,再通過DataWorks計算節點對數倉中的表資料進行清洗加工。

  1. 建立節點。

    您可通過如下兩種方式建立:

    • 方式一:基於分類樹建立。

      1. 在分類樹的商務程序中找到步驟一建立的商務程序。

      2. 按右鍵所需引擎,在建立節點下選擇合適節點。

    • 方式二:基於商務程序面板建立。

      1. 在分類樹的商務程序中找到步驟一建立的商務程序。

      2. 雙擊該商務程序,進入商務程序面板。

      3. 在面板左側導覽列單擊所需節點,或將所需節點拖拽至面板。

  2. 配置節點引擎執行個體、名稱等資訊。

    本文樣本建立名為result_table(與步驟二建立的結果表名稱相同)的ODPS SQL節點。

    說明

    使用DataWorks節點進行資料開發時,通過開發節點清洗資料,再將清洗結果存放至結果表。建議您將結果表名稱作為節點的名稱,以便快速定位該節點產出的表資料。

    建立節點

步驟四:編輯節點

在商務程序分類樹或商務程序面板中找到步驟三建立的節點,雙擊進入節點編輯頁面。根據節點類型,通過對應資料庫的文法編寫業務代碼。

本文樣本在result_table節點中,將bank_data表中指定分區的資料寫入result_table表對應的分區中,並通過變數(dayhour)定義寫入的分區。

說明
  • 代碼開發過程中,若需使用變數動態替換調度情境下的參數,可在代碼中使用${自訂變數名}方式先定義變數,並在步驟五配置調度屬性時為該變數賦值。

  • 調度參數的使用,詳情請參見調度參數支援的格式

  • 不同類型節點任務的開發文法,詳情請參見建立及使用節點

編輯代碼代碼參考如下。

INSERT OVERWRITE TABLE result_table partition (day='${day}', hour='${hour}')
SELECT education
, COUNT(marital) AS num
FROM bank_data
GROUP BY education;

步驟五:定義節點調度屬性

通過定義節點的調度相關屬性,實現周期調度運行目標節點。在節點編輯頁面右側導覽列的調度配置,根據業務需求配置相關屬性。

參數

描述

基礎屬性

節點的名稱、ID、類型、責任人會自動展示,此處無需單獨配置。

說明
  • 責任人預設為當前登入使用者,您可根據實際需求修改。僅支援選擇當前工作空間中的成員為責任人。

  • 節點提交後會自動產生ID。

參數

用於定義節點調度時使用的參數。

DataWorks提供內建參數及相關自訂參數,可供任務調度時實現參數動態賦值。若步驟四編輯代碼時定義了變數,您可在此處對該變數進行賦值。

本文樣本為步驟四的如下變數賦值,用於將bank_data表中業務時間(即昨天)對應的小時資料寫入result_table對應的小時分區:

  • day賦值${yyyymmdd}

  • hour賦值$[hh24]

參數賦值

時間屬性

通過調度配置的時間屬性,配置節點組建循環執行個體的方式,執行個體調度周期與執行時間,是否支援重跑,任務執行超過多長時間自動結束等。

說明
  • 您需配置節點的重跑屬性後才可提交節點。

  • 任務定時時間為單個節點維度,但任務實際已耗用時間與節點依賴的上遊節點其定時時間有關,所以即便當前節點定時時間早於上遊節點,當前節點仍需要等待上遊節點定時時間到並且執行成功後,下遊節點才會執行。

本文樣本設定result_table節點00:00開始運行,每小時調度一次,即每小時將bank_data表中業務時間(即昨天)對應的小時資料寫入result_table表對應的小時分區中。時間周期

資源屬性

用於配置任務發布至生產調度時使用的調度資源群組。本文樣本使用開通DataWorks時預設提供的Serverless資源群組。詳情請參見新增和使用Serverless資源群組

調度依賴

用於定義節點調度的上下遊依賴關係。建議您根據血緣關係來設定節點依賴,通過上遊任務執行成功來確定當前節點依賴的表資料已順利產出,當前節點可正常查詢該上遊表資料。

說明
  • 若當節點查詢(即使用select語句)非DataWorks調度節點產出的表資料,您可選擇自動解析為否,並使用工作空間根節點來調度當前節點運行。

  • 若當前節點查詢(即使用select語句)其他任務產出的表資料,您可通過以下方式配置當前節點依賴的上遊節點(用於產出當前節點查詢的表資料),由該上遊節點調度當前節點運行。

    • 上遊節點非當前商務程序或非當前工作空間中的節點:在當前節點依賴的上遊節點中輸入該上遊節點的節點輸出名稱

    • 上遊節點為當前商務程序中的節點:在商務程序面板通過拖拽連線方式配置。

本文樣本,假設result_table節點查詢的bank_data表為非當前商務程序產出的表資料,則需將工作空間根節點配置為result_table節點依賴的上遊節點,由根節點調度result_table節點運行。

(可選)節點上下文

用於定義節點上下遊間的參數傳遞,實現下遊節點通過參數擷取上遊節點傳遞過來的取值。

說明

該功能通常與賦值節點或賦值參數配合使用。

步驟六:調試代碼

您可使用如下方式調試代碼邏輯,保障代碼編寫的正確性。

方式

使用說明

選擇建議

程式碼:快捷運行

用於快速運行選中的程式碼片段。

需要快捷運行程式碼片段時,可選擇此方式。

工具列:運行運行

支援為代碼指定測試情境下的變數賦值常量。

說明

建立的節點第一次單擊運行時,需要您在彈框中手動為代碼中變數賦值常量,此次賦值會被記錄,下次操作無需再重複賦值。

若您需要頻繁調試全量代碼,可選擇此方式。

工具列:進階運行進階運行

每次單擊此按鈕都需為指定測試情境下的變數賦值常量。

若您需要修改代碼中的變數賦值,可選擇此方式。

本文樣本使用進階運行測試2022.09.07 14:00的運行結果。進階運行

步驟七:儲存並提交節點

節點配置並測試完成後,您需要儲存節點配置,並提交節點至開發環境。

說明

僅當節點在步驟五中配置了重跑屬性依賴的上遊節點後才可提交。

  1. 單擊工具列的儲存表徵圖,儲存節點配置。

  2. 單擊工具列的提交表徵圖,提交節點至開發環境。

步驟八:煙霧測試 (Smoke Test)

為保障生產任務高效運行,避免計算資源浪費,建議您在任務發布前先對任務進行煙霧測試 (Smoke Test)。煙霧測試 (Smoke Test)需在開發環境執行,因此您需將節點提交至開發環境,提交後:

  1. 單擊工具列中的煙霧測試 (Smoke Test)表徵圖,在煙霧測試 (Smoke Test)彈框配置業務日期。

  2. 煙霧測試 (Smoke Test)執行完成後,單擊工具列的查看煙霧測試 (Smoke Test)結果表徵圖,查看測試結果。

本文樣本測試調度參數配置是否符合預期。result_table調度節點00:0023:59每小時執行一次,因此下圖配置中將產生兩個小時執行個體,執行個體定時已耗用時間分別為00:0001:00

說明
  • 執行個體是周期任務根據調度周期運行時產生的任務快照。

  • 由於result_table節點設定為小時調度任務,除配置煙霧測試 (Smoke Test)的業務日期外,您還需選擇運行哪一時間段的執行個體。

  • 更多煙霧測試 (Smoke Test)介紹,詳情請參見執行煙霧測試 (Smoke Test)

煙霧測試 (Smoke Test)

步驟九:發布任務

若當前工作空間為簡單模式工作空間,任務提交後便可周期性調度;若當前工作空間為標準模式工作空間,任務提交後僅處於待發布狀態,您需參考該步驟將任務發布生產,發布後該任務才可進行周期性調度。

說明
  • DataWorks僅支援自動調度發布生產環境的任務。因此,在煙霧測試 (Smoke Test)無誤後,您需將任務發布至生產環境調度系統進行周期調度。

  • 關於簡單模式與標準模式工作空間的說明,詳情請參見必讀:簡單模式和標準模式的區別

在標準模式工作空間下,資料開發(DataStudio)介面提交的操作(包括資料開發節點、資源、函數的新增、更新、刪除等)都將進入任務發布介面等待發布。您需進入任務發布 > 建立發布包將相關操作通過發布流程發布至生產環境,發布後才可生效。發布詳情請參見發布任務

發布流程相關說明如下。

發布相關

說明

發布流程管控

發佈動作受角色許可權和流程式控制制約束,執行發佈動作後請確保發布包狀態為成功。

說明
  • 發布後,請在發布包列表查看發布包狀態。

  • 開發人員僅支援建立發布包,實際發布則需擁有營運許可權。

發布生效時間控制

全量轉執行個體時間(23:30~24:00)執行的發佈動作第三天周期執行個體才會生效。

說明

該限制針對T+1次日產生發布後即時產生執行個體產生方式均生效。執行個體產生方式,詳情請參見執行個體產生方式

後續步驟

您可進入營運中心 > 周期任務營運查看發布至生產環境的離線調度任務,並執行相關營運操作。詳情請參見周期任務基本營運操作