Compartilhar via


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

Este artigo discute o uso da tarefa For each com seus Trabalhos do Lakeflow, incluindo detalhes sobre como adicionar e configurar a tarefa na interface de Usuário dos Trabalhos. Utilize 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 tarefa For each a um trabalho requer a definição de duas tarefas: a tarefa For each e uma tarefa aninhada. A tarefa aninhada é a tarefa a ser executada para cada iteração da For each tarefa 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ê pode 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.

Tarefas aninhadas que não têm dependências umas das outras podem ser executadas simultaneamente.

Adicionar a tarefa For each a um trabalho

Você 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.

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

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

  4. Para definir opcionalmente 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.

  5. Para receber opcionalmente notificações para início de tarefa, êxito ou falha, clique em + Adicionar. Confira Adicionar notificações sobre um trabalho.

  6. Para concluir a configuração da tarefa For each e adicionar uma tarefa aninhada a ser executada para cada iteração, clique em Adicionar uma tarefa para fazer loop.

  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 tarefas em Trabalhos do Lakeflow.

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

    Adicionar uma tarefa aninhada a uma tarefa

  9. Clique em Criar tarefa.

Alternar entre a tarefa For each e a tarefa aninhada

A tarefa For each aparece na interface do usuário de trabalhos como um nó, com seu nó da tarefa aninhado dentro do nó For each. Para alternar entre a tarefa For each e a tarefa aninhada, clique nos respectivos nós.

Alternar visualização DAG na interface de usuário dos trabalhos para a tarefa

Alternar visualização DAG na interface de usuário dos trabalhos para a tarefa aninhada

Quais tipos de parâmetro posso usar com a For each tarefa?

A For each tarefa 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: matrizes formatadas em JSON, valores de tarefa ou parâmetros de trabalho.

Observação

Os parâmetros são limitados a 5.000 caracteres diretamente na interface do usuário ou 48 KB se você usar referências de valor de tarefa (em que o valor pode ser muito maior do que o tamanho da cadeia de caracteres que a descreve) ou 10.000 caracteres para o valor dos parâmetros de trabalho. Se os parâmetros exigirem mais de 48 KB, é possível 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, você pode definir diretamente um conjunto de valores para a tarefa subordinada, usando a caixa de texto Entradas. Essa pode ser uma matriz dos seguintes tipos de dados:

  • Pares de chave-valor
  • Sequências, números ou tipos booleanos
  • Objetos JSON arbitrariamente complexos

A caixa de texto Entradas e, portanto, JSON passado diretamente nessa caixa, é limitada a 5.000 caracteres.

Referências de valor da tarefa

Você pode passar os valores de uma tarefa para a tarefa seguinte. Para fazer referência aos valores de tarefa passados, use a sintaxe {{tasks.<task_name>.values.<task_value_name>}} para inserir o valor na caixa de texto Entradas. Por exemplo, se uma tarefa chamada generate_countries_list que precede a tarefa For each definir 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 Entradas usando a seguinte sintaxe:

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

Você pode colocar até 5.000 caracteres na caixa de texto Entradas , mas os valores que as referências representam podem ter até 48 KB. Para saber mais sobre valores de tarefa, consulte Usar valores de tarefa para transmitir informações entre tarefas.

Parâmetros de trabalho

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

Você pode colocar até 5.000 caracteres na caixa de texto Entradas para referenciar parâmetros de trabalho. Os valores de parâmetro de trabalho são limitados a 10 KB. Para saber mais sobre parâmetros de trabalho, consulte Configurar parâmetros de trabalho.

Referenciar uma tarefa For each nas tarefas downstream

A tarefa For each é a tarefa de nível superior e as tarefas downstream podem especificá-la como uma dependência. As tarefas downstream não podem depender ou referenciar a tarefa aninhada.

Executar e monitorar um trabalho com uma tarefa For each

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

A exibição e o gerenciamento de execuções de trabalho também são idênticos a qualquer outro trabalho, exceto o histórico de execução de tarefas para uma tarefa For each, que é apresentado como uma tabela de iterações de tarefas. Consulte Exibir o histórico de execução de tarefas para uma For each tarefa.