Interactive workflow for auditing and standardizing naming conventions in Power BI semantic models stored as TMDL files. Ensures tables, columns, measures, and display folders follow human-readable, consistent, business-aligned naming standards.
Locate the TMDL files. Ask the user for the path to the .SemanticModel/definition/ directory if not obvious from context. Then scan the model structure:
# Count tables and get an overview
ls <path>/tables/*.tmdl
Read all table TMDL files to build a complete picture of current naming patterns. Focus on:
/// comments)CRITICAL: Do not rename anything without understanding the business terminology.
Use AskUserQuestion to gather context:
Adapt the naming rules to the user's business context. The rules in references/naming-rules.md are defaults -- override them when the user's organization has established conventions.
Before making changes, produce an audit report. Present a markdown table showing each proposed rename:
| Object Type | Current Name | Proposed Name | Issues Found |
|-------------|-------------|---------------|-------------|
| Table | FACT_Invoices | Invoices | Technical prefix |
| Measure | NetSls | Net Sales | CamelCase, abbreviation |
| Column | shp_dt | Ship Date | snake_case, abbreviation |
Group findings by issue type:
/// docstringsAsk the user to confirm or adjust the proposed renames before proceeding.
After user approval, edit the TMDL files. For each table file:
table declaration[Old Name] -> [New Name] patterns across ALL table files in the model'Table'[Old Column] -> 'Table'[New Column] across ALL table filesdisplayFolder: properties/// comments for measures and columns that lack themrelationships.tmdl for renamed tables/columnsCross-file reference updates are critical. When renaming a measure or column, search the entire definition/ directory for all references:
# Find all references to a renamed measure
rg "OldMeasureName" <path>/definition/tables/
rg "OldMeasureName" <path>/definition/relationships.tmdl
After applying changes, verify:
Run a final search to check for any missed references:
# Check for any remaining old names
rg -n "old_name_pattern" <path>/definition/
Consult references/naming-rules.md for the complete rule set including:
[Aggregation] [Base Name] [Period] ([Unit])
Quick-reference checklist for the most common issues:
| Anti-Pattern | Rule | Example Fix |
|---|---|---|
snake_case |
Use spaces | net_sales -> Net Sales |
CamelCase |
Use spaces | NetSales -> Net Sales |
UPPER_CASE |
Use spaces | TOTAL_COST -> Total Cost |
| Abbreviations | Spell out | Del. Mrgn -> Delivery Margin |
| Opaque acronyms | Spell out | TFS -> Total Freight Surcharge |
| Technical prefix | Remove | FACT_Orders -> Orders |
| Inconsistent periods | Standardize | LY/PY/Last Year -> 1YP |
| Inconsistent units | Standardize | pct/%/(%) -> (%) |
| Missing descriptions | Add | /// docstrings on all visible objects |
| Flat folders | Organize | Numbered hierarchy with subfolders |
WARNING: Renaming model objects breaks downstream report visuals that reference those fields. After renaming:
.pbir files or Power BI Service reports)visual.json files in PBIR formatAlways warn the user about this before applying renames. If downstream reports exist, consider:
references/naming-rules.md -- Complete naming convention rules with detection patterns, anti-pattern tables, and the measure name construction orderTo retrieve current semantic model and TMDL reference docs, use microsoft_docs_search + microsoft_docs_fetch (MCP) if available, otherwise mslearn search + mslearn fetch (CLI). Search based on the user's request and run multiple searches as needed to ensure sufficient context before proceeding.