17 September 2026 · 7 min
Power BI
Star schema, not a web of both-direction relationships. Hide the key columns. One date table. Measures in a table, not scattered on facts. Dual relationships for role-playing dates, not copies of the calendar. DirectQuery only when the source can take the load; otherwise you will train users to 'refresh until it moves'.
Composite models and Direct Lake are useful. They also hide a second grain. We check: does this visual group by the business key we documented, or by whatever column was nearest the mouse? Field parameters beat ten copies of the same page. Incremental refresh with a well-chosen RangeStart beats importing five years every night.
Tableau
Extracts with a visible last-refreshed timestamp. Context filters before a big dimension. Don't live-query Oracle for a 40-mark dashboard on a Monday morning. LOD expressions are not a substitute for a correct grain in the extract. We publish a 'definition' worksheet: the metric, the filter, the grain, the owner. If it cannot be written there, it does not go on the exec view.
What we tell the room
A number without a grain is a negotiation. Public and private clients both do this: three versions of 'active customer' in three workbooks. We pick one, put it in the catalogue, and retire the others. That is how we have stopped a forecast being restated after the meeting rather than during it.
Related service: Data insights & strategy