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

DP-700: Implementar pipelines de ingestão com Dataflows e Synapse

João Barros 10 de August de 2026 6 min de leitura

Vou ensinar como implementar pipelines de ingestão de dados no contexto do Fabric (Dataflows / Synapse pipelines), uma competência central no DP-700. Saber isto ajuda no exame e, na prática, garante que os dados chegam fiáveis e eficientemente ao seu ambiente de analytics. Aqui encontrará conceitos, passos concretos, exemplos com números plausíveis e boas práticas para produção.

O que precisa de saber

Ingestão de dados é o processo de trazer dados de origens (ficheiros, bases de dados, serviços) para a sua camada de armazenamento/processing (OneLake / data lake ou tabular storage). No Fabric pode usar Dataflows (Power Query) para transformações no ingest path ou Synapse pipelines para orquestração e cópia de dados. Os conceitos essenciais são:

  • Conetores e autenticação: saber configurar credenciais (Managed Identity, service principal, chave) para orquestrar cópias seguras. Por exemplo, para um armazenamento Azure Blob preferir Managed Identity do workspace; para fontes on‑premises usar um gateway juntamente com service principal ou credenciais seguras.
  • Modos de ingestão: carga completa vs incremental; quando usar copy incremental com watermark ou CDC (Change Data Capture). Para uma tabela de 100M de linhas, um carregamento completo diário é custoso — um incremental que copie 1–5% dos dados reduz custos e tempo de processamento.
  • Transformação leve vs pesada: usar Dataflows/Power Query para limpezas e mapeamento próximos da origem (ideal para ficheiros CSV/Excel e regras de qualidade), usar compute (Spark, Synapse SQL Pools, Mapping Data Flows) para transformações pesadas em datasets de dezenas a centenas de GB ou mais.
  • Idempotência e reprocessamento: desenhar pipelines que possam ser reexecutados sem duplicar dados. Técnicas comuns: usar chaves naturais para deduplicação, upsert/merge no sink, ou manter logs de execução com watermarks. Em produção, estabelecer um período de retenção (ex.: 90 dias) para permitir reprocessamentos sem acumular custos.

Exemplo simples: copiar um ficheiro CSV de 2 GB armazenado num Azure Blob para uma tabela no Fabric usando um pipeline de cópia. O pipeline precisa do conector Blob, do mapeamento de colunas e da política de falha/retries (por exemplo, 3 tentativas com backoff exponencial). Uma cópia paralela bem configurada pode atingir 100–200 MB/s, reduzindo o tempo de ingestão para dezenas de segundos/minutos, dependendo da rede e do número de ficheiros.

Como funciona — passo a passo prático

Seguem passos práticos para criar um pipeline de ingestão simples que copia dados de um storage para uma tabela no Fabric e executa transforms leves com Dataflow. Incluo sugestões operacionais e valores típicos que pode ajustar conforme o seu ambiente.

  1. Preparar credenciais e linked services: configure um Linked Service para o Azure Blob/ADLS usando Managed Identity do workspace ou um service principal. Isto evita colocar segredos em pipelines. Em ambientes de produção, estabelecer rotação de credenciais e auditar acessos. Tipicamente, atribui‑se apenas o mínimo privilégio (RBAC) à identidade, por exemplo, leitura/escrita apenas no container necessário.

  2. Criar o Dataflow (Power Query): no Data Factory / Fabric Dataflows crie um fluxo que leia o ficheiro, detecte o separador, defina tipos e aplique regras de limpeza (trim, substituir nulos, normalizar datas). Isto reduz erros advindos de esquemas inconsistentes. Ex.: transformar uma coluna de texto para date com fallback para NULL quando o formato falha, ou aplicar uma regra de deduplicação por CustomerID mantendo a linha com maior timestamp.

    // Exemplo conceptual de transformações Power Query
    Table.ReplaceValue(Source, null, "", Replacer.ReplaceValue, {"CustomerName"})
    Table.TransformColumnTypes(PrevStep, {{"OrderDate", type date}})
    
  3. Criar pipeline de cópia: adicione uma actividade Copy Data que use o Dataflow como source ou ligue directamente o ficheiro como fonte e a tabela do Fabric como sink. Configure mapeamento de colunas, paralelismo (Degree of Copy Parallelism) e a política de pre‑copy (ex.: truncate vs append). Para cargas regulares, preferir append + upsert/merge no sink para evitar janelas de downtime.

  4. Implementar ingestão incremental: quando possível, use watermark ou coluna de modificação para copiar apenas linhas novas/alteradas. Configure a query source para filtrar por timestamp > @pipelineVariable('lastWatermark') e actualize a variável no fim da execução. Por exemplo, um watermark armazenado num ficheiro JSON ou tabela de metadados actualizado ao fim de cada execução. Isto reduz o volume transferido para cargas grandes de terabytes.

    // Padrão conceptual de filtro incremental
    SELECT * FROM SourceTable WHERE ModifiedAt > @pipeline().parameters.lastWatermark
    
  5. Agendamento e monitorização: agende o pipeline (trigger por tempo — ex.: cada 15 minutos, diário — ou event trigger quando um ficheiro chega). Active retry (por exemplo, 3 tentativas com 30s, 60s, 120s) e notificações (email/Teams) em caso de falha. Monitorize métricas: número de linhas, bytes transferidos, duração e taxa de erro. Estabeleça SLAs — ex.: ingestão diária completada em 2 horas para datasets de 500 GB.

  6. Testar idempotência: execute o pipeline várias vezes com o mesmo input para garantir que não duplica dados — use chaves naturais ou lógica de upsert no sink (MERGE). Em cenários OLTP, uma abordagem comum é aplicar MERGE por batch_id ou ModifiedAt para garantir consistência.

Erros comuns

  • Credenciais mal configuradas: usar chaves/strings em vez de Managed Identity aumenta o risco e provoca falhas quando segredos expirarem. Sempre preferir identidades geridas quando possível e auditar erros de autenticação no log para detecção precoce.
  • Descuido com esquemas: assumir que todos os ficheiros têm o mesmo esquema causa falhas ou corrompe dados. Validar esquema e tratar colunas ausentes/extra é essencial. Em ambientes com centenas de fontes, criar regras de validação automática que rejeitem ficheiros fora do esperado reduz o risco operacional.
  • Ingestão completa quando deveria ser incremental: executar cargas completas indiscriminadamente aumenta custo e tempo; definir watermark/CDC é frequentemente a melhor opção para dados grandes. Por exemplo, substituir uma carga diária completa de 1 TB por um incremental de 20 GB reduz o custo de transferência e o tempo de processamento drasticamente.

Como praticar

Praticar com exercícios no próprio ambiente Fabric é fundamental. Crie labs que simulem ficheiros de 100 MB a 5 GB, implemente triggers baseados em eventos, e teste reexecuções e falhas simuladas. Use o Practice Assessment OFICIAL da Microsoft (gratuito) para avaliar as áreas onde precisa de reforçar conhecimento e consulte a study guide oficial da Microsoft (gratuita) para os tópicos medidos. Não utilize dumps nem perguntas de exame não oficiais — pratique com labs e os recursos oficiais.

Em resumo

  • Ingestão combina conetores, autenticação, modos (completo vs incremental) e transformação leve/pesada.
  • Use Managed Identity e Linked Services para segurança e fiabilidade das pipelines.
  • Implemente watermark/CDC para reduzir custo e tempo em ingestões incrementais; considere políticas de retenção e janelas de retenção para reprocessamento.
  • Teste idempotência e validação de esquema para evitar duplicação e corrupção de dados; monitorize métricas e defina SLAs claros.