Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
taakwaarden verwijzen naar de Databricks Utilities taskValues subutiliteit, waarmee u willekeurige waarden tussen taken in een Databricks-taak kunt doorgeven. Zie het hulpprogramma taskValues (dbutils.jobs.taskValues).
U geeft een sleutel-waardepaar op met behulp van dbutils.jobs.taskValues.set() in een taak en kunt vervolgens de taaknaam en sleutel gebruiken om naar de waarde te verwijzen in daaropvolgende taken.
Notitie
Omdat dbutils.jobs.taskValues.set() en dbutils.jobs.taskValues.get() in de subutiliteit van de dbutils.jobs.taskValues Python-functies zijn, kunnen ze alleen worden gebruikt in notebooks met Python die als taal zijn geselecteerd. U kunt echter verwijzen naar taakwaarden met behulp van dynamische waardeverwijzingen voor alle taken die parameters ondersteunen. Zie Referentietaakwaarden.
Taakwaarden instellen
Stel taakwaarden in Python-notebooks in met behulp van dbutils.jobs.taskValues.set().
Sleutels van taakwaarden moeten tekenreeksen zijn. Elke sleutel moet uniek zijn als u meerdere taakwaarden hebt gedefinieerd in een notebook.
U kunt taakwaarden handmatig of programmatisch toewijzen aan sleutels. Alleen waarden die als geldige JSON kunnen worden uitgedrukt, zijn toegestaan. De grootte van de JSON-weergave van de waarde mag niet groter zijn dan 48 KiB.
In het volgende voorbeeld wordt bijvoorbeeld een statische tekenreeks ingesteld voor de sleutel fave_food:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
Het volgende voorbeeld gebruikt een notebook-taakparameter om alle updaterecords voor een bepaalde boeking op te vragen en de huidige boekingsstatus en het totale aantal records terug te geven:
from pyspark.sql.functions import col
dbutils.widgets.text("booking_id", "51567", "Booking ID")
booking_id = dbutils.widgets.get("booking_id")
query = (spark.read.table("samples.wanderbricks.booking_updates")
.orderBy(col("updated_at"), ascending=False)
.where(col("booking_id") == booking_id)
.select(col("status"))
)
dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "booking_status", value = query.take(1)[0][0])
U kunt lijsten met waarden doorgeven met dit patroon en deze vervolgens gebruiken om downstreamlogica te coƶrdineren, zoals voor elke taken. Zie Een For each taak gebruiken om een andere taak in een lus uit te voeren.
Het volgende voorbeeld haalt de verschillende waarden voor bestemmings-ID uit naar een Python-lijst en stelt dit in als een taakwaarde:
dest_list = list(spark.read.table("samples.wanderbricks.properties").select("destination_id").distinct().toPandas()["destination_id"])
dbutils.jobs.taskValues.set(key = "dest_list", value = dest_list)
Referentietaakwaarden
Databricks raadt aan om te verwijzen naar taakwaarden als taakparameters die zijn geconfigureerd met behulp van het referentiepatroon voor dynamische waarden {{tasks.<task_name>.values.<value_name>}}.
Als u bijvoorbeeld wilt verwijzen naar de taakwaarde met de sleutel dest_list van een benoemde destination_lookuptaak, gebruikt u de syntaxis {{tasks.destination_lookup.values.dest_list}}.
Zie Taakparameters configureren en Dynamische waardeverwijzingen.
dbutils.jobs.taskValues.get gebruiken
Voor de syntaxis dbutils.jobs.taskValues.get() moet de naam van de upstream-taak worden opgegeven. Deze syntaxis wordt niet aanbevolen, omdat u taakwaarden in meerdere downstreamtaken kunt gebruiken, wat betekent dat er talloze updates nodig zijn als een taaknaam wordt gewijzigd.
Met deze syntaxis kunt u desgewenst een waarde voor default en een waarde voor debugValue opgeven. De standaardwaarde wordt gebruikt als de sleutel niet kan worden gevonden. Met de debugValue kunt u een statische waarde instellen die moet worden gebruikt tijdens het handmatig ontwikkelen en testen van code in notebooks voordat u het notebook als taak plant.
In het volgende voorbeeld wordt de waarde van de sleutel booking_status opgehaald, die is opgenomen in de taaknaam booking_lookup. De waarde confirmed wordt alleen geretourneerd wanneer u het notebook interactief uitvoert.
booking_status = dbutils.jobs.taskValues.get(taskKey = "booking_lookup", key = "booking_status", debugValue = "confirmed")
Notitie
Databricks raadt niet aan om standaardwaarden in te stellen, omdat het lastig kan zijn om verwachte foutberichten op te lossen en te voorkomen vanwege ontbrekende sleutels of onjuist benoemde taken.
Taakwaarden weergeven
De geretourneerde waarde van een taakwaarde voor elke uitvoering wordt weergegeven in het deelvenster Uitvoer van de details van de taakuitvoering. Zie De uitvoeringsgeschiedenis van de taak weergeven.