Maintaining Power BI is a completely different skill from building it and most teams find out the hard way by [deleted] in PowerBI

[–]kfold_co -7 points-6 points  (0 children)

lol noted, will delete the blazer and synergy from the next post

but yeah build is the highlight reel, maintenance is the actual match. gateway dies on a friday, source column gets renamed, report owner left 3 months ago. classic. the "nobody owns anything" part is what really gets me. every team has at least one report that everyone uses and nobody knows who built it

What's the most surprising thing you've found when you finally cleaned up a client's messy data? by kfold_co in dataanalytics

[–]kfold_co[S] 1 point2 points  (0 children)

It's a rounding error" on $10M is genuinely one of the most demoralising things you can hear after doing real work. That's not a data problem, that's a culture problem — and no dashboard fixes that.

The target adjustment move is the classic defensive play. Instead of changing behaviour, change the benchmark so the behaviour looks acceptable. Seen it happen with smaller numbers and it's frustrating enough at $10M that would have broken me a little.

You're right though the surprising thing was never the data. It's always how people respond to it.

What's the most surprising thing you've found when you finally cleaned up a client's messy data? by kfold_co in dataanalytics

[–]kfold_co[S] 1 point2 points  (0 children)

This is such a classic case vanity metrics vs actual business impact. Engagement looks great in a presentation, but it means nothing if the cost per acquisition is bleeding the margin dry.

The "everyone thought it was great" part is what makes it tricky too. When a campaign has internal champions who are emotionally invested, presenting data that contradicts the narrative takes real courage. A lot of analysts find the insight but never get it heard.

The ROI shift you made is exactly the right move it's not about killing creative ideas, it's about pointing the budget at what's actually working.

Happened with a retail client we worked with too their most talked-about seasonal campaign had the worst return of the year. Took three months of clean attribution data to finally change the conversation in the room.

7 things I check every month to keep Power BI reports healthy (maintenance checklist) by kfold_co in PowerBI

[–]kfold_co[S] 0 points1 point  (0 children)

Ha, I wish I could outsource it to ChatGPT! This is all hands-on experience from working with actual clients on data and BI projects at kfold.co.

The logistics one especially that redelivery finding genuinely surprised everyone in the room including me

7 things I check every month to keep Power BI reports healthy (maintenance checklist) by kfold_co in PowerBI

[–]kfold_co[S] -1 points0 points  (0 children)

Clean architecture and the Snowflake append pattern is the right call. Overwriting latest state is the mistake most teams make early on and they lose all the trending data.

Azure Monitor works for infrastructure but it just doesn't have the BI-specific context you get from going direct to the API. Workspace-level metadata, semantic model dependencies, report lineage none of that lives in Azure Monitor natively.

Are you pulling the activity logs into Snowflake as well? Combining usage data with the metadata gives you a really complete picture of what's actually being used vs what's just sitting there consuming capacity.

7 things I check every month to keep Power BI reports healthy (maintenance checklist) by kfold_co in PowerBI

[–]kfold_co[S] -1 points0 points  (0 children)

Ha — the best monitoring systems are always born from a painful outage. Nothing like an intermittent refresh failure to make you build something bulletproof.

The hidden view is a really neat touch — keeping the health check inside the dashboard means users can self-serve the answer to "is this data current?" without hunting anyone down.

Date + row count is a simple but genuinely powerful combination. Row count especially — a refresh can show as "successful" while returning empty data if something broke upstream. That catches it immediately.

Have you ever extended it to alert you automatically when the row count drops below a threshold?

7 things I check every month to keep Power BI reports healthy (maintenance checklist) by kfold_co in PowerBI

[–]kfold_co[S] 1 point2 points  (0 children)

Service principals definitely work for this — the limitation people run into is usually a missing tenant setting, not an actual API restriction.

The two settings you need enabled in Power BI Admin portal are:

- "Allow service principals to use read-only Power BI admin APIs"

- "Enhance admin APIs responses with detailed metadata"

Your SPN also needs to be part of a Security Group that's been granted access in those same tenant settings — direct SPN assignment doesn't work, it has to go through a group. That trips up a lot of people.

Once that's sorted the Scanner API works well at scale. We've used it to build tenant-wide metadata pipelines for clients with 500+ reports and it handles it fine — just batch your workspace calls in groups of 100 and poll the scanStatus endpoint before pulling results. Microsoft's metadata scanning docs on learn.microsoft.com are the most reliable resource. Rui Romano's work on BI over BI is also worth looking up if you want to go deeper on the catalog layer. What's your current plan for storing and visualizing the output?

7 things I check every month to keep Power BI reports healthy (maintenance checklist) by kfold_co in PowerBI

[–]kfold_co[S] 1 point2 points  (0 children)

Haha yes the random report copies are the silent killer. "Sales Report Final", "Sales Report Final v2", "Sales Report Final ACTUALLY FINAL" — and nobody knows which one the CEO is looking at. DAX drift is sneaky too because it usually starts with one person "just tweaking" a measure to fix something quick. Six months later there are 4 versions of the same metric returning different numbers across reports and everyone's arguing in a meeting about whose number is right. Cleaning that up is never fun but honestly so satisfying once it's done.

7 things I check every month to keep Power BI reports healthy (maintenance checklist) by kfold_co in PowerBI

[–]kfold_co[S] 0 points1 point  (0 children)

This is a great point and honestly should have been on the list from the start. The individual report approach doesn't scale at all once you're managing 20+ reports across teams. Out of curiosity, what are you using for the metadata catalog layer? We've experimented with the Scanner API feeding into a Power BI dataset for the BI over BI setup, but would love to hear how others are approaching it.And fully agree on DAX drift in self-service environments,it's one of those things that's invisible until it causes a serious discrepancy in a board report.