Shared semantic models fail socially before they fail technically: Finance’s YTD uses DATESYTD on Calendar[Date], Sales uses a custom “year start = February” measure, and the exec meeting argues about 4%. Governance is naming, ownership, and banned patterns — not a style guide PDF nobody opens.
Minimum model standard
- One hidden _Measures (or Measures) table; display folders by domain (Revenue, Margin, Headcount).
- Description property filled on every board-facing measure; dataset Description names the steward.
- Calculation groups / time intel changes go through pull request or peer review — no silent Desktop edits to production datasets.
Banned until proven with Performance Analyzer
Reject unbounded SUMX(FILTER(Fact, …)) over multi-million-row facts without evidence. Reject bidirectional relationships added “so the slicer works.” Reject time intelligence (SAMEPERIODLASTYEAR, DATESYTD) without Mark as date table on a continuous date dimension — otherwise results look plausible and are wrong across fiscal calendars. Allow exceptions only with Performance Analyzer timings attached to the change ticket.
When two measures disagree, do not “fix the report.” Diff the DAX in Tabular Editor / Desktop measure view and republish one certified definition.