Freigeben über


Verwenden von Aufgabenwerten zur Weitergabe von Informationen zwischen Aufgaben

Aufgabenwerte beziehen sich auf das Unterhilfsprogramm taskValues von Databricks Utilities, mit der Sie beliebige Werte zwischen Aufgaben in einem Databricks-Job übergeben können. Weitere Informationen finden Sie unter taskValues-Unterhilfsprogramm (dbutils.jobs.taskValues).

Sie geben ein Schlüssel-Wert-Paar in einer Aufgabe mit dbutils.jobs.taskValues.set() an und können dann den Aufgabennamen und den Schlüssel verwenden, um in nachfolgenden Aufgaben auf den Wert zu verweisen.

Hinweis

Die Unterhilfsprogramme dbutils.jobs.taskValues.set() und dbutils.jobs.taskValues.get() sind nur in Python-Notebooks verfügbar. Sie können auf Aufgabenwerte verweisen, indem Sie dynamische Wertverweise für alle Aufgaben verwenden, die Parameter unterstützen. Siehe Referenzaufgabenwerte.

Aufgabenwerte festlegen

Legen Sie Aufgabenwerte in Python-Notebooks mithilfe des Unterhilfsprogramms dbutils.jobs.taskValues.set() fest.

Aufgabenwertschlüssel müssen Zeichenketten sein. Jeder Schlüssel muss eindeutig sein, wenn mehrere Aufgabenwerte in einem Notebook definiert sind.

Sie können Aufgabenwerte manuell oder programmgesteuert Schlüsseln zuweisen. Es sind nur Werte zulässig, die als gültiges JSON ausgedrückt werden können. Die Größe der JSON-Darstellung des Werts darf 48 KiB nicht überschreiten.

Im folgenden Beispiel wird beispielsweise eine statische Zeichenfolge für den Schlüssel fave_foodfestgelegt:

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

Im folgenden Beispiel wird ein Notebook-Aufgabenparameter verwendet, um alle Datensätze für eine bestimmte Bestellnummer abzufragen und den aktuellen Bestellstatus und die Gesamtanzahl der Datensätze zurückzugeben:

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])

Sie können Listen mit Werten mithilfe dieses Musters übergeben und diese dann verwenden, um die Downstream-Logik zu koordinieren, z. B. für jede Aufgabe. Siehe Ausführen einer parametrisierten Azure Databricks-Auftragsaufgabe in einer Schleife.

Im folgenden Beispiel werden die unterschiedlichen Werte für die Produkt-ID in eine Python-Liste extrahiert und als Aufgabenwert festgelegt:

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

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

Referenzaufgabenwerte

Databricks empfiehlt das Verweisen auf Aufgabenwerte als Aufgabenparameter, die mithilfe des dynamischen Wertvreferenzmusters {{tasks.<task_name>.values.<value_name>}} konfiguriert sind.

Um zum Beispiel den Aufgabenwert mit dem Schlüssel prod_list einer Aufgabe mit dem Namen product_inventory zu referenzieren, verwenden Sie die Syntax {{tasks.product_inventory.values.prod_list}}.

Siehe Konfigurieren von Vorgangsparametern und Was ist eine dynamische Wertreferenz?

Verwenden Sie dbutils.jobs.taskValues.get

Für die Syntax dbutils.jobs.taskValues.get() ist die Angabe des Upstream-Aufgabennamens erforderlich. Diese Syntax wird nicht empfohlen, da Sie Aufgabenwerte in mehreren nachgelagerten Aufgaben verwenden können, was bedeutet, dass zahlreiche Aktualisierungen erforderlich sind, wenn sich ein Aufgabenname ändert.

Mithilfe dieser Syntax können Sie optional einen default-Wert und ein debugValue festlegen. Der Standardwert wird verwendet, wenn der Schlüssel nicht gefunden werden kann. debugValue ermöglicht es Ihnen, einen statischen Wert festzulegen, der während der manuellen Codeentwicklung und beim Testen in Notebooks verwendet werden soll, bevor Sie das Notebook als Aufgabe planen.

Im folgenden Beispiel wird der Wert für den Schlüssel order_status abgerufen, der in einem Aufgabennamen order_lookup festgelegt ist. Der Wert Delivered wird nur zurückgegeben, wenn das Notebook interaktiv ausgeführt wird.

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

Hinweis

Databricks empfiehlt das Festlegen von Standardwerten nicht, da es schwierig sein kann, erwartete Fehlermeldungen aufgrund fehlender Schlüssel oder falsch benannter Aufgaben zu beheben und zu verhindern.

Anzeigen von Aufgabenwerten

Der zurückgegebene Wert eines Aufgabenwerts für jede Ausführung wird im Ausgabe-Bereich der Aufgabenausführungsdetails angezeigt. Weitere Informationen finden Sie unter Anzeigen des Ausführungsverlaufs von Aufgaben.