11-02-01 — Data Factory Pipelines e Dataflows Gen2

⏱ 12 minFontes validadas em: 2026-04-29

TL;DR

O Fabric tem dois mecanismos de ETL/ELT: Data Factory Pipelines (orquestração de alto nível — executa notebooks, stored procedures, copia dados, chama APIs) e Dataflows Gen2 (transformações low-code via Power Query, sem código Spark). Use Pipelines para orquestrar fluxos complexos e Dataflows Gen2 para transformações simples que analistas não-programadores precisam manter. Ambos são substitutos diretos do SSIS para quem está migrando de ambientes on-premises.

Data Factory Pipelines

Os Pipelines do Fabric são similares ao Azure Data Factory v2 — mas nativos ao Fabric, sem custo adicional de serviço. Um pipeline é um grafo de atividades executadas em sequência ou paralelo.

flowchart TD T[Trigger: agendado diário 2h] --> A[Copy Data: SAP → Bronze] A --> B[Notebook: Bronze → Silver] B --> C{Sucesso?} C -->|Sim| D[Stored Proc: atualiza Gold] C -->|Não| E[Web Activity: alerta Teams] D --> F[Pipeline: atualizar Semantic Model PBI]

Atividades principais

AtividadeO que fazQuando usar
Copy DataCopia dados entre fontes/destinosIngestão Bronze
NotebookExecuta notebook PySpark/ScalaTransformações Silver/Gold
Dataflow Gen2Executa um DataflowETL low-code
Stored ProcedureChama SP no WarehouseAtualizações Gold
Web ActivityChama REST API externaNotificações, webhooks
ScriptExecuta T-SQL ou KQLDDL/DML simples
ForEachLoop sobre listaProcessar múltiplos arquivos
If ConditionBranch condicionalTratamento de erros

Configurando um pipeline via código (API)

# Criando pipeline via Fabric REST API (Python)
import requests
import json

headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

pipeline_definition = {
    "name": "pipeline_sap_para_bronze",
    "properties": {
        "activities": [
            {
                "name": "CopySAP",
                "type": "Copy",
                "inputs": [{"referenceName": "SAPDataset", "type": "DatasetReference"}],
                "outputs": [{"referenceName": "BronzeDataset", "type": "DatasetReference"}],
                "typeProperties": {
                    "source": {"type": "SapTableSource", "partitionOption": "PartitionOnInt"},
                    "sink": {"type": "LakehouseTableSink", "tableActionOption": "Append"}
                }
            }
        ]
    }
}

response = requests.post(
    f"https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/items",
    headers=headers,
    json={"type": "Pipeline", "displayName": "pipeline_sap_bronze", "definition": pipeline_definition}
)

Dataflows Gen2

Dataflows Gen2 são transformações visuais baseadas em Power Query — a mesma linguagem M do Excel e Power BI. Analistas de negócio conseguem criar transformações sem escrever Spark ou SQL.

Diferença Dataflows Gen1 vs Gen2: Gen2 roda sobre Spark (via engine Mashup otimizada), pode escrever diretamente no OneLake/Warehouse, e tem auto-scaling. Gen1 (do Power BI) era mais lento e limitado. Se você ainda tem Dataflows Gen1, migre para Gen2.

Casos de uso ideais para Dataflows Gen2

  • Analistas que sabem Power Query mas não Python/Spark
  • Transformações simples: filtrar, renomear colunas, mudar tipos, fazer joins básicos
  • Ingestão de Excel e SharePoint Lists
  • Prototipação rápida antes de codificar em PySpark

Limitações dos Dataflows

  • Performance inferior ao Spark para volumes > 100 GB
  • Transformações complexas (ML, NLP) não são possíveis
  • Debugging mais difícil que notebooks Python
  • Não suporta Delta Lake time travel nativamente
Estratégia para equipes .NET: Use Dataflows Gen2 para ingestão inicial e transformações simples (seu time de dados faz). Use Notebooks PySpark (ou até C# Spark via .NET for Spark) para transformações complexas. Os Pipelines orquestram ambos.

Scheduling e monitoramento

# Monitorando execuções de pipeline via API
response = requests.get(
    f"https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/items/{pipeline_id}/jobs",
    headers=headers
)

jobs = response.json()["value"]
for job in jobs:
    print(f"Job {job['id']}: {job['status']} - Duração: {job['duration']}ms")
    if job['status'] == 'Failed':
        print(f"  Erro: {job['failureReason']['message']}")

Como isso se conecta

  • 11-01-03 — Pipelines implementam o fluxo Bronze → Silver → Gold da Medallion
  • 11-02-02 — OneLake Mirroring é uma alternativa a pipelines para fontes suportadas
  • 11-04-02 — O desafio final usa um Pipeline para ingestão SAP

Fontes

  1. Microsoft Learn — Data Factory in Microsoft Fabric
  2. Microsoft Learn — Dataflows Gen2 overview
  3. Microsoft Learn — Monitor pipeline runs in Fabric