分享方式:


在迴圈中執行參數化 Azure Databricks 工作任務

本文討論搭配 For each Azure Databricks 作業使用工作,包括在作業 UI 中新增和設定工作的詳細資料。 使用 For each 工作在迴圈中執行另一個工作,將一組不同的參數傳遞至工作的每個反覆項目。

For each 工作新增至作業需要定義兩個工作:For each 工作和巢狀工作。 巢狀工作是針對 For each 工作的每個反覆項目執行的工作,而且是其中一個標準 Azure Databricks 作業工作類型。 您無法將另一個 For each 工作新增為巢狀工作。

例如,您可以使用 For each 工作在多個資料表上執行一組常見的轉換,將資料表名稱從資料表名稱清單傳遞至工作的每個反覆項目。

我可以搭配 For each 工作使用哪些參數類型?

若要從 For each 工作傳遞參數,您可以:

若要瞭解如何在新增或編輯 For each 工作時使用這些不同的參數類型,請參閱下一節將針對每個工作新增至作業

For each 工作新增至作業

您可以在建立作業或編輯現有作業中的工作時新增 For each 工作。 若要設定 For each 工作:

  1. 在 [類型] 下拉式功能表中,選取 [針對每個]

  2. 在 [工作名稱] 欄位中,輸入工作的名稱。

  3. 在 [輸入] 文字方塊中,定義要反覆運算之 For each 工作的值。 這個權限可以是下列其中一項:

    • JSON 格式化的值陣列。 這可以是下列資料類型的陣列:

      • 索引鍵/值組
      • 字串、數字或布林值類型
      • 任意複合的 JSON 物件
    • 工作值參考。 若要參考從上述工作傳遞的工作值,請使用 {{tasks.<task_name>.values.<task_value_name>}} 語法在 [輸入] 文字方塊中設定值。 例如,如果 generate_countries_list 工作前面名為 For each 的工作設定下列工作值:

      dbutils.jobs.taskValues.set(key = "countries", value = countries_array)

      然後 For each 工作會使用下列語法,在 [輸入] 文字方塊中參考工作值:

      {{tasks.generate_countries_list.values.countries}}.

    • 作業參數。 若要參考作業參數,請在 [輸入] 文字方塊中使用下列語法:{{job.parameters.<name>}}。 例如: {{job.parameters.countries}}

  4. 若要選擇性地設定可以並列執行的反覆項目數目,請輸入工作的 [並行] 值。 預設值是 1秒。

  5. 若要選擇性地接收工作開始、成功或失敗的通知,請按下 [+ 新增]。 請參閱新增工作事件的電子郵件和系統通知

  6. 若要完成 For each 工作的設定,並新增巢狀工作以針對每個反覆項目執行,請按下 [新增要循環執行的工作]

  7. 選取巢狀工作的工作類型和組態選項。 巢狀工作是標準工作類型,而且具有相同的組態選項。 請參閱設定和編輯 Databricks 工作

  8. 若要參考從 For each 工作傳遞的參數,請按下 [參數]。 使用 {{input}} 參考將該值設定為每個反覆項目的陣列值,或 {{input.<key>}},以在您逐一查看物件清單時參考個別物件欄位。

    將巢狀工作新增至 [針對每個工作]

  9. 按一下 [建立工作]

For each 工作與巢狀工作之間切換

For each 工作會顯示在 [作業 UI] 中,做為節點內巢狀工作節點的 For each 節點。 若要在 For each 工作與巢狀工作之間切換,請按下個別節點。

作業 UI DAG 檢視切換至 [針對每個工作]

作業 UI DAG 檢視切換至 [巢狀工作]

參考下游工作中的 For each 工作

For each 工作是最上層工作,下游工作可以將它指定為相依性。 下游工作不能相依或參考巢狀工作。

使用 For each 工作執行和監視作業

執行具有 For each 工作的作業,與執行任何其他作業相同。

檢視和管理作業執行也與任何其他作業相同,但 For each 工作的工作執行歷程記錄會呈現為工作反覆項目資料表。 請參閱檢視針對每個工作的工作執行歷程記錄