Measure Killer Measure Killer

These docs are still being polished — a few sections and screenshots are on the way. Spotted something off? Let us know.

Power BI governance & monitoring — keep your tenant healthy

Monitor refresh schedules, enforce standards, detect duplicates, search every DAX and M expression, plan schema changes, and audit deprecated visuals — across your entire Power BI and Fabric tenant.

What Measure Killer covers

Governance is everything that keeps a Power BI tenant maintainable as it grows — refresh monitoring, standards enforcement, duplicate detection, impact analysis, and inventory hygiene. Measure Killer gives you a tenant-wide angle on each.

Refresh events — are your refreshes healthy?

Refresh history for semantic models, dataflows (Gen1 + Gen2), and Fabric notebooks — last refresh timestamp, success/failure status, average duration, and schedule. For notebooks, Measure Killer also tracks average session duration and run duration so you can spot notebooks that run longer than expected or consume excessive session time.

Beyond the summary, Measure Killer also lists every individual refresh event for an item — each run’s duration and, when a refresh has failed, the error message — so you can diagnose exactly what broke without leaving the tool.

Use this to catch failed refreshes before users notice stale data, identify models with excessively long refresh times, and spot schedules that overlap or conflict.

Semantic models inventory | Dataflows inventory | Fabric Notebooks

Tenant inventory — what’s in your tenant?

The Tenant summary gives you aggregate counts of every workspace, item type, and user in one view. The Workspaces tab lists every workspace with owners, creation date, last activity, and capacity assignment. The Tenant settings tab shows every admin-level setting configured in the Power BI admin portal.

Together, these answer “what do we have?” — the baseline for any governance initiative.

Tenant summary | Workspaces inventory | Tenant settings

Personal workspaces — the governance black box

Every user’s personal workspace (“My workspace”) is normally invisible to governance tooling. With a Fabric Admin scan, Measure Killer surfaces them: the inventory of what each person keeps there (reports, models, dataflows), who they’ve shared reports with out of those workspaces (via the Access tab, with cross-workspace shares flagged in yellow), and whether any sit on a paid Premium / Fabric capacity. It’s often the single biggest blind spot in a tenant.

Audit personal workspaces

DAX search & duplicate DAX expressions

Search every DAX measure, calculated column, and calculated table expression across the entire tenant in seconds. Find specific function calls, variable names, or table references — for example:

  • Hard-coded year values — search for 2024, 2025, etc. to find measures that will silently return wrong results next year
  • Inefficient patterns — search for CROSSJOIN, NATURALINNERJOIN, or ADDCOLUMNS with nested FILTER to find measures that may cause slow queries or excessive memory usage
  • Deprecated or risky functions — search for USERELATIONSHIP, LOOKUPVALUE, or other functions you want to audit or standardize

Duplicate DAX expressions surface measures with identical definitions across different models — a sign of copy-paste sprawl. Consolidating duplicates into a shared model or standardized patterns reduces maintenance and drift.

DAX expressions

M expressions search — impact analysis for schema changes

Search every Power Query / M expression across all semantic models and dataflows. This is critical for schema change impact analysis: before renaming a table, dropping a column, or changing a data type in your database, search M expressions for every reference to that object. Every hit is a model or dataflow that will break if the schema change goes live without updating the query first.

Also useful for finding which models connect to a specific data source, which queries use a particular transformation pattern, or where a deprecated connector is still in use.

M expressions

Duplicate detection — models and reports

Semantic model similarity compares models pairwise across tables, columns, measures, relationships, and M expressions. A 100% match is a duplicate; an 80% match is a near-duplicate worth consolidating.

Report similarity does the same for reports — comparing pages, visuals, filters, bookmarks, and report-level measures.

Both scores are tunable: adjust the weights for each attribute to focus on what matters to your organization.

Semantic model similarity | Report similarity

Visual type audit — find deprecated or non-standard visuals

Search every report for a specific visual type. The primary use case today is finding deprecated visuals (Map, Filled Map, Q&A) before Microsoft removes them — but the same search works for enforcing visual standards or auditing specific visual types across the tenant.

Find visual types

Excel & external connections — who’s querying your models directly?

The activity-log scan identifies every user who connects to your semantic models through Excel (Analyze in Excel, pivot tables) or through external XMLA applications (DAX Studio, Tabular Editor, custom apps). This has both a governance and a performance angle:

  • Governance — before cleaning up a model, you need to know which columns are consumed by Excel workbooks, not just Power BI reports. You can add the actual Excel files to Measure Killer to see exactly which columns they reference.
  • Performance — Excel generates MDX queries which are significantly more expensive in CU consumption than DAX. A handful of heavy Excel users on a shared model can drive up your capacity bill substantially.

Identify Excel users | Excel usage from model

End-to-end lineage — trace every dependency

Item-level lineage from data source through semantic models, dataflows, and reports — across workspaces. Trace upstream to find what feeds a report, or downstream to see everything that depends on a data source or model. Essential before any reorganization, migration, or decommissioning.

Column-level lineage from semantic model to visual is already available — for any column or measure, see every downstream visual that references it across all connected reports. Full source-to-visual column-level lineage (from database column all the way through to the Power BI visual) is coming soon.

End-to-end lineage | Column-level lineage (model → visual) | Source-to-visual lineage (coming soon) | Plan a database schema change

Common governance workflows

  • Pre-schema-change impact analysis. Before altering a database table or view, search M expressions for every reference. Every matching model and dataflow needs its query updated before the schema change is deployed.
  • Refresh monitoring. Sort semantic models and dataflows by last refresh status to catch failures. Sort by average refresh duration to find refreshes that are getting slower — a sign of growing data or inefficient queries.
  • Duplicate cleanup. Run model and report similarity to find copies that drifted apart. Consolidate duplicates into shared models or master reports. Use duplicate DAX expression detection to standardize measure definitions across models.
  • Deprecation planning. Search for deprecated visual types, deprecated connectors in M code, or deprecated DAX functions. Build a remediation list before the deprecation deadline.
  • Quarterly governance baseline. Run a full tenant scan. Export the Tenant summary, Workspaces, and Settings as a quarterly snapshot. Compare against the previous quarter to track growth, sprawl, and policy compliance.
  • Personal-workspace sweep. Filter the Access → Reports view to the Personal workspace type to find content shared out of personal workspaces, and check the Workspaces inventory for personal workspaces sitting on a paid capacity. Bring critical content into managed workspaces.
  • Pre-migration discovery. Before migrating to Fabric or reorganising workspaces, use lineage to map cross-workspace dependencies. Models and reports that reference each other across workspaces must move together.