共用方式為


使用任務值在任務之間傳遞資訊

任務值是指 Databricks 公用程式 taskValues 子公用程式,這可讓您在 Databricks 工作中的任務之間傳遞任意值。 請參閱 taskValues 子公用程式 (dbutils.jobs.taskValues)

您可以在一個任務中使用 dbutils.jobs.taskValues.set() 來指定索引鍵/值組,然後使用任務名稱和索引鍵來參考後續任務中的值。

注意

子公用程式 dbutils.jobs.taskValues.set()dbutils.jobs.taskValues.get() 僅在 Python 筆記本可用。 您可以使用支援參數之所有任務的動態值參考來參考任務值。 請參閱參考任務值

設定任務值

使用子公用程式 dbutils.jobs.taskValues.set(),在 Python 筆記本中設定任務值。

任務值索引鍵必須是字串。 如果您的筆記本中定義了多個任務值,則每個索引鍵都必須是唯一的。

您可以手動或以程式設計方式將任務值指派給索引鍵。 僅允許可以有效 JSON 表示的值。 值的 JSON 表示法大小不能超過 48 KiB。

例如,下列範例會設定索引鍵 fave_food 的靜態字串:

dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")

下列範例會使用筆記本任務參數來查詢特定訂單編號的所有記錄,並傳回目前的訂單狀態和記錄總數:

from pyspark.sql.functions import col

order_num = dbutils.widgets.get("order_num")

query = (spark.read.table("orders")
  .orderBy(col("updated"), ascending=False)
  .select(col("order_status"))
  .where(col("order_num") == order_num)
)

dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_status", value = query.take(1)[0][0])

您可以使用此模式來傳遞值清單,然後使用它們來協調下游邏輯,例如針對每項任務。 請參閱在迴圈中執行參數化 Azure Databricks 工作任務

下列範例會將產品識別碼的相異值擷取至 Python 清單,並將此值設定為任務值:

prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])

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

參考任務值

Databricks 建議使用動態值參考模式 {{tasks.<task_name>.values.<value_name>}},將任務值參考為設定的任務參數。

例如,若要參考名為 product_inventory 的任務中帶有索引鍵 prod_list 的任務值,請使用語法 {{tasks.product_inventory.values.prod_list}}

請參閱設定任務參數什麼是動態值參考?

使用 dbutils.jobs.taskValues.get

語法 dbutils.jobs.taskValues.get() 需要指定上游任務名稱。 不建議使用此語法,因為您可以在多個下游任務中使用任務值,這表示如果任務名稱變更,則需要進行大量更新。

使用此語法,您可以選擇性地指定 default 值和 debugValue。 如果找不到索引鍵,則會使用預設值。 debugValue 可讓您設定靜態值,以便在筆記本中進行手動程式碼開發和測試期間使用,再將筆記本排程為任務。

下列範例會取得任務名稱 order_lookup 中設定的索引鍵 order_status 的值。 僅當以互動方式執行筆記本時才會傳回值 Delivered

order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")

注意

Databricks 不建議設定預設值,因為它們可能難以進行疑難排解,並防止由於遺漏索引鍵或錯誤命名的任務而出現預期的錯誤訊息。

檢視任務值

每個執行的任務值的傳回值會顯示在 [任務執行詳細資料] 的 [輸出] 面板中。 請參閱檢視任務執行歷程記錄