11-02-01 — Data Factory Pipelines e Dataflows Gen2
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
| Atividade | O que faz | Quando usar |
|---|---|---|
| Copy Data | Copia dados entre fontes/destinos | Ingestão Bronze |
| Notebook | Executa notebook PySpark/Scala | Transformações Silver/Gold |
| Dataflow Gen2 | Executa um Dataflow | ETL low-code |
| Stored Procedure | Chama SP no Warehouse | Atualizações Gold |
| Web Activity | Chama REST API externa | Notificações, webhooks |
| Script | Executa T-SQL ou KQL | DDL/DML simples |
| ForEach | Loop sobre lista | Processar múltiplos arquivos |
| If Condition | Branch condicional | Tratamento 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']}")