02 - Ingestion: Pipelines, Dataflows, Eventstream, Mirroring¶
Fabric offers four ingestion patterns. Picking the right one matters - exam tests this.
1. Data Pipelines (Data Factory in Fabric)¶
Visual orchestration for batch / mini-batch ingestion. Familiar if you've used Azure Data Factory or Synapse Pipelines.
Activities¶
- Copy Data - the bulk copy primitive (200+ connectors)
- Notebook - run a Fabric notebook
- Spark Job Definition - parameterized Spark job
- Dataflow Gen2 - run a dataflow
- Stored Procedure - on Fabric Warehouse or Azure SQL
- Lookup, For Each, If Condition, Until, Wait, Web (HTTP), Azure Function, Set Variable
Triggers¶
- Schedule (cron-like)
- Event-based (file arrival in Azure Storage / OneLake)
- Tumbling window
- On-demand
Use when¶
- You need orchestration: multiple steps, retries, branching, parameter passing
- Source/sink connector exists in Copy Data
- You want a visual canvas
2. Dataflows Gen2¶
Power Query-based low-code transforms. Best for analyst-style work or simple ETL.
Properties¶
- M language under the hood (same as Excel Power Query / Power BI)
- 200+ connectors
- Output to Lakehouse Tables, Warehouse, KQL DB, or Azure SQL DB
- Supports incremental refresh
Use when¶
- Power Query mindset (filter, pivot, merge, append)
- You want low-code; analysts can build/maintain
- Lightweight transforms; not heavy joins or aggregations
Avoid when¶
- Heavy Spark workload (use notebooks instead)
- High-volume streaming (use Eventstream)
3. Notebooks (Spark)¶
Interactive PySpark / Spark SQL / Scala / R. Use for:
- Heavy transforms with joins, aggregations, ML feature engineering
- Code-first development
- Schema evolution control
- Integration with non-tabular data
Spark cluster modes¶
- Starter Pool - shared, fast startup, good for development
- Custom Pool - configurable nodes, version, libraries; better for prod jobs
- Workspace-default Spark settings - applied if pool not specified
Notebook environments¶
- Reusable conda environments for library management
- Pin to specific Python / Spark / Delta versions
Schedule¶
Notebooks don't run themselves - schedule via Pipeline (Notebook activity) or Spark Job Definition.
4. Eventstream¶
Streaming ingestion with built-in transforms.
Sources¶
- Azure Event Hubs
- Azure IoT Hub
- Apache Kafka
- Azure SQL DB CDC
- AWS Kinesis Streams (newer)
- Google Pub/Sub (newer)
- Custom App via REST endpoint
- Sample data (for testing)
Destinations¶
- Lakehouse - lands as Delta in OneLake
- KQL Database / Eventhouse - real-time analytics
- Reflex - reactive item that triggers actions on conditions
- Custom endpoint - send to your own listener
Built-in transforms¶
- Filter, Aggregate (over windows), Manage Fields (rename/drop), Group By, Join (between streams), Expand
- No-code; drag-and-drop
Use when¶
- Real-time / near-real-time event processing
- Hot path = KQL for sub-second analytics; warm path = Lakehouse for downstream batch
5. Mirroring (zero-ETL)¶
Continuous replication with no pipeline required. Microsoft maintains the replication for you.
Supported sources (as of 2026-04)¶
- Azure Cosmos DB
- Snowflake
- Azure SQL Database
- Azure Database for PostgreSQL
- More on the roadmap
How it works¶
- Configure mirroring on the source via the Fabric workspace
- Initial backfill copies existing data
- Ongoing CDC keeps Fabric in sync (typically seconds-to-minutes lag)
- Data lands as Delta tables in OneLake under the mirrored item
- Queryable from Lakehouse SQL endpoint, Warehouse (via shortcut), Power BI Direct Lake
Use when¶
- You need operational data in Fabric for analytics, fresh, no engineering effort
- Source is one of the supported types
Choosing between patterns¶
| Need | Pattern |
|---|---|
| Continuous CDC from Cosmos / SQL DB / Snowflake, no ETL | Mirroring |
| Real-time event ingest (IoT, Kafka, etc.) | Eventstream |
| Bulk batch with orchestration, branching, retries | Pipeline with Copy Data + activities |
| Low-code Power Query transforms | Dataflow Gen2 |
| Heavy Spark logic | Notebook scheduled in a Pipeline |
| Low-code + lots of joins/aggregations? | Dataflow Gen2 if lightweight, else Notebook |
Common patterns¶
Bronze-silver-gold lakehouse¶
Source β Pipeline (Copy Data) β Lakehouse Bronze (raw)
β Notebook β Lakehouse Silver (cleaned, deduped)
β Notebook β Warehouse Gold (joined, aggregated)
β Power BI semantic model (Direct Lake)
Streaming + batch (Lambda)¶
Stream sources β Eventstream β KQL DB (hot, sub-second BI dashboards)
β Lakehouse Bronze (warm, batch analytics)
β Notebook β Silver/Gold
Hybrid analytical + operational¶
Cosmos DB β Mirroring β Fabric (Delta in OneLake)
SQL DB β Mirroring β Fabric
β joined in Warehouse SQL β
Power BI Direct Lake β Reports
Common exam triggers¶
- "Continuous CDC from Cosmos DB without code" β Mirroring
- "Real-time IoT events into a Delta table" β Eventstream β Lakehouse
- "Power Query transform writes to Warehouse" β Dataflow Gen2
- "Spark transform that joins 3 sources" β Notebook scheduled in Pipeline
- "Schedule a notebook nightly with email-on-failure" β Pipeline with Notebook activity + scheduled trigger + Web activity for email (or built-in alerts)
- "Multi-step ELT with conditional branches" β Pipeline with If/ForEach activities
- "Subscribe to Kafka topic, filter, write to Lakehouse" β Eventstream