1---2name: fabric-pipelines3description: Use when building data pipeline orchestration in Microsoft Fabric, configuring Copy Data activities, scheduling data movement, implementing control flow logic, or studying for DP-700 (Microsoft Fabric Data Engineer Associate).4---56# Fabric Pipelines78## When to Use9- Orchestrating data movement and transformation workflows in Microsoft Fabric10- Implementing control flow logic (loops, conditions, error handling) in data pipelines11- Scheduling and triggering pipeline runs (time-based, event-based)12- Moving data with Copy Data activity from 100+ sources to Fabric destinations13- Deciding between Fabric Pipelines and Notebooks for data orchestration14- Preparing for Microsoft Fabric Data Engineer Associate (DP-700) exam1516## Core Jobs1718### 1. Pipeline Structure19- **Pipeline** = orchestration workflow; not a compute engine (Spark, SQL run separately)20- Hierarchy: Pipeline → Stages (parallel groups) → Activities (individual tasks)21- YAML-compatible definition; visual canvas authoring in Fabric UI22- Fabric Pipelines ≈ Azure Data Factory pipelines — same core concepts, Fabric-native2324### 2. Activity Types25| Activity | Purpose |26|----------|---------|27| **Copy Data** | Move data from source to sink; 100+ connectors |28| **Dataflow** | Execute Dataflow Gen2 transformation |29| **Notebook** | Run a Spark Notebook |30| **Stored Procedure** | Execute SQL stored procedure in Warehouse/SQL |31| **Get Metadata** | Retrieve file/folder metadata (exists, size, count) |32| **ForEach** | Iterate over array; execute child activities per item |33| **If Condition** | Branch execution based on boolean expression |34| **Until** | Loop until condition is true (with timeout) |35| **Delete** | Delete files from Lakehouse Files or storage |36| **Wait** | Pause pipeline for specified duration |3738### 3. Copy Data Activity39- Primary activity for **data movement** (not transformation)40- Source → optional column mapping → sink41- Supports: file formats (CSV, JSON, Parquet, Avro, ORC), databases, APIs42- Common pattern: `ADLS Gen2 → Lakehouse Files/` (bronze ingestion)43- **Schema mapping**: auto-detect or explicit column-to-column mapping44- **Fault tolerance**: skip incompatible rows; log errors to storage4546### 4. Parameters and Variables47| Concept | Scope | Set by |48|---------|-------|--------|49| **Pipeline parameters** | Pipeline-wide input | Trigger at runtime, parent pipeline, or manual |50| **Pipeline variables** | Pipeline-wide mutable | Set Variable activity within pipeline |5152- Parameters are immutable during run; variables can change (e.g., counter in ForEach loop)53- ForEach passes `@item()` to child activities; access parameter with `@pipeline().parameters.myParam`5455### 5. Triggers56| Trigger Type | When it fires |57|--------------|---------------|58| **Schedule** | Fixed cron schedule (e.g., daily at 2 AM UTC) |59| **Tumbling Window** | Fixed non-overlapping time windows; backfill-capable |60| **Storage Event** | File arrives in OneLake/ADLS (event-driven ingestion) |61| **Custom Event** | Azure Event Grid event matches filter |62| **Manual** | On-demand via UI or API |6364- **Tumbling Window** = best for incremental load patterns (each window = one time slice)65- Schedule trigger = simple recurring; no window concept; all runs independent6667### 6. Error Handling and Control Flow68- Each activity has: **On Success**, **On Failure**, **On Completion**, **On Skip** paths69- **Retry policy**: set max retry count and retry interval per activity70- **Failure path**: connect activities to handle errors (e.g., send Teams notification on failure)71- Global pipeline timeout: default 7 days; set shorter for critical pipelines72- Monitoring: all run history in **Monitoring Hub** with per-activity status and error details7374## Key Concepts75- **Copy Data activity** — data movement only; no transformation logic; use Dataflow/Notebook for transforms76- **ForEach** — iterates array parameter; sequential or parallel (set parallelism degree)77- **Tumbling Window trigger** — non-overlapping fixed intervals; each window has its own run; good for incremental78- **Monitoring Hub** — central view of all pipeline/activity runs; filter by status, date, pipeline name79- **Linked service** — connection definition for external data sources (reusable across activities)80- **Dataset** — pointer to specific data within a linked service (table, file path, query)8182## Checklist83- [ ] Copy Data activity used for movement; Dataflow/Notebook used for transformation?84- [ ] Pipeline parameters defined for dynamic values (table names, date ranges)?85- [ ] ForEach activity configured with appropriate parallelism (avoid too many concurrent connections)?86- [ ] Failure paths connected with notification or logging activity?87- [ ] Retry policy set on activities that may have transient failures (network, source availability)?88- [ ] Tumbling Window trigger used for incremental loads requiring backfill capability?89- [ ] Pipeline timeout set appropriately (not left at default 7 days for short workflows)?9091## Output Format92- 🔴 **Critical** — using Copy Data activity for data transformation (it only moves data; no transform logic)93- 🔴 **Critical** — no failure path on critical activities; failures silently ignored94- 🟡 **Warning** — hardcoded values in pipeline activities instead of parameters (reduces reusability)95- 🟡 **Warning** — ForEach with sequential execution on large arrays (causes slow pipeline runs)96- 🟢 **Suggestion** — use Tumbling Window trigger for incremental load to enable backfill on failure9798## Exam Tips99- **Copy Data activity = data movement, not transformation** — for transformation, use Dataflow Gen2 activity or Notebook activity100- **ForEach = iterate over array parameter** — use sequential for rate-limited sources; parallel for independent items (set batch count)101- **Pipeline parameters vs variables** — parameters are read-only inputs set at trigger time; variables are mutable within pipeline execution102- **Tumbling Window trigger** — fixed non-overlapping intervals (e.g., hourly); each window runs independently; enables backfill for missed runs103- **Fabric Pipelines ≈ Azure Data Factory** — same activity types and concepts; exam may test ADF knowledge in Fabric context104- **Monitor pipelines in Monitoring Hub** — check activity run details for input/output and error messages; not in workspace item list