r/MicrosoftFabric

I built an agentic schema-drift detection tool for Microsoft Fabric that auto-fixes downstream Power BI reports using column-level lineage

I built an agentic schema-drift detection tool for Microsoft Fabric that auto-fixes downstream Power BI reports using column-level lineage

Hey everyone,

If you've worked with Microsoft Fabric medallion architectures, you know the pain: a column gets renamed or dropped in Bronze or Silver, and a few days later, a business user reports that three Power BI dashboards are showing blanks. Tracking down what broke across the workspace can be a nightmare.

To solve this, I built Microsoft Fabric Schema Drift Detection— an autonomous system that detects schema drift across the entire medallion architecture, maps it using a column-level lineage graph, alerts the team, and drafts auto-fix pull requests.

Here is the GitHub repository if you want to check it out: https://github.com/naveenjujaray/microsoft-fabric-schema-drift-detection

🕵️ How It Works

Instead of just checking if a table schema changed, this tool maps cross-layer lineage all the way to reports:

>Bronze (Lakehouse) ➔ Silver (Lakehouse) ➔ Gold (Warehouse) ➔ Semantic Model ➔ Power BI Reports (PBIP)

1. Cross-Layer Lineage: If \silver.customers.email` is renamed to `email_address`, the tool walks the lineage graph to detect that it will break `gold.Dim_Customer.Email`, which breaks the semantic model `Customer.Email`, which ultimately breaks the visual in your "Customer Detail" Power BI report.`

2. DAX Parsing: It parses DAX measures (like \SUM(Sales[Freight])`) to flag downstream breaks if upstream columns are dropped or modified.`

3. AI Impact Analysis: An optional Claude-powered agent reviews the drift, judges the business severity (e.g., info vs. critical), and drafts the Pull Request description.

4. Auto-Fix PRs: The tool automatically drafts a new Git branch and applies find/replace TMDL fixes to your Power BI Project (PBIP) files in Git, opening a PR to fix the broken references automatically.

5. Multi-Channel Alerts: Sends rich, native notifications to MS Teams (Adaptive Cards), Slack (Block Kit), and Outlook (HTML emails).

🏛️ Running It (Simulate Mode)

One of my main goals was to make this easy to test without needing a live Fabric tenant or incurring capacity costs. The tool includes a **simulate mode** that spins up a local DuckDB replica of AdventureWorksLT to mock the medallion layers:

# Clone the repository
git clone https://github.com/naveenjujaray/microsoft-fabric-schema-drift-detection.git
cd microsoft-fabric-schema-drift-detection

# Install requirements
pip install -r requirements.txt

# Run the 60-second demo simulation
python main.py --mode simulate --once --dry-run

This will snapshot baselines, inject 5 kinds of schema drift, and print out the entire detection report, the PR it would open, and all the Teams/Slack/Outlook payloads.

🏭 Running inside Fabric

It also fully integrates into a real Fabric tenant. You can run the code inside a Fabric Notebook (using the built-in notebook identity for auth) and schedule it as a Data Pipeline that fails on critical drift to serve as a CI gate.

Would love to hear your thoughts, feedback, or any features you'd like to see added!

u/jujaraynaveen — 24 hours ago

MS Fabric CI/CD - Why does “Commit all” sometimes create multiple commits instead of a single commit?

Has anyone seen this issue in Microsoft Fabric Git integration?
Sometimes when I click Commit all for all changed workspace items, Fabric creates two separate commit instancesinstead of a single commit (see screenshot). It doesn't happen consistently only occasionally.
Is this expected behavior or a known bug? Is there any way to force all changes into one commit?
Thanks!

u/Desperate_Pumpkin168 — 24 hours ago

Learn Fabric

Hello Everyone,

Quick background on me: I'm currently a Master's student with about 2.5 years of experience in Power BI and 1 year of experience in Databricks.
I was originally planning to go straight for the DP-600 certification, but I've realized that without hands on experience, the certification alone probably won't carry much weight. So I've decided to change my approach build some real projects first with Fabric, and then pursue certification once I have practical experience to back it up.
Could you all suggest good courses, YouTube channels, or other resources to get started with Fabric? Also curious what learning path/approach you'd recommend given my background.

Thanks in advance.

reddit.com
u/Beautiful-Wash3452 — 1 day ago

Passed DP-700 today with 843 on my second attempt

On my first attempt, I only used Microsoft Learn resources and did not review the material in enough depth.

For my second attempt, I used ChatGPT and Copilot Chat to generate practice questions, get explanations of key concepts, explore use cases, and create comparison tables. That approach helped me identify my weak areas and reinforce the topics I needed to understand better.

I also watched the Microsoft Reactor preparation videos on YouTube, which were very helpful for reviewing key topics and understanding the exam scope.

reddit.com

Put me out of my misery with Fabric deployment pipelines

We're trying to move off doing everything manually in the browser and actually get a proper dev/test/prod setup going for our Fabric workspace.

the git integration part was fine, connected the workspace to a repo, branching works, that side makes sense.

where it's falling apart is the actual promotion between stages. Notebooks and Spark job definitions move through the deployment pipeline cleanly. Anything with a connection string or workspace specific parameter doesn't carry over the way I expected, so after every deploy I'm going in by hand and fixing things that should've just mapped over.

it Feels like I'm missing a step around parameterization, like there's supposed to be a config file or rule set that handles this per environment, but the docs just kind of gloss over it and jump straight to "click deploy."

Also not clear on where connection strings for dev vs prod should even live. In the pipeline itself, in a variable library, somewhere else entirely?

Is this actually just manual cleanup every time for people, or is there a proper pattern for this that I'm not seeing?

reddit.com
u/darshan-thakur — 3 days ago

How to monitor Fabric link Cost and storage consumption?

Hi all, I'm completely new to fabric link, we have been using synapse link with delta conversion using spark but there was a problem where frequently updating tables like reqtrans in F&O was piling up with soft deletes which reached around 300 million rows now we have to unlink and relink this table to do a clean every week to keep the cost down.

My questions are:

will the fabric link have the same issues?

Does the low latency link have any additional cost other than dataverse storage cost?

What kind of storage does it use in dataverse, file, or database?

I can see the tenant level dataverse capacity in power platform admin centre under licensing. How do you pinpoint and find the storage capacity used by fabric?

We have around 285 F&O tables currently activated in the Synapse link. Would it be a good idea to switch to the fabric link?

Would be great if someone could guide me here.

reddit.com
u/llskssjw — 2 days ago

AI in notebooks

We use notebooks for all our pipelines from bronze to gold. I like to use VS code with fabric data engineering extension to edit my notebooks. The problem is that using claude or codex extensions in VS code does not work when using fabric data engineering environment. The only ai that works is github copilot but that is much more expensive than claude or codex.

Is this just me or do any of you guys face the same problem? Am I missing something here?

reddit.com
u/Starshopper22 — 3 days ago

Intentionally planning to use a user account as Last Modified By instead of SPN

I believe there is too much risk with using an SPN for Data Factory pipelines execution (via last modified by).

Has anyone been happy using a standard EntraID user account.

Some advantages:
- Password expiry is a non-issue

- Use a standard user account

- SecOps can disable the user account if necessary

- No dealing with SPNs and random outages due to SPN tokens expiring or undocumented 30 day expiry mechanisms

Has anyone decided to use a regular EntraID account? Anything to look out for?

reddit.com
u/Personal-Quote5226 — 3 days ago

CoPilot CU usage

Has anyone dealt with an insane amount of CU usage out of nowhere due to Copilot?

Typically really small amount of usage, and then all of a sudden 2 million CUs used within 24 hours, triggering an autoscale

u/EngineerTheData — 3 days ago

From SAP BW to Fabric

Has anyone experienced dropping the SAP BW/4HANA + SAP Analytics Cloud stack, to adopt a full Fabric stack, while keeping S/4HANA as the source system?

reddit.com
u/Forever_Playful — 3 days ago

Achievement Unlocked: Microsoft Certified Fabric Data Engineer Associate (DP-700)! 🎓

I've officially started my certification journey for Microsoft Fabric

u/jmjmalik22 — 3 days ago

Queued pipeline activities still getting stuck in UK South

Is anyone else still experiencing issues?

Some of our pipeline activities are still getting stuck for hours.

We tried to raise a ticket but the support request button doesn't seem to function.

reddit.com
u/mikeydeaks — 3 days ago
▲ 14 r/MicrosoftFabric+1 crossposts

Data Days Voucher

hii, so I have registered for Data Days to try to get free voucher but I have actually submitted the form before completing sessions and module. Will it be a problem? Also I have my exams this week so I won't be able to complete it before next thursday, Can I still get it?

u/riana-rdit-689 — 3 days ago
▲ 3 r/MicrosoftFabric+1 crossposts

How do you handle schema refreshes for Import models?

I have an Import mode model pulling from a Lakehouse SQL Analytics Endpoint, and a new column was recently added upstream.

According to the official documentation"Changes in data source table structure, or schema, such as a new, renamed, or removed column can only be applied in Power BI Desktop."

Because of this limitation, I currently have to manually open the .pbix in Desktop, refresh to pull the new column, and republish.

How are you all automating this in production so you don't have to open Desktop?

  • Can this be done easily with Tabular Editor via CLI or other means?
  • Has anyone used semantic-link-labs to force a schema sync for Import mode?
  • Are there any other tricks you use to handle schema drift?
u/mrbartuss — 3 days ago

Invoke Pipeline Activity Requires Connection to Workspace (Mandatory)

It's counter intuitive to require the Invoke Pipeline Activity to have a connection property to a workspace, as mandatory, given that in most cases the pipeline should be in the current workspace and therefore the child pipeline could just run as the executor of the current pipeline.

Is there a workaround that people have found to accomplish this? Is there some reason why it has to be this way specifically?

reddit.com
u/Personal-Quote5226 — 3 days ago

July 2026 | "What are you working on?"

Welcome to the open thread for r/MicrosoftFabric members!

This is your space to share what you’re working on, compare notes, offer feedback, or simply lurk and soak it all in - whether it’s a new project, a feature you’re exploring, or something you just launched and are proud of (yes, humble brags are encouraged!).

It doesn’t have to be polished or perfect. This thread is for the in-progress, the “I can’t believe I got it to work,” and the “I’m still figuring it out.”

So, what are you working on this month?

---

Want to help shape the future of Microsoft Fabric? Join the Fabric User Panel and share your feedback directly with the team!

reddit.com
u/AutoModerator — 3 days ago

Service Principal (SPN) Support for Fabric Warehouse Git Integration & Deployment Pipelines Is Now Available

Great news for teams building enterprise-grade CI/CD workflows with Microsoft Fabric Warehouse!

Service Principal (SPN) support for Fabric Warehouse Git Integration and Deployment Pipelines is now available, enabling fully automated, non-interactive deployment workflows. This removes a key blocker for organizations that rely on service principals for DevOps automation and governed release management.

With this update, you can:

  • Use Service Principals with Git-based CI/CD workflows
  • Automate commit, sync, and deployment operations without user credentials
  • Enable enterprise-ready DevOps pipelines using Azure DevOps or GitHub
  • Improve security by avoiding dependency on individual user accounts
  • Standardize deployment automation across development, test, and production environments

This enhancement is part of our broader investment in Fabric Warehouse developer experiences, Git integration, deployment pipelines, and automation scenarios. Fabric Warehouse already supports source-controlled development and deployment workflows, and SPN support unlocks the final piece required for many production-grade DevOps implementations.

Coming next:

  • Item Definition APIs for Warehouses
    • Create/Get/Update Warehouse with Item Definition
    • Support for both DACPAC and SQL Database Project (.sqlproj) definitions, enabling richer integration with existing SQL development workflows.
  • Fabric CI/CD package Integration
    • Deploy Warehouse item definitions directly through fabric ci-cd package.

What CI/CD scenarios are you planning to automate now that SPN support is available?

reddit.com
u/Snoo-46123 — 4 days ago

fabric-cicd v1.2.0 is here - new publish feature released!

Hello fabric-cicd community!

We’re excited to announce fabric-cicd v1.2.0 for June. This release brings new item type support, more flexible parameterization options, important reliability and security updates, and one of the larger enhancements we’ve introduced recently: bulk publish mode.

What’s new in v1.2.0?

New features

Bulk publish mode

Bulk publish mode is one of the larger features in this release, and we encourage users to try it. It allows fabric-cicd to publish multiple items in a single API call using the Fabric bulk import API, instead of publishing each item individually through the standard staged deployment path. This can make deployments more efficient.

Because dependencies are managed by the API during publish, bulk publish can reduce the rigidity of item-type-based staging and better support cross-item dependencies when logical ID references are used. It may also reduce the number of item-specific parameter values you need to configure.

This feature is currently experimental and requires feature flags, so we recommend trying it first in non-production environments while we continue gathering feedback. A few limitations apply: not every item type supported by the standard fabric-cicd deployment path is supported in bulk publish, and parameterization does not currently support dynamic variable resolution. For unsupported scenarios, fabric-cicd automatically falls back to the standard publish flow, so users can try bulk publish without manually switching deployment paths. If you test it in your CI/CD workflows, please share your experience through GitHub issues so we can continue refining it.

To learn more, read the bulk publish documentation here.

Expanded item type support

Map and Paginated Report items are now officially supported in fabric-cicd, expanding the range of Microsoft Fabric artifacts that can be automated through deployment pipelines and making it easier to include more reporting and visual artifacts in workspace deployment flows.

Parameter enhancements for find_value field

The find_value field in find_replace parameter received some useful updates in this release, including support for dynamic replacement variables and case-insensitive matching.

Now $workspace variables can be used to allow dynamic resolution for the values being searched for in the item definition files, reducing the amount of hard coding.

To use case-insensitive matching, add the ignore_case field within the parameter and set it to "true". This should make replacement rules easier to apply across environments where casing may not be perfectly consistent. Read here for more information.

Support for multiple connection IDs in semantic model binding parameter

The semantic_model_binding parameter now supports multiple connection IDs, making it easier to handle scenarios where a semantic model needs to bind across more than one connection in a target environment. Special thanks to u/alwortma2 for this valuable community contribution! See docs here.

Bug fixes

Fix management of Activator item dependencies

This release improves Activator item dependency handling by accounting for multiple Fabric item references that were previously missed as the Activator item type evolved. Thanks to the community for raising issues like this and helping us maintain a high-quality library experience. It also highlights where bulk publish can help by using a graph-based publish approach instead of fabric-cicd’s standard staged approach, bulk publish can adapt to dependency changes more seamlessly.

Other updates

Make log file creation opt-in

Log files can contain sensitive information, so file logging now requires an intentional opt-in through the FABRIC_CICD_FILE_LOGGING_ENABLED environment variable before any log file is created or written. This makes log creation a conscious decision and improves the default security posture by avoiding unnecessary local log files.

Enforce owner-only file permissions on sensitive files for POSIX systems

Sensitive files created by the library on POSIX systems now enforce owner-only permissions, improving the default security posture for generated files.

Documentation updates

The docs also received a few updates in this release, including a new devcontainer setup, a section about contributing to documentation, and a reorganization of item type documentation under the new Reference section for better clarity. Thank you u/cmaneu for contributing these awesome documentation improvements!

Upgrade Now

pip install --upgrade fabric-cicd

Relevant Links

reddit.com
u/fabshire25 — 5 days ago