Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.
Use names like SalesTransactions, CustomerInteractions, or InventoryMovements.
Why: Copilot interprets table names semantically. Action-oriented names help it understand the purpose of the data, improving the relevance of generated insights.
Connect facts to dimensions using proper relationships.
Why: Relationships allow Copilot to traverse the model intelligently. Without them, it may misinterpret data or fail to generate meaningful summaries. I had a model with one, flat table, and Copilot could only return a card visual as a new report page.
Use the data category property to assign categories like City, State, or Country to geographic columns.
Why: Helps Copilot recognize location fields for mapping and geo-based analysis.
Use tools to check for query folding.
Why: Query folding pushes transformations to the source system, improving performance and reducing memory usage. This does not directly affect Copilot, but you can obtain efficiencies on on refresh duration and CPU(s).
Technical insight: The developer of the Power BI connector builds logic into their connector to translate M functions into the language of the source system. Some functions "fold" and others do not. The source system compute will always perform better than the mashup engine of Power BI, which was originally built for Excel.
Use Performance Monitor and DAX Studio to check for folding and bottlenecks.
Why: Ensures efficient query execution and helps identify areas for optimization, for example, identifying steps that do not fold or inefficient DAX measures. If Copilot cannot answer a question from the visuals, it will search the semantic model, and you need it to be timely.
Identify and remove unused columns and measures with Measure Killer.
Why: Reduces model complexity and size, making it easier and more efficient for Copilot to navigate and generate accurate results.
Ensure fields are aggregated correctly by default (e.g., Average for price, not Sum). Some fields, like Year or CustomerNumber should be set to "Don't Summarize" by default.
Why: Prevents misleading insights and ensures Copilot applies the correct logic.
Check that columns are correctly typed (e.g., numeric, date, Boolean).
Why: Proper data types help Copilot interpret fields correctly and apply appropriate operations. It also has performance bennefits when going from text to numeric if numeric data is stored as text.
Hide primary, foreign, and irrelevant business keys from report view.
Why: These are useful for relationships but not for analysis. Hiding them de-clutters the model and guides Copilot toward meaningful fields. This is easily done through Prep for AI.
The naming convention, e.g. Customer_ID or Customer ID does not matter, but be sure replace CustID with CustomerID, Rev with Revenue, spell out acronyms, etc.
Why: Full names improve clarity and help Copilot understand the semantic meaning of each field.
Use names like TotalSalesAmount instead of Amount.
Why: Descriptive names help Copilot generate more accurate narratives and visuals.
Why: These steps ensure Copilot can apply time intelligence, Boolean logic, and numeric operations correctly. Flattened models also improve performance and simplify analysis.
Optimizing your semantic model both about performance and about enabling Copilot to deliver the best possible insights. These practices help bridge the gap between raw data and intelligent, AI-powered storytelling.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.