๐Ÿ“Š Semantic Model Audit
Assessment Report
Client...
March 29, 2026 11:18 AM
gaston@thepowermates.com
Overall Health Score
68
Grade: D
1
CRITICAL
3
HIGH
3
MEDIUM
1
LOW
5
total_models
73
total_tables
280
total_measures
2
models_with_rls
14.6
avg_tables_per_model
924
total_size_mb
42
unused_measures
8
duplicate_measures

Findings (8)

Missing RLS on 3 models with sensitive data
CRITICAL
Security

Sales Revenue, Marketing Attribution, and Supply Chain Ops models expose all data to all workspace members without Row-Level Security.

โ†’ Implement RLS roles mapped to Azure AD groups. Priority: Sales Revenue (contains revenue targets and compensation data).
Marketing Attribution model exceeds 400MB
HIGH
Performance

At 412MB, this Import model is approaching the 1GB Pro license limit and causing 45-minute refresh times.

โ†’ Partition the model by date or switch historical data to DirectQuery/Composite mode. Consider incremental refresh.
42 unused measures across all models
HIGH
Optimization

15% of all measures are never referenced in any report or dashboard, adding unnecessary complexity and refresh overhead.

โ†’ Archive unused measures to a separate 'deprecated' display folder, then remove after 30-day verification period.
Circular dependency detected in Finance model
HIGH
Data Modeling

Table relationships between FactSales โ†’ DimProduct โ†’ FactInventory โ†’ DimProduct create a circular reference affecting calculation accuracy.

โ†’ Redesign the star schema to eliminate the circular path. Use bridge tables if many-to-many relationships are needed.
8 duplicate measure definitions
MEDIUM
Governance

Measures like 'Total Revenue' and 'Revenue Total' exist with identical DAX in multiple models, creating maintenance burden.

โ†’ Consolidate into a shared semantic model using composite models or DirectQuery chaining.
No descriptions on 85% of tables and measures
MEDIUM
Governance

Only Finance Consolidated has proper documentation. Other models lack descriptions, making self-service discovery difficult.

โ†’ Add descriptions to all tables and key measures. Use Tabular Editor for bulk updates.
No incremental refresh configured
MEDIUM
Performance

All 4 Import models do full refresh daily, even though only recent data changes. This wastes capacity and extends refresh windows.

โ†’ Configure incremental refresh with 3-year archive, 7-day incremental window on all Import models.
DirectQuery performance below threshold
LOW
Performance

Finance Consolidated DirectQuery averages 4.2s per visual query, above the 2s recommended threshold.

โ†’ Add aggregation tables for common queries. Review the SQL source query performance.

Recommendations

1Implement RLS on Sales Revenue, Marketing Attribution, and Supply Chain models immediately
2Partition Marketing Attribution model and configure incremental refresh
3Audit and remove 42 unused measures (15% of total)
4Resolve circular dependency in Finance Consolidated model
5Add descriptions to all undocumented tables and measures using Tabular Editor
6Consolidate 8 duplicate measures into shared definitions
7Configure incremental refresh on all Import-mode models
8Add aggregation tables to Finance DirectQuery model to improve visual query performance

Models Audited

nameworkspacetablesmeasuresrls_enabledstorage_mode
Sales Revenue ModelSales Analytics1452FalseImport
HR Metrics DashboardHR Analytics828TrueImport
Finance ConsolidatedFinance2295TrueDirectQuery
Marketing AttributionMarketing1138FalseImport
Supply Chain OpsOperations1867FalseComposite