Compartir vía


Consulte Uso de valores de tareas para pasar información entre tareas

Los valores de tarea hacen referencia a la subutilidad de utilidades taskValues de Databricks, que permite pasar valores arbitrarios entre tareas de un trabajo de Databricks. Consulte Utilidad secundaria taskValues (dbutils.jobs.taskValues).

Especifique un par clave-valor mediante dbutils.jobs.taskValues.set() en una tarea y, a continuación, puede usar el nombre y la clave de la tarea para hacer referencia al valor en las tareas posteriores.

Nota:

Las utilidades dbutils.jobs.taskValues.set() y dbutils.jobs.taskValues.get() solo están disponibles en cuadernos de Python. Puede hacer referencia a valores de tarea mediante referencias de valor dinámico para todas las tareas que admiten parámetros. Consulte Referencia a los valores de la tarea.

Definir los valores de tarea

Defina valores de tarea en cuadernos de Python mediante la subutilidad dbutils.jobs.taskValues.set().

Las claves de los valores de tarea deben ser cadenas. Cada clave debe ser única si tiene varios valores de tarea definidos en un cuaderno.

Puede asignar manualmente o mediante programación valores de tarea a claves. Solo se permiten los valores que se pueden expresar como JSON válidos. El tamaño de la representación JSON del valor no puede superar los 48 KiB.

Por ejemplo, en el ejemplo siguiente se establece una cadena estática para la clave fave_food:

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

En el ejemplo siguiente se usa un parámetro de tarea de cuaderno para consultar todos los registros de un número de pedido determinado y devolver el estado actual del pedido y el recuento total de registros:

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

Puede pasar listas de valores mediante este patrón y, a continuación, usarlas para coordinar la lógica de bajada, como para cada tarea. Consulta Ejecución de una tarea parametrizada de trabajo de Azure Databricks en bucle.

En el ejemplo siguiente se extraen los valores distintos del identificador de producto en una lista de Python y se establece como un valor de tarea:

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

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

Referencia a los valores de la tarea

Databricks recomienda hacer referencia a valores de tarea como parámetros de tarea configurados mediante el patrón de referencia {{tasks.<task_name>.values.<value_name>}} de valor dinámico.

Por ejemplo, para hacer referencia al valor de tarea con la clave prod_list a partir de una tarea denominada product_inventory, use la sintaxis {{tasks.product_inventory.values.prod_list}}.

Consulte ¿Qué es una referencia de valores dinámicos? y Configuración de parámetros de tarea.

Use dbutils.jobs.taskValues.get

La sintaxis dbutils.jobs.taskValues.get() requiere especificar el nombre de la tarea ascendente. Esta sintaxis no se recomienda, ya que puede usar valores de tarea en varias tareas de bajada, lo que significa que se necesitan numerosas actualizaciones si cambia un nombre de tarea.

Con esta sintaxis, puede especificar opcionalmente un valor default y un debugValue. El valor predeterminado se usa si no se encuentra la clave. debugValue le permite establecer un valor estático que se usará durante el desarrollo manual de código y las pruebas en cuadernos antes de programar el cuaderno como una tarea.

En el ejemplo siguiente se obtiene el valor del conjunto de claves order_status en un nombre de tarea order_lookup. El valor Delivered solo se devuelve cuando se ejecuta el cuaderno de forma interactiva.

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

Nota:

Databricks no recomienda establecer valores predeterminados, ya que pueden ser difíciles de solucionar y evitar mensajes de error esperados debido a que faltan claves o tareas con nombres incorrectos.

Visualización de los valores de tarea

El valor devuelto de un valor de tarea para cada ejecución se muestra en el panel Salida de los detalles de la ejecución de la tarea. Para obtener más información, consulte Visualización del historial de ejecución de tareas.