Run a tenant-wide scan
Scan every workspace, every model, every report in your Power BI / Fabric tenant — the foundation that every other Enterprise feature builds on. Runs in two phases: inventory first, then per-item deep metadata.
Last updated · May 22, 2026
What you get
Tenant Analysis is Measure Killer’s broadest scan — it walks every workspace your account can reach, builds a tenant-wide inventory, and then lets you drill into individual models, reports and dataflows for their full metadata. The scan runs in two phases (inventory first, deep per-item metadata second) and unlocks the Tenant Analysis UI:

Click to zoom.
Which mode you run depends on your tenant role — see Pick the mode below. For a glossary of every tab, panel and toolbar action visible above, see the Tenant Analysis UI reference.
Pick the mode — Tenant Analysis vs Limited Tenant Analysis
Two welcome-screen tiles run the same engine but with different scope:
- Tenant Analysis (Admins group) — requires Fabric Administrator or Power Platform Administrator. Uses the Fabric admin APIs to see every workspace in the tenant, including ones you aren’t a member of and personal workspaces (“My workspace”). Unlocks the Access tab.
- Limited Tenant Analysis (Developers group) — works with normal workspace-level access (Contributor is safest; Viewer is enough for Power BI report metadata only). Scoped to the workspaces your account can reach. The Access tab is not available, and the refresh schedule for dataflows + report subscriptions are not fetched.
If you don’t know which you need, start with Limited Tenant Analysis — it’ll surface permission errors clearly if a workspace falls outside what you can see.
Connect & authorise
Pick a tile and Measure Killer opens your default browser with a Microsoft sign-in page — the same OAuth 2 flow as the online single-model scan. Log in with the Microsoft account that has the role the mode requires (Fabric Admin for Tenant Analysis, workspace-level access for Limited Tenant Analysis). Measure Killer keeps the access token Microsoft returns and uses it for every Power BI / Fabric API call. Your password never goes through Measure Killer.
Service principals are not supported — Tenant Analysis runs with delegated user auth only. If you need unattended / scheduled runs, point a dedicated service user (a real Microsoft account with the right role) at the scan, not a service principal.
Set the pre-filters and pick the scope
Tenant Analysis (and Limited Tenant Analysis) opens a richer Tenant Analysis filters window before the scan starts — narrow which workspaces are in scope, which extras to fetch, which tabs to show in the UI, and (optionally) whether to pre-run the used/unused logic upfront.

Click to zoom.
What each section controls:
- Workspaces. Toggles for Premium, Pro, personal (“My workspace”), and deleted workspaces. Personal-workspace visibility is a Tenant Analysis–only capability — Limited TA can’t reach personal workspaces regardless of this toggle.
- Performance. Per-feature toggles that decide how much extra data Measure Killer fetches alongside the base scan: apps, report subscriptions (capped at 200 reports/hour by the API), workspace domains, limited-access user search, Row Level Security, refresh events and schedule, report page views and load times, custom visual consumption. Use multithreading speeds up the scan; the number next to it is how many worker threads to use. Untick anything you don’t need — each toggle adds time.
- Measure Killer Analysis → Pre-run MK’s used/unused logic for models. Off by default and flagged ⚠️ Slow. Ticking it folds Phase 3 into the initial run so the % unused / freeable size figures are populated immediately instead of after a separate Analyze-model-usage click. Useful for unattended / overnight scans where you want everything done in one pass; leave off if you’d rather review Phase 1 first and only run usage analysis on the models that matter.
- Tab visibility. Show or hide individual right-side tabs (Workspaces, Apps, Notebooks, Tenant settings, Semantic models, DAX expressions, Lineage, Dataflows, M expressions, Access, Power BI reports, Row level security). Hiding the tabs you’ll never open keeps the UI focused — useful when you know in advance you only care about, say, the Semantic models and DAX expressions tabs for a model-cleanup audit.
- Filter capacities (Optional). Click Fetch capacities to list the capacities in your tenant, then either tick Include all capacities or select specific Premium / PPU / Fabric capacities to scope the scan to.
After clicking Next, you pick which workspaces (or individual items) to scan. Tick whole workspaces to pull everything inside them, or expand a workspace and tick specific semantic models, reports, dataflows or notebooks. Whatever you tick is what gets deep-scanned in Phase 2.
TODO: drop in the screenshot of the workspace / item selection view that comes right after the pre-filters.
Run the scan — two phases
Tenant Analysis runs in two phases. Knowing the difference matters because most of the right-side tabs in the screenshot above are greyed out until you trigger phase 2.
Phase 1 — Inventory pass (automatic)
Once you confirm the workspace selection, Measure Killer runs the inventory pass on its own — you don’t click anything. It walks every workspace in scope and pulls the workspace-level inventory: workspaces, settings, domains, apps, and end-to-end lineage (from data source to report, item-level — not column-level). This populates the always-on tabs:
- Workspaces — every workspace with type, capacity, owners
- Settings — tenant-level Power BI / Fabric settings
- Apps — every Power BI app and audience
- Lineage — end-to-end lineage from data sources through semantic models, dataflows and reports across the tenant (item-level)
- Access — Tenant Analysis only (not Limited TA); principals + roles per workspace and item
At this point the Tenant summary panel is also populated with aggregate counts of every Power BI and Fabric item type — see Tenant summary.
The deeper-analysis tabs — Semantic models, Dataflows, Power BI reports, Notebooks (Preview), DAX expressions, M Expressions, Row Level Security — are greyed out at this stage. You don’t have their data yet because Phase 1 doesn’t read into the items themselves.

Click to zoom.
Phase 2 — Per-item drill-down (click Analyze)
To activate the greyed-out tabs, tick the individual items you want the full metadata for — semantic models, reports, dataflows, notebooks, and apps — and now click Analyze. Measure Killer reads each selected item’s deep metadata (model schema, DAX expressions, M queries, report visuals, RLS roles, notebook content, app audiences and contents) and unlocks the corresponding tabs.
Ticking a semantic model is a shortcut for “model + everything downstream”. When you select a semantic model for Phase 2, Measure Killer automatically pulls in every report connected to that model and every downstream semantic model (composite / chained) plus the reports on those downstream models. You don’t need to tick the consumers manually — selecting the model is enough to capture the full impact tree.
You can iterate: let Phase 1 finish, decide which items deserve a closer look from the workspace-level data, then deep-scan only those. This keeps long-running scans focused and avoids fetching metadata for items you don’t care about.
TODO: screenshot of Phase 2 — items selected + the deep tabs activated.
Phase 3 — Analyze model usage (find unused at tenant scale)
After Phase 2 has pulled the deep metadata for the models you care about, the toolbar’s Analyze model usage action runs the core Measure Killer used/unused analysis across every scanned model in the tenant — locally, on the data already fetched, with no extra API calls.
The output is the tenant-scale version of the Clean your model tab from the single-model scan: every semantic model gets a % unused figure and an estimated size that can be freed in the Semantic models tab, sortable by either column. That makes it trivial to surface the biggest cleanup wins across the tenant — “this 4 GB shared model is 62% unused” is the row you want at the top.
View model usage is the per-model drill-down that goes with it. Once Phase 3 has run, select any one semantic model and click View model usage to see the full shared-model-online-style detail for that single model — every column, measure, table and relationship with the visuals, reports, Excel files and downstream models that reference each one. Same depth of detail as the online single-model scan, surfaced for any model in your tenant scan.
TODO: screenshot of the Semantic models tab after Analyze model usage — sorted by % unused / freeable size.
How long does it take
The two phases scale very differently.
Phase 1 (inventory) is fast — a few seconds to a few minutes, roughly regardless of tenant size. The workspace-level metadata is cheap to fetch; you’ll be looking at populated Workspaces / Settings / Apps / Lineage / Access tabs within minutes even on a large tenant.
Phase 2 (per-item drill-down) is where the time goes. Pulling the deep metadata for every selected model, report and dataflow follows the same metadata-not-data rule as the single-model scan: model schemas, DAX, M queries, report visuals, RLS roles. A model with many measures and visuals takes longer than a model with much more underlying data but few calculations and visuals.
- Small tenants (a few dozen workspaces, hundreds of items) — Phase 1 in seconds; Phase 2 in minutes if you deep-scan everything.
- Medium tenants (hundreds of workspaces) — Phase 1 in a couple of minutes; Phase 2 in tens of minutes to an hour depending on how much you tick.
- Large tenants (thousands of items) — Phase 1 still finishes in minutes. A full-tenant Phase 2 can take hours, sometimes overnight. For tenants this size, see Resume an interrupted scan below.
See How long it takes for the per-item benchmarks.
Resume an interrupted scan
You don’t have to deep-scan a thousand-item tenant in one sitting.
The toolbar Save action writes the current state to a
.measurekiller file on disk — every workspace, item, and bit of
metadata Measure Killer has fetched so far, including any Phase 2
work already done. Load that file later and you pick up exactly
where you stopped, with no re-fetch.
A typical large-tenant workflow:
- Let Phase 1 run (it’s fast — minutes at most). You now have the inventory tabs populated.
- Tick a manageable batch of items for Phase 2 and click Analyze. Let it run for as long as you have time — an hour, an afternoon, overnight.
- Click Save when you need to stop; close Measure Killer.
- Next day, open the
.measurekillerfile — every Phase 2 item you already scanned is restored. - Tick the next batch, click Analyze, repeat. Save again at the end of each session.
This also works for handoff — small scans can be saved and shared with a colleague, who opens the file and sees exactly the same data without needing the same admin permissions you ran the scan with.
The Measure Killer process may keep running after you close the window
Heads up: after closing the Measure Killer window — especially after a large scan — the Measure Killer process doesn’t close immediately. It can stay alive in the background for a few minutes (sometimes longer) while it finishes internal cleanup, releases locks, and writes state to disk. The window is gone, but Task Manager will still list a Measure Killer process for a while — this is the most common reason people ask “why is Measure Killer still running after I closed it?”.
This is normal. Two options:
- Let it finish on its own. The process will exit once cleanup is done — usually within a few minutes, occasionally a little more.
- Kill it manually from Task Manager. If you need to free
resources or restart Measure Killer right away, end the process
from Task Manager. Anything already written to a
.measurekillerfile you Saved is safe; only in-memory state that hadn’t been saved is lost.
The bigger the scan, the longer this lingering-process window. On a
thousands-of-items tenant analysis, give it more time than you would
for a single .pbix scan.
Read the results
After Phase 1, the most useful first stops are:
- Tenant summary panel — aggregate counts of every Power BI and Fabric item type, the quickest “what’s in this tenant” answer.
- Workspaces tab — every workspace with its inventory, owners, capacity and access.
- Apps tab — every Power BI app + its audiences.
- Lineage tab — end-to-end lineage from data sources through semantic models, dataflows and reports across the tenant (item-level, not column-level); useful for spotting cross-workspace dependencies.
- Access tab (Tenant Analysis only) — every principal with their role on every workspace and item.
After Phase 2 unlocks the deeper tabs, the natural follow-ons are:
- Semantic models / Dataflows / Power BI reports / Notebooks (Preview) — each scanned item with its detailed metadata. After running Phase 3, the Semantic models tab also surfaces a % unused and freeable size per model.
- DAX expressions and M Expressions — searchable index of every DAX measure and M query in the scanned set.
- Row Level Security — every RLS role and assignment across the scanned models.
TODO: any common new-user traps to flag — e.g. people opening DAX Expressions first before realising Phase 2 is required?
Common workflows
TODO: 2–3 concrete workflows — e.g. “First inventory before a governance initiative kicks off”, “Quarterly tenant audit”, “Pre-migration discovery before a Fabric move”.
What to do with the findings
Tenant Analysis produces a deep export trove — see the Exports overview for the full list. Common downstream uses:
- Feed the raw JSON exports into a governance dashboard, a data warehouse, or an AI model for prioritised optimisation suggestions.
- Use the Workspaces + Access views as the input to an access-review process.
- Use Semantic models + DAX expressions as a pre-migration baseline before a Fabric move.
TODO: expand once we have concrete customer-flow examples to cite.
Related
- Run your first online scan — start here if you only need to scope to one shared semantic model
- Tenant summary — the aggregate item counts produced by Phase 1
- Access & permissions tracking — what the Access tab gives you (full Tenant Analysis only)
- Semantic model similarity score — Phase 2 follow-on
- End-to-end lineage (source → report)
- Tenant Analysis UI reference — every tab and panel explained