Back to blog

Microsoft Fabric Mirroring together with Change Data Feed (CDF)

Learn how to enable and leverage Change Data Feed (CDF) with Fabric Mirroring to build true incremental data pipelines and unlock near real-time data processing capabilities.

#Using Change Data Feed (CDF) with Fabric Mirroring

When working with Microsoft Fabric Mirroring, you get something very powerful out of the box:

Near real-time data replication into OneLake — without building pipelines.

But when you start building data pipelines on top of mirrored data, one question naturally comes up:

How do I process only the changes instead of reprocessing full tables?

This is where Change Data Feed (CDF) becomes highly relevant

#What Mirroring actually does

Fabric Mirroring continuously replicates your source system (like Azure SQL, Snowflake, etc.) into OneLake as Delta tables.

  • Near real-time replication
  • No pipelines to maintain
  • Always up-to-date data

At any point in time, you get a current-state replica of your source system.

But here’s the catch:

Mirroring gives you what the data looks like now — not what changed_._

#Why CDF matters in this setup

While mirrored tables are always fresh, they don’t directly expose row-level changes.

That means:

  • You don’t know which rows changed
  • You can’t easily do incremental loads
  • You end up reprocessing entire tables

This is where CDF unlocks the next level.

#Is CDF enabled by default?

No — it is not enabled by default. CDF in Fabric Mirroring is not part of the core mirroring experience.

It belongs to something called Extended Capabilities.

  • CDF is an optional feature
  • It must be explicitly enabled per mirrored database

#How to enable CDF (Extended Capabilities)

You can enable CDF in two ways:

#Option 1: Fabric UI

  • Go to mirrored database settings
  • Open configuration
  • Enable “Delta Change Data Feed”

#Option 2: Using API

You can enable it programmatically:

PATCH /mirroredDatabases/{databaseId}{  "properties": {    "extendedCapabilities": {      "deltaChangeDataFeedEnabled": true       }    }}

#Pricing

Extended capabilities are not free.

Key points from Microsoft:

  • Core mirroring → no compute cost for replication
  • Extended capabilities → billable feature [learn.microsoft.com]

For full details, refer to:

#What you unlock with Mirroring + CDF

#1. True incremental pipelines

Instead of scanning full tables:

SELECT * FROM table_changes('table_name', start_version)

You process only what changed.

#2. Near real-time data processing

Mirroring + CDF forms a powerful combination:

  • Mirroring → keeps data fresh near real time
  • CDF → exposes granular changes

#3. Efficient data modeling

CDF provides change context like Pre-image (before update) and Post-image (after update) which makes it much easier to implement:

  • SCD Type 2
  • Delta merge patterns

If you’re interested in a hands-on implementation of CDF-driven pipelines, I’ve covered this in detail here:

#Important things to consider

#CDF only captures changes after enablement

If you enable CDF later, past changes are not available.

#Retention matters

Change data is not stored forever.

  • It depends on Delta retention policies
  • Old data can be removed over time
  • Running VACUUM removes old data files. That also means: change data can be lost

#Preview feature

This feature is still in preview by Microsoft, which means no official support yet.

Suggest an edit by email

Get future articles

Follow for practical Microsoft Fabric, Azure, Spark, and data engineering writeups.

PreviousTroubleshooting Fabric Data Pipeline InternalServerError: A Missing Microsoft.Storage Service Endpoint
NextVACUUM vs CDF in Microsoft Fabric: How to Protect Incremental Loads from Silent Data Loss
On this page