Partilhar via


Usar valores de tarefa para passar informações entre tarefas

Os valores de tarefa referem-se ao subutilitário Utilitários taskValues Databricks, que permite passar valores arbitrários entre tarefas em um trabalho Databricks. Consulte o subutilitário taskValues (dbutils.jobs.taskValues).

Você especifica um par chave-valor usando dbutils.jobs.taskValues.set() em uma tarefa e, em seguida, pode usar o nome da tarefa e a chave para fazer referência ao valor em tarefas subsequentes.

Nota

Os subutilitários dbutils.jobs.taskValues.set() e dbutils.jobs.taskValues.get() estão disponíveis apenas em notebooks Python. Você pode fazer referência a valores de tarefa usando referências de valor dinâmico para todas as tarefas que suportam parâmetros. Consulte Valores de tarefa de referência.

Definir valores de tarefa

Defina valores de tarefas em blocos de anotações Python usando o subutilitário dbutils.jobs.taskValues.set().

As chaves de valor da tarefa devem ser cadeias de caracteres. Cada chave deve ser exclusiva se você tiver vários valores de tarefa definidos em um bloco de anotações.

Você pode atribuir manualmente ou programaticamente valores de tarefa a chaves. Somente valores que podem ser expressos como JSON válidos são permitidos. O tamanho da representação JSON do valor não pode exceder 48 KiB.

Por exemplo, o exemplo a seguir define uma cadeia de caracteres estática para a chave fave_food:

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

O exemplo a seguir usa um parâmetro de tarefa de bloco de anotações para consultar todos os registros para um número de ordem específico e retornar o status atual do pedido e a contagem 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])

Você pode passar listas de valores usando esse padrão e, em seguida, usá-los para coordenar a lógica downstream, como para cada tarefa. Consulte Executar uma tarefa de trabalho parametrizada do Azure Databricks em um loop.

O exemplo a seguir extrai os valores distintos para ID do produto para uma lista Python e define isso como um valor de tarefa:

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

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

Valores de tarefa de referência

O Databricks recomenda referenciar valores de tarefa como parâmetros de tarefa configurados usando o padrão {{tasks.<task_name>.values.<value_name>}}de referência de valor dinâmico.

Por exemplo, para fazer referência ao valor da tarefa com a chave prod_list de uma tarefa chamada product_inventory, use a sintaxe {{tasks.product_inventory.values.prod_list}}.

Consulte Configurar parâmetros de tarefa e O que é uma referência de valor dinâmico?

Utilizar o comando dbutils.jobs.taskValues.get

A sintaxe dbutils.jobs.taskValues.get() requer a especificação do nome da tarefa upstream. Essa sintaxe não é recomendada, pois você pode usar valores de tarefa em várias tarefas downstream, o que significa que várias atualizações são necessárias se o nome de uma tarefa for alterado.

Usando essa sintaxe, você pode, opcionalmente, especificar um default valor e um debugValuearquivo . O valor padrão é usado se a chave não puder ser encontrada. O debugValue permite que você defina um valor estático para usar durante o desenvolvimento manual de código e teste em blocos de anotações antes de agendar o bloco de anotações como uma tarefa.

O exemplo a seguir obtém o valor para o conjunto de chaves order_status em um nome order_lookupde tarefa . O valor Delivered é retornado somente ao executar o bloco de anotações interativamente.

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

Nota

O Databricks não recomenda a definição de valores padrão, pois eles podem ser desafiadores para solucionar problemas e evitar mensagens de erro esperadas devido a chaves ausentes ou tarefas nomeadas incorretamente.

Ver valores de tarefas

O valor retornado de um valor de tarefa para cada execução é exibido no painel Saída dos detalhes da execução da tarefa. Consulte Ver histórico de execução de tarefas.