What is the difference between Import, DirectQuery and Live Connection modes?
Three storage modes with genuinely different trade-offs.
- Import — data is loaded into Power BI's in-memory VertiPaq engine and compressed. Fastest by a wide margin, supports the full range of DAX and Power Query, and works offline. The limits are that data is only as fresh as the last refresh, model size is capped by capacity, and refresh time grows with volume. This should be the default.
- DirectQuery — no data is stored; every visual generates a query against the source at view time. Use it when data must be near real-time, or the dataset is too large to import, or governance forbids copying data. The costs are significant: report performance depends entirely on the source database, many DAX functions are unavailable or slow, Power Query transformations are restricted, and every interaction generates load on the source.
- Live Connection — connects to an existing model in Analysis Services or a Power BI dataset. You build visuals but do not own the model, which is exactly the point: one governed model serves many reports and definitions stay consistent.
Composite models let you mix them — importing dimensions while leaving a huge fact table in DirectQuery, with aggregation tables to answer most queries from memory.
Note: The interview point is that DirectQuery is often chosen for the wrong reason. "Real-time" usually means "refreshed hourly", which Import handles perfectly at a fraction of the complexity.





