Finding
Direct Lake Gave Me the Right Number. It Just Didn't Use Direct Lake.
A Direct Lake model that falls back to DirectQuery doesn’t announce it. The report loads, the total is right, and nothing tells you which engine answered.
Last week’s test used Direct Lake on OneLake, which has no DirectQuery fallback at all. This one needed Direct Lake on SQL, the flavor that can fall back, so I set out to watch it happen.
The setup
I used the Contoso Retail sample data: a 12,627,608-row fact table in a Fabric Lakehouse, on a trial capacity. I built a Direct Lake on SQL model over it, then added a second table to the model: a SQL view over the same fact table.
CREATE VIEW dbo.vw_FactOnlineSales AS
SELECT OnlineSalesKey, DateKey, SalesAmount FROM dbo.FactOnlineSales;Two visuals with the same shape: sales amount by date, one from the table, one from the view.
What the model said
Both tables show Direct Lake as their storage mode, the view included.

Both visuals also returned the same total: 2,718,202,629.81. If I had stopped there, I would have called it fine.
What the query did
Performance Analyzer told a different story. Expanded, the view’s entry has a Direct query step. The table’s entry has none.

Same total, same label, different engine. The view-based table went through DirectQuery.
Where it didn’t show up
I also went looking in workspace monitoring. I searched the semantic model logs for an operation with DirectQuery in its name and found none. I haven’t worked out where, or whether, fallback shows up there, so Performance Analyzer is the only evidence I have.
The storage mode says Direct Lake. Performance Analyzer says what the query actually did.
What I take from this
- The storage mode on a table doesn't tell you whether a query fell back
- A table based on a SQL view fell back in Direct Lake on SQL. Microsoft documents that, along with SQL endpoint security and capacity guardrails, as causes of fallback
- Microsoft says fallback can be disabled so those queries fail instead of quietly changing engine. I haven't tried it
- Direct Lake on OneLake has no fallback path, so the question only exists with Direct Lake on SQL