Use uma tarefa For each para executar outra tarefa em um loop
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.
Adicionar a For each tarefa a um Job requer a definição de duas tarefas: a For each tarefa 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 Lakeflow Jobs. Não é possível adicionar outra tarefa For each como a tarefa aninhada.
Por exemplo, você 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 tabelas para cada iteração da tarefa.
Tarefas aninhadas que não têm dependências entre si podem ser executadas simultaneamente.
Adicione a tarefa For each a um Job
Você pode adicionar uma tarefa For each ao criar um Job ou editar uma tarefa em um Job existente. Para configurar uma tarefa For each:
-
Clique
em **Adicionar tarefa**.
-
Insira um nome no campo **Nome da tarefa**.
-
No menu suspenso Tipo , selecione Para cada .
-
Insira um nome para a tarefa no campo Nome da tarefa .
-
Na caixa de texto **Entradas**, defina os valores para a
For eachtarefa iterar como uma matriz de valores formatada em JSON. Para saber mais sobre a passagem de parâmetros para a tarefa aninhada, veja Tipos de parâmetros para a tarefaFor each. -
Para, opcionalmente, definir o número de iterações que podem ser executadas em paralelo, insira um valor de Simultaneidade para a tarefa. O valor padrão é 1.
-
Para receber notificações opcionais de início, sucesso ou falha da tarefa, clique em
Adicionar . Consulte Adicionar notificações em um job.
-
Para concluir a configuração da
For eachtarefa e adicionar uma tarefa aninhada a ser executada em cada iteração, clique em **Adicionar uma tarefa para fazer um loop**. -
Selecione um tipo de tarefa e opções de configuração para a tarefa aninhada. Tarefas aninhadas são tipos de tarefas padrão e têm as mesmas opções de configuração. Consulte Configure e edite tarefas em Jobs do Lakeflow.
-
Para referenciar os parâmetros passados da
For eachtarefa, clique em **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 quando você itera sobre uma lista de objetos.
-
(Opcional) Para configurar novas tentativas, duração da execução ou limites de backlog de transmissão, ou notificações, consulte Configurações avançadas de tarefa.
-
Clique em Salvar tarefa .
Para editar, clonar, desabilitar ou excluir esta tarefa, consulte Configurar e editar tarefas no Lakeflow Jobs.
Alternar entre a For each tarefa e a tarefa aninhada
A tarefa For each aparece na interface do usuário (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 nós correspondentes.


Tipos de parâmetros para 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. Existem várias maneiras de criar as entradas que a tarefa usa: matrizes formatadas em JSON, valores de tarefa ou parâmetros de job.
Os parâmetros são limitados a 5.000 caracteres diretamente na interface do usuário (UI), ou 48 KB se você usar referências de valor de tarefa (onde o valor pode ser muito maior do que o tamanho da string que o descreve), ou 10.000 caracteres para o valor dos parâmetros de Job. 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 arrays de parâmetros.
Uma matriz de valores formatada em JSON
Ao criar ou editar uma tarefa, é possível definir diretamente um array de valores para a tarefa aninhada, usando a caixa de texto **Inputs**. Este pode ser um array dos seguintes tipos de dados:
- par key-value
- Strings, números ou tipos Boolean.
- Objetos JSON arbitrariamente complexos
Por exemplo, se o senhor passar [{"table": "sales"}, {"table": "orders"}], faça referência ao campo na tarefa aninhada com {{input.table}}.
A caixa de texto **Inputs** e, portanto, o JSON passado diretamente nesta caixa, está limitado a 5.000 caracteres.
Referências de valor de tarefa
Você pode passar valores de tarefa de uma tarefa anterior. Para fazer referência a valores de tarefa passados, use a {{tasks.<task_name>.values.<task_value_name>}} sintaxe para definir o valor na caixa de texto **Inputs**. 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)
Então a For each tarefa referencia o valor da tarefa na caixa de texto **Inputs** usando a seguinte sintaxe:
{{tasks.generate_countries_list.values.countries}}.
Você pode inserir até 5.000 caracteres na caixa de texto Entradas , mas os valores que as referências representam podem ser de até 48 KB. Para saber mais sobre valores de tarefa, consulte Use valores de tarefa para passar informações entre tarefas.
Parâmetros do job
Também é possível usar parâmetros de job como entrada. Para referenciar um parâmetro de job, utilize a seguinte sintaxe na caixa de texto{{job.parameters.<name>}} **Entradas**:. Por exemplo, {{job.parameters.countries}}.
Você pode inserir até 5.000 caracteres na caixa de texto **Entradas** para referenciar parâmetros de Job. Os valores dos parâmetros de Job são limitados a 10.000 caracteres. Para saber mais sobre os parâmetros de Job, consulte Configurar parâmetros de Job.
Referenciar uma tarefa For each em tarefas downstream
A tarefa For each é a tarefa de nível superior, e as tarefas a jusante podem especificá-la como uma dependência. As tarefas a jusante não podem depender da tarefa aninhada ou fazer referência a ela.
Uma tarefa For each falha se a tarefa upstream que fornece seus valores de entrada estiver desativada. Consulte Limitações.
Executar e monitorar um Job com uma tarefa For each
Executar um Job com uma tarefa For each é idêntico a executar qualquer outro Job.
A visualização e o gerenciamento das execuções de jobs também são idênticos aos de qualquer outro job, exceto pelo histórico de execução de tarefas para uma tarefa For each, que é apresentado como uma tabela de iterações de tarefas. Consulte Exibir histórico de execução de tarefa para uma tarefa For each.
tutorial
Para construir um Job orientado por metadados usando uma tarefa SQL e uma tarefa For each, consulte Usar uma tabela de controle para acionar um Job For each.