Partilhar via


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

Este artigo discute o uso da tarefa For each com os seus trabalhos do Lakeflow, incluindo detalhes sobre como adicionar e configurar a tarefa na interface do utilizador de Jobs. Use a tarefa For each para executar uma tarefa aninhada num ciclo, passando para cada iteração da tarefa um conjunto diferente de parâmetros.

Adicionar a For each tarefa a um trabalho 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 For each tarefa e é um dos tipos de tarefa padrão do Lakeflow Jobs. Não é possível adicionar outra For each tarefa como tarefa aninhada.

Por exemplo, você pode usar a For each tarefa 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 umas das outras podem ser executadas simultaneamente.

Adicionar a For each tarefa a um trabalho

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

  1. Clique em Adicionar tarefa.

  2. Insira um nome no campo Nome da tarefa .

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

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

  5. Na caixa de texto Entradas , defina os valores para a For each tarefa iterar 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 For each tarefa?.

  6. 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 predefinido é 1.

  7. Opcionalmente, para receber notificações sobre início, êxito ou falha da tarefa, clique em + Adicionar. Veja Adicione notificações num trabalho.

  8. 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 iterar.

  9. Selecione o tipo de tarefa e as 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 no Lakeflow Jobs.

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

    Adicionar uma tarefa aninhada a uma tarefa 'Para cada'

  11. Clique em Criar tarefa.

Alternar entre a tarefa For each e a tarefa aninhada

A tarefa For each aparece na interface de utilizador de Trabalhos 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 respetivos nós.

Opção de exibição do DAG da interface do usuário de trabalhos para Para cada tarefa

Alternar visualização da DAG da UI para a tarefa aninhada

Que tipos de parâmetros 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 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 (onde o valor pode ser muito maior do que o tamanho da cadeia de caracteres que o descreve) ou 10.000 caracteres para o valor dos parâmetros de trabalho. 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 matrizes de parâmetros grandes.

Uma matriz de valores formatada em JSON

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

  • Pares chave-valor
  • Strings, números ou tipos booleanos
  • Objetos JSON arbitrariamente complexos

A caixa de texto Inputs e por isso JSON passado diretamente nesta caixa está limitada 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 tarefas passadas, use a {{tasks.<task_name>.values.<task_value_name>}} sintaxe para definir o valor na caixa de texto Entradas . Por exemplo, se uma tarefa nomeada generate_countries_list que precede a For each tarefa define o seguinte valor de tarefa:

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

Em seguida, a For each tarefa refere-se ao valor 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 ser de até 48 KB. Para saber mais sobre valores de tarefas, consulte Usar valores de tarefa para passar informações entre tarefas.

Parâmetros do 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 dos parâmetros de trabalho são limitados a 10 KB. Para saber mais sobre parâmetros de trabalho, consulte Configurar parâmetros de trabalho.

Referenciar uma For each tarefa em tarefas a jusante

A For each tarefa é a tarefa de nível superior e as tarefas subsequentes podem especificá-la como uma dependência. As tarefas subsequentes não podem depender ou fazer referência à tarefa interna.

Executar e monitorar um trabalho com uma For each tarefa

Executar um trabalho com uma tarefa de For each é o mesmo que executar qualquer outro trabalho.

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