Import caches in VertiPaq and refreshes on a schedule. DirectQuery sends DAX-generated SQL at interaction time. Misalignment happens when sales wants “live” while the warehouse still batches every 4 hours — DirectQuery then only delivers live disappointment.
Agree numbers in the kickoff
- Freshness SLA in minutes (e.g. ≤ 15 vs nightly is enough).
- p95 visual response target (e.g. < 5s). If SQL cannot hit it with filters, Import + more frequent refresh wins.
- Who pays when a lock or blocking session on SQL makes the dashboard spin — BI or DBA on-call?
Technical tripwires
Dual storage mode tables casually introduced “to speed the date table” create unexpected refresh + query coupling. Bidirectional relationships in DirectQuery multiply SQL joins. If View Native Query disappears after a custom column in Power Query, you may be evaluating mashup before SQL — Desktop feels fine on a sample; the gateway times out with “A connection could not be made…” under concurrent users.
Default stance for management packs: Import with a known refresh window. Keep DirectQuery for operational screens where the source is indexed for the exact predicates the reports send.