Unused Tables
What It Detects
Section titled “What It Detects”This flag identifies tables in a semantic model that are not referenced by:
- Any measure (DAX expression)
- Any relationship (active or inactive)
- Any report visual or filter
- Any calculated column or calculated table expression
A table is flagged only when none of its columns are used anywhere in the model or reports.
Why It Matters
Section titled “Why It Matters”- Wasted memory — Every table loaded into the VertiPaq engine occupies RAM, even if no report ever queries it. Removing unused tables frees capacity for active workloads.
- Slower refresh — Unused tables are still refreshed on schedule, consuming CUs and extending the refresh window unnecessarily.
- Model clutter — Extra tables increase cognitive load for developers browsing the model and make impact analysis harder.
- Larger model size — Bloated models hit capacity size limits sooner, potentially triggering the Model Size / Bloat flag.
Trigger Conditions
Section titled “Trigger Conditions”A table is flagged as unused when all of the following are true:
- No column in the table is referenced in any DAX measure expression.
- No column in the table participates in any relationship (active or inactive).
- No column in the table is used in any report visual, filter, slicer, or page-level/report-level filter.
- The table itself is not referenced in any
CALCULATETABLE,FILTER, or row-context function. - The table is not a calculated table whose expression references other active tables.
Threshold: A table with zero references across all of the above criteria is flagged.
Output
Section titled “Output”When this flag triggers, Soterre PBI Analyzer returns:
| Field | Description |
|---|---|
tableName | Name of the unused table |
rowCount | Number of rows in the table |
columnCount | Number of columns in the table |
sizeBytes | Estimated in-memory size of the table |
datasetName | Name of the semantic model containing the table |
workspaceName | Name of the workspace |
Notes and Edge Cases
Section titled “Notes and Edge Cases”- Staging tables — Tables used only as intermediate steps in Power Query but exposed to the model are flagged. Consider hiding or removing them.
- Auto date/time tables — Hidden system-generated date tables are handled separately by the Automatic Hidden Tables flag and are excluded from this check.
- Tables used only in RLS — If a table is referenced only in a Row-Level Security expression, it may still be flagged because RLS expressions are not always visible to the scanning API. Verify manually before removing.
Related Flags
Section titled “Related Flags”- Unused Columns — Individual columns within an otherwise-used table that are not referenced.
- Automatic Hidden Tables — System-generated hidden tables that are a specific subset of potentially unused tables.