Copyright (c) 2026 MindMesh Academy. All rights reserved. This content is proprietary and may not be reproduced or distributed without permission.
3.4. Reflection Checkpoint
Key Takeaways
- Configure the model for its users: business names and descriptions, sort by column for month names, data categories for maps, Don't summarize on non-additive numerics, hidden keys, display folders, and a measures table.
- Default to one-to-many, single-direction relationships in a star schema; use bidirectional filtering, many-to-many, and one-to-one deliberately, prefer CROSSFILTER inside a measure over a global Both setting, and remember only one relationship between two tables can be active.
- Handle role-playing dimensions with inactive relationships plus USERELATIONSHIP (one date table, role-specific measures) or duplicated dimension tables (independent slicing per role); build one contiguous, marked common date table and turn off auto date/time.
- Use measures for anything that must respond to filters; reserve calculated columns for slicing, sorting, and keys, and calculated tables for date tables, role-playing copies, and summary or helper tables.
- Think "change the filter, then compute": CALCULATE overwrites column filters unless KEEPFILTERS is used, REMOVEFILTERS/ALL and ALLSELECTED shape percent-of-total, time intelligence functions build date sets from the marked date table, semi-additive measures take period-end (or period-start) values, and calculation groups apply one transformation to any explicit measure via SELECTEDMEASURE.
- Optimize by measuring first: remove columns and rows, cut cardinality, summarize to the reported grain, and use Performance Analyzer's DAX/visual/other split plus DAX query view to target the real bottleneck.
Connecting Forward
Phase 4 builds on this model to create the report layer: choosing and formatting visuals, applying themes and conditional formatting, filtering and slicing, using Copilot and visual calculations, then adding bookmarks, drillthrough, tooltips, and AI visuals that turn a page of charts into a story.
Self-Check Questions
- A matrix shows Sales PY as blank for every row. The measure uses
SAMEPERIODLASTYEAR(Sales[OrderDate])and auto date/time is enabled. List the changes needed to the model and the measure, in order. - Finance needs inventory value by warehouse and month, where the month total must equal the last day's value and the current month must show the latest available day. Write the logic in words, naming the function you'd use and why LASTDATE isn't enough.
- A report is slow and the model is 3 GB. Performance Analyzer shows long DAX query times on most visuals. Name three model-level changes you'd evaluate before rewriting any measures, and how you'd confirm each one helped.
Written byAlvin Varughese
Founder•20 professional certifications