(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como usar a atividade ForEach no Azure Data Factory

João Barros 07 de July de 2026 4 min de leitura

A atividade ForEach no Azure Data Factory permite repetir um conjunto de ações para cada elemento de uma lista, sem duplicar atividades no pipeline. Em vez de criar a mesma atividade dezenas de vezes, defines a ação uma única vez e o ForEach trata da repetição. É a abordagem ideal para processar vários ficheiros, tabelas ou parâmetros de uma só vez. A seguir vais usar a atividade ForEach no Azure Data Factory para percorrer uma lista de tabelas e executar uma ação para cada uma.

Pré-requisitos

  • Uma instância de Azure Data Factory (podes criar uma no portal do Azure).
  • Acesso ao ADF Studio para criar e editar pipelines.
  • Noções básicas de pipelines, atividades e parâmetros no ADF.
  • Opcional: um linked service e um dataset, caso queiras copiar dados reais dentro do loop.

Passo 1: Criar o pipeline e um parâmetro de lista

No ADF Studio, abre o separador Author e cria um novo pipeline. Vai ao separador Parameters e adiciona um parâmetro do tipo Array chamado tableList. Guardar a lista num parâmetro torna o pipeline reutilizável: podes mudar os valores sem alterar a lógica. Define um valor por defeito para conseguires testar de imediato:

["Clientes", "Produtos", "Vendas"]

Passo 2: Adicionar a atividade ForEach

Na caixa de atividades, abre o grupo Iteration & conditionals e arrasta a atividade ForEach para a tela. Com ela selecionada, vai ao separador Settings. No campo Items indicas a lista a percorrer através de uma expressão (as expressões no ADF começam sempre por @):

@pipeline().parameters.tableList

Por defeito, o ForEach executa as iterações em paralelo (até 20 ao mesmo tempo), o que é rápido mas pode sobrecarregar a origem ou o destino. Se a ordem for importante, ativa a opção Sequential para que as iterações corram uma de cada vez.

Passo 3: Definir as ações dentro do loop

Clica no ícone de lápis dentro da atividade ForEach para abrir a tela interna. É aqui que colocas as atividades que se repetem em cada iteração — por exemplo, uma Copy, uma Stored Procedure ou, só para testar, uma atividade Set Variable. Para te referires ao elemento atual da lista, usa a função @item():

@item()

Esse valor pode entrar noutras expressões. Por exemplo, para construir dinamicamente uma consulta que conta as linhas da tabela atual:

@concat('SELECT COUNT(1) FROM ', item())

Se a lista contivesse objetos em vez de texto simples, acederias a cada propriedade com @item().nomeDaPropriedade. Dentro do loop também podes encadear várias atividades, tal como farias num pipeline normal.

Passo 4: Controlar o paralelismo

Ainda no separador Settings, o campo Batch count define quantas iterações correm ao mesmo tempo (entre 1 e 50) quando o modo não é sequencial. Baixa este valor se notares erros de limitação (throttling) na base de dados ou no serviço de destino; sobe-o quando queres mais velocidade e a origem aguenta a carga.

Dica: começa com um Batch count baixo em produção e aumenta aos poucos enquanto observas o desempenho.

Verificar o resultado

Clica em Debug para executar o pipeline. No painel Output, a atividade ForEach expande-se numa iteração por cada elemento da lista — neste exemplo, três iterações: Clientes, Produtos e Vendas. Confirma que todas terminam com o visto verde e que o número de iterações coincide com o tamanho da lista. Se alguma falhar, abre essa iteração e verifica a expressão @item() e a atividade interna.

Conclusão

Já consegues usar o ForEach para percorrer qualquer lista: nomes de ficheiros vindos de uma atividade Get Metadata, tabelas devolvidas por uma Lookup ou valores passados como parâmetro no arranque. Um padrão muito comum é combinar Lookup (para ler uma tabela de controlo) com ForEach (para processar cada linha), criando pipelines orientados por metadados. O passo seguinte é experimentar esse padrão com dados reais. Qual vai ser a primeira lista que vais percorrer — tabelas, ficheiros ou APIs?