Partilhar via


Utilize a tarefa values para passar informações entre tarefas.

As tarefas , values, e referem-se ao subutilitário Databricks Utilities taskValues, que permite passar values arbitrárias entre tarefas num 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 referenciar a tarefa values usando referências de valor dinâmico para todas as tarefas que oferecem suporte a parameters. Consulte tarefa de referência values.

Set tarefa values

Set tarefa values 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 tiver várias tarefas values definidas num notebook.

Você pode atribuir manualmente ou programaticamente a tarefa values a chaves. Só são permitidos values que possam ser representados como JSON válidos. 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 values usando esse padrão e, em seguida, usá-las 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 o values distinto para ID do produto para um list 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)

Tarefa de referência values

O Databricks recomenda referenciar a tarefa values como tarefa parameters configurada usando o padrão dinâmico de referência de valor {{tasks.<task_name>.values.<value_name>}}.

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 tarefa parameters 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 pode usar a tarefa values em várias tarefas a jusante, significando que são necessárias várias atualizações 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-lhe set um valor estático para usar durante o desenvolvimento manual de código e testes em cadernos antes de agendar o caderno como uma tarefa.

O exemplo a seguir obtém o valor para a chave order_statusset em um nome de tarefa order_lookup. 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 estabelecer valuescomo padrão, pois podem ser difíceis de resolver e impedir mensagens de erro esperadas devido a chaves em falta ou tarefas com nomes incorretos.

Ver tarefa values

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.