Compartilhar via


Usar valores de tarefa para transmitir informações entre tarefas.

Os valores de tarefa referem-se ao subutilitário Databricks Utilities taskValues, que permite passar valores arbitrários entre tarefas em um trabalho do Databricks. Confira 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.

Observação

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 dão suporte a parâmetros. Consulte Valores de tarefa de referência.

Definir valores de tarefa

Defina valores de tarefa em notebooks Python usando o subutilitário dbutils.jobs.taskValues.set().

Chaves de valores de tarefa devem ser cadeias de caracteres. Cada chave deve ser exclusiva se você tiver vários valores de tarefa definidos em um notebook.

Você pode atribuir valores de tarefa manualmente ou programaticamente a chaves. Apenas valores que podem ser expressos como JSON válido 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 notebook para consultar todos os registros de um número de pedido 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á-las para coordenar a lógica downstream, como para cada tarefa. Confira Executar uma tarefa de trabalho do Azure Databricks parametrizada em um loop.

O exemplo a seguir extrai os valores distintos da ID do produto para uma lista do 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 referenciar o valor da tarefa com a chave prod_list definida pela tarefa chamada product_inventory, utilize a sintaxe {{tasks.product_inventory.values.prod_list}}.

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

Use 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 são necessárias várias atualizações se o nome de uma tarefa for alterado.

Usando essa sintaxe, você pode especificar opcionalmente um valor default e um debugValue. O valor padrão será usado se a chave não puder ser encontrada. O debugValue permite que você defina um valor estático a ser usado durante o desenvolvimento e teste manual de código em notebooks antes de agendar o notebook como uma tarefa.

O exemplo a seguir obtém o valor da chave order_status definido em um nome de tarefa order_lookup. O valor Delivered é retornado somente ao executar o notebook interativamente.

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

Observação

O Databricks não recomenda definir valores padrão, pois eles podem ser difíceis de solucionar problemas e evitar mensagens de erro esperadas devido a chaves ausentes ou tarefas nomeadas incorretamente.

Exibir valores de tarefa

O valor retornado de um valor de tarefa para cada execução é exibido no painel Saída dos Detalhes da execução da tarefa. Confira Exibir o histórico de execuções da tarefa.