Como usar a atividade If Condition no Azure Data Factory
A atividade If Condition no Azure Data Factory permite ramificar um pipeline com base numa condição que dá verdadeiro ou falso, tal como um if numa linguagem de programação. É a forma mais simples de garantir que certas atividades só correm quando uma regra é cumprida — por exemplo, copiar dados apenas quando existem ficheiros novos numa pasta. É uma atividade de controlo de fluxo essencial e configura-se toda no Azure Data Factory Studio, sem escrever código.
Pré-requisitos
- Uma instância de Azure Data Factory já criada e acesso ao Azure Data Factory Studio.
- Um pipeline, novo ou existente, onde possas adicionar atividades.
- Conhecer o essencial do canvas do pipeline: arrastar atividades e ligá-las.
- Opcional: uma atividade Get Metadata, se quiseres decidir com base no número de ficheiros.
Passo 1: Adicionar a atividade If Condition ao pipeline
No Azure Data Factory Studio, abre o teu pipeline. No painel Activities, à esquerda, escreve If na caixa de pesquisa e arrasta a atividade If Condition para o canvas. No separador General, dá-lhe um nome claro, por exemplo Check_Files, para que a lógica do pipeline fique fácil de ler.
Passo 2: Definir a expressão verdadeiro/falso
Seleciona a atividade e abre o separador Activities. No campo Expression, clica em Add dynamic content e escreve uma expressão que devolva um valor booleano. A linguagem de expressões do ADF começa sempre por @. Um exemplo simples, baseado num parâmetro do pipeline (que defines no separador Parameters):
@greater(pipeline().parameters.numeroFicheiros, 0)
Esta expressão é verdadeira quando o parâmetro numeroFicheiros é maior do que zero. Também podes comparar texto — por exemplo, correr o ramo verdadeiro apenas no ambiente de produção:
@equals(pipeline().parameters.ambiente, 'prod')
Podes ainda combinar condições com as funções and, or e not para regras mais completas.
Passo 3: Construir o ramo verdadeiro (True)
Ainda no separador Activities, carrega no ícone do lápis da secção True (Edit activities). O canvas muda para um contentor onde colocas as atividades que devem correr quando a condição é verdadeira. Arrasta, por exemplo, uma atividade Copy data para copiar os ficheiros. Para voltar ao pipeline principal, usa a trilha de navegação (breadcrumb) no topo do canvas.
Passo 4: Construir o ramo falso (False)
Repete o processo na secção False: carrega no lápis e adiciona as atividades para quando a condição não se cumpre. Um padrão comum é colocar aqui uma atividade Wait curta ou uma que apenas regista uma mensagem. Não és obrigado a preencher os dois ramos — se não precisares do caso falso, podes deixá-lo vazio.
Passo 5: Um exemplo real com Get Metadata
Um uso muito frequente é decidir com base no conteúdo de uma pasta. Se tiveres uma atividade Get Metadata a devolver a lista childItems, liga-a antes do If Condition e usa esta expressão:
@greater(length(activity('Get Metadata1').output.childItems), 0)
Assim, o ramo verdadeiro só corre quando a pasta tem pelo menos um ficheiro, evitando execuções desnecessárias.
Atenção a uma limitação importante: não podes colocar uma atividade If Condition (nem uma Switch) dentro de outra If Condition ou Switch. Podes, no entanto, usá-las dentro de uma ForEach ou Until.
Como fica em JSON
Se abrires a vista de código do pipeline, a atividade tem esta forma mínima, com a expressão e as duas listas ifTrueActivities e ifFalseActivities:
{
"name": "Check_Files",
"type": "IfCondition",
"typeProperties": {
"expression": {
"value": "@greater(pipeline().parameters.numeroFicheiros, 0)",
"type": "Expression"
},
"ifTrueActivities": [],
"ifFalseActivities": []
}
}
Verificar o resultado
Carrega em Debug para executar o pipeline. No painel Output, vês a atividade If Condition e qual dos ramos foi executado. Testa os dois casos: muda o valor do parâmetro (ou o conteúdo da pasta) para forçar primeiro o resultado verdadeiro e depois o falso, e confirma que corre o ramo certo em cada situação.
Conclusão
Com a atividade If Condition ganhas controlo de fluxo no pipeline sem escrever código. A partir daqui, experimenta combiná-la com a ForEach para decidir dentro de um ciclo, ou usa a atividade Switch quando tiveres mais do que dois caminhos possíveis. Uma dica final: dá sempre nomes descritivos às atividades, para que a lógica do pipeline se leia quase como uma frase. Que condição vais querer testar primeiro no teu próximo pipeline?