Pular para o conteúdo principal

Usar uma tarefa For each para executar outra tarefa em um loop

Este artigo discute o uso da tarefa For each com o trabalho Databricks, incluindo detalhes sobre como adicionar e configurar a tarefa na interface do usuário do trabalho. Use a tarefa For each para executar uma tarefa aninhada em um loop, passando um conjunto diferente de parâmetros para cada iteração da tarefa.

Para adicionar a tarefa For each a um trabalho, é necessário definir duas tarefas: A tarefa For each e uma tarefa aninhada . A tarefa aninhada é a tarefa a ser executada para cada iteração da tarefa For each e é um dos tipos de tarefa padrão do Databricks Jobs. O senhor não pode adicionar outra tarefa For each como a tarefa aninhada.

Por exemplo, o senhor poderia usar a tarefa For each para executar um conjunto comum de transformações em várias tabelas, passando um nome de tabela de uma lista de nomes de tabela para cada iteração da tarefa.

As tarefas aninhadas que não têm dependências entre si podem ser executadas simultaneamente.

Adicionar o For each tarefa a um trabalho

O senhor pode adicionar uma tarefa For each ao criar um trabalho ou editar uma tarefa em um trabalho existente. Para configurar uma tarefa For each:

  1. No menu suspenso Tipo , selecione Para cada um.

  2. Insira um nome para a tarefa no campo Nome da tarefa .

  3. Na caixa de texto Inputs (Entradas ), defina os valores para a tarefa For each a ser iterada como uma matriz de valores formatada em JSON. Para saber mais sobre como passar parâmetros para a tarefa aninhada, consulte Que tipos de parâmetros posso usar com a tarefa For each?

  4. Para definir opcionalmente o número de iterações que podem ser executadas em paralelo, insira um valor de Concurrency para a tarefa. O valor de default é 1.

  5. Para receber notificações opcionais sobre a tarefa começar, sucesso ou falha, clique em + Add (Adicionar ). Consulte Adicionar notificações em um trabalho.

  6. Para concluir a configuração da tarefa For each e adicionar uma tarefa aninhada à execução para cada iteração, clique em Add a tarefa to loop over (Adicionar uma tarefa para repetir) .

  7. Selecione um tipo de tarefa e opções de configuração para a tarefa aninhada. As tarefas aninhadas são tipos de tarefas padrão e têm as mesmas opções de configuração. Consulte Configurar e editar Databricks tarefa.

  8. Para fazer referência aos parâmetros passados pela tarefa For each, clique em Parameters (Parâmetros ). Use a referência {{input}} para definir o valor como o valor da matriz de cada iteração ou {{input.<key>}} para referenciar campos de objetos individuais ao iterar em uma lista de objetos.

    Adicionar uma tarefa aninhada a uma tarefa For each

  9. Clique em Criar tarefa .

Alternar entre a tarefa For each e a tarefa aninhada

A tarefa For each aparece na UI de Jobs como um nó com o nó de tarefa aninhado dentro do nó For each. Para alternar entre a tarefa For each e a tarefa aninhada, clique nos respectivos nós.

Jobs UI DAG view switch to Para cada tarefa

Jobs UI DAG view mudar para tarefa aninhada

Que tipos de parâmetros posso usar com a tarefa For each?

A tarefa For each passa parâmetros para cada iteração da tarefa aninhada. A entrada é uma matriz de objetos, e cada objeto é passado para uma iteração da tarefa aninhada. Há várias maneiras de criar as entradas que a tarefa usa: JSON arrays formatados, valores de tarefa ou parâmetros de trabalho.

nota

Os parâmetros são limitados a 10.000 caracteres ou 48 KB se o senhor usar referências de valores de tarefa. Se seus parâmetros exigirem mais de 48 KB, você poderá passar uma pesquisa para um arquivo de configuração maior. Consulte Usar uma tabela de pesquisa para grandes matrizes de parâmetros.

Uma matriz de valores formatada em JSON

Ao criar ou editar uma tarefa, o senhor pode definir diretamente uma matriz de valores para a tarefa aninhada, usando a caixa de texto Inputs . Isso pode ser uma matriz dos seguintes tipos de dados:

  • par chave-valor
  • strings, números ou Boolean types
  • Objetos JSON arbitrariamente complexos

A caixa de texto Entradas é limitada a 10.000 caracteres.

referências de valores de tarefa

O senhor pode passar valores de tarefa de uma tarefa anterior. Para fazer referência aos valores de tarefa passados, use a sintaxe {{tasks.<task_name>.values.<task_value_name>}} para definir o valor na caixa de texto Inputs (Entradas ). Por exemplo, se uma tarefa chamada generate_countries_list que precede a tarefa For each define o seguinte valor de tarefa:

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

Em seguida, a tarefa For each faz referência ao valor da tarefa na caixa de texto Inputs usando a seguinte sintaxe:

{{tasks.generate_countries_list.values.countries}}.

Os valores da tarefa são limitados a 48 KB. Para saber mais sobre os valores de tarefa, consulte Usar valores de tarefa para passar informações entre tarefas.

Job parâmetros

O senhor também pode usar parâmetros do Job como entrada. Para fazer referência a um parâmetro de trabalho, use a seguinte sintaxe na caixa de texto Inputs (Entradas ): {{job.parameters.<name>}}. Por exemplo, {{job.parameters.countries}}.

Job Os parâmetros são limitados a 10.000 caracteres. Para saber mais sobre os parâmetros do trabalho, consulte Configurar parâmetros do trabalho.

Referência a For each tarefa na tarefa downstream

A tarefa For each é a tarefa de nível superior, e a tarefa downstream pode especificá-la como uma dependência. A tarefa downstream não pode depender ou fazer referência à tarefa aninhada.

executar e monitorar um trabalho com uma For each tarefa

Executar um trabalho com uma tarefa For each é idêntico a executar qualquer outro trabalho.

A visualização e o gerenciamento da execução do trabalho também são idênticos aos de qualquer outro trabalho, exceto pelo histórico de execução da tarefa para um For each tarefa, que é apresentado como uma tabela de iterações da tarefa. O senhor pode ver a história da execução da tarefa em For each tarefa.