Executar uma tarefa de trabalho parametrizada do Azure Databricks em um loop

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

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 Azure Databricks 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.

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

Para passar parâmetros de uma For each tarefa, você pode:

Para saber como usar esses diferentes tipos de parâmetros ao adicionar ou editar uma For each tarefa, consulte a próxima seção Adicionar o Para cada tarefa a um trabalho.

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. 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 Entradas, defina os valores para a For each tarefa ser iterada. Pode ser uma das seguintes opções:

    • Uma matriz de valores formatada em JSON. Esta pode ser uma matriz dos seguintes tipos de dados:

      • Pares chave-valor
      • Strings, números ou tipos booleanos
      • Objetos JSON arbitrariamente complexos
    • Referências de valor de tarefa. Para fazer referência a valores de tarefa passados de uma tarefa anterior, 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 faz referência ao valor da tarefa na caixa de texto Entradas usando a seguinte sintaxe:

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

    • Parâmetros do trabalho. 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}}.

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

  5. Opcionalmente, para receber notificações sobre início, êxito ou falha da tarefa, clique em + Adicionar. Consulte Adicionar notificações por e-mail e do sistema para eventos de trabalho.

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

  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 do Databricks.

  8. 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 o valor da matriz de cada iteração ou {{input.<key>}} para fazer referência a campos de objeto individuais quando iterar sobre uma lista de objetos.

    Adicionar uma tarefa aninhada a um Para cada tarefa

  9. Clique em Criar tarefa.

Alternar entre a For each tarefa e a tarefa aninhada

A For each tarefa aparece na interface do usuário Trabalhos como um nó com o nó de tarefa aninhado dentro do For each nó. Para alternar entre a For each tarefa 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

Trabalhos UI DAG view alternar para tarefa aninhada

Referenciar uma For each tarefa em tarefas a jusante

A For each tarefa é 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 ou fazer referência à tarefa aninhada.

Executar e monitorar um trabalho com uma For each tarefa

Executar um trabalho com uma For each tarefa é idêntico a 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 Ver histórico de execução de tarefas para um Para cada tarefa.