次の方法で共有


タスク値を使用してタスク間で情報を渡す

タスク値 は、Databricks Utilities taskValues サブユーティリティを参照します。これにより、Databricks ジョブ内のタスク間で任意の値を渡すことができます。 「taskValues サブユーティリティ (dbutils.jobs.taskValues)」を参照してください。

1 つのタスクで dbutils.jobs.taskValues.set() を使用してキーと値のペアを指定し、タスク名とキーを使用して後続のタスクの値を参照できます。

Note

サブユーティリティの 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 ジョブ タスクをループで実行する」を参照してください。

次の例では、製品 ID の個別の値を 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")

Note

Databricks では、既定値の設定は推奨されません。キーの欠如やタスクの名前が正しくないため、トラブルシューティングが難しく、予期されるエラー メッセージを防ぐのが困難な場合があるためです。

タスク値を表示する

各実行のタスク値の戻り値は、[タスク実行の詳細][出力] パネルに表示されます。 「タスクの実行履歴を表示する」を参照してください。