Forum Discussion
Query scaling and caching
i want to know the purpose of below options and when i should use it, i am currently using Power BI API using logic app to refresh the dataset, will these options still valid if i enable them?
these settings are related to semantic model query perf and are separate from the mechanism you use to trigger refreshes through a Logic App and the PBI REST API.
Query scale-out
- Creates additional read-only replicas of the semantic model.
- Distributes report and dashboard queries across those replicas.
- Helps when many users are querying the same semantic model, especially while refresh operations are occurring.
Consider enabling it when:
- The semantic model serves a large number of concurrent users.
- Report responsiveness degrades during or shortly after refreshes.
- You are running on a supported Premium/Fabric capacity where scale-out is available.
Query caching
- Stores previously generated query results so repeated requests can be served faster.
- Reduces the amount of query processing required for frequently accessed reports.
Consider enabling it when:
- Users repeatedly access the same reports and visuals.
- The data does not change continuously throughout the day.
- Faster report interaction is more important than always recalculating identical queries.
For your Logic App and REST API refresh scenario
- Your existing dataset refresh API calls will continue to work normally.
- Enabling Query Scale-out does not change how refreshes are triggered.
- Enabling Query Caching does not replace refreshes or make refreshes run faster.
- The main benefit is improved report consumption performance after the model has been refreshed.
One important detail ->if you use the enhanced refresh REST API, refreshing the semantic model does not automatically refresh the query cache. Therefore, users might not immediately benefit from newly cached query results after an API-triggered refresh until the cache is regenerated. In short, these settings are still valid even when refreshes are orchestrated through Logic Apps and the PBI REST API. They optimise the report querying experience, not the refresh process itself.
references:
- Query scale-out: https://learn.microsoft.com/fabric/enterprise/powerbi/service-premium-scale-out-configure
- Query caching: https://learn.microsoft.com/power-bi/connect-data/power-bi-query-caching
Help make this community better for everyone: if this answer resolved your issue, please accept it or leave an upvote. If not, share more details in a comment so we can continue the discussion and find the right solution.
5 Replies
- Vinodh247
Super User
these settings are related to semantic model query perf and are separate from the mechanism you use to trigger refreshes through a Logic App and the PBI REST API.
Query scale-out
- Creates additional read-only replicas of the semantic model.
- Distributes report and dashboard queries across those replicas.
- Helps when many users are querying the same semantic model, especially while refresh operations are occurring.
Consider enabling it when:
- The semantic model serves a large number of concurrent users.
- Report responsiveness degrades during or shortly after refreshes.
- You are running on a supported Premium/Fabric capacity where scale-out is available.
Query caching
- Stores previously generated query results so repeated requests can be served faster.
- Reduces the amount of query processing required for frequently accessed reports.
Consider enabling it when:
- Users repeatedly access the same reports and visuals.
- The data does not change continuously throughout the day.
- Faster report interaction is more important than always recalculating identical queries.
For your Logic App and REST API refresh scenario
- Your existing dataset refresh API calls will continue to work normally.
- Enabling Query Scale-out does not change how refreshes are triggered.
- Enabling Query Caching does not replace refreshes or make refreshes run faster.
- The main benefit is improved report consumption performance after the model has been refreshed.
One important detail ->if you use the enhanced refresh REST API, refreshing the semantic model does not automatically refresh the query cache. Therefore, users might not immediately benefit from newly cached query results after an API-triggered refresh until the cache is regenerated. In short, these settings are still valid even when refreshes are orchestrated through Logic Apps and the PBI REST API. They optimise the report querying experience, not the refresh process itself.
references:
- Query scale-out: https://learn.microsoft.com/fabric/enterprise/powerbi/service-premium-scale-out-configure
- Query caching: https://learn.microsoft.com/power-bi/connect-data/power-bi-query-caching
Help make this community better for everyone: if this answer resolved your issue, please accept it or leave an upvote. If not, share more details in a comment so we can continue the discussion and find the right solution.
- krishnakanth240
Super User
You can keep your Logic App refresh as it is where it works with both features so you can enable Query caching on dataset as it is low risk and speed up first load report times for repeated viewers then monitor the performance. If users see slowness or timeouts when Logic App refresh is running then convert dataset to semantic model storage format and enable query scale out
- jubinsoni
Memorable Member
Hi powerbiexpert22,
One more detail that matters specifically because you refresh from a Logic App: with query scale-out on, the refresh runs on the read-write copy, and report users read from the read-only replicas. The replicas only show the new data after they are synchronized.
Logic App -> POST /refreshes -> refresh completes on the read-write replica -> replicas sync (automatic by default) -> report users see new data only after the sync finishesWith automatic sync left on, you don't need to change anything; there can just be a short delay. If you want the refresh and the "data visible to users" moment to line up exactly (or you've turned auto-sync off to refresh several tables first), add a sync step after the refresh succeeds:
POST https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/queryScaleOut/sync GET https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/datasets/{datasetId}/queryScaleOut/syncStatus -> wait until the replicas report the same version / commit timeLogic App flow with scale-out: refresh (POST) -> Until: refresh status = Completed -> POST queryScaleOut/sync -> Until: syncStatus shows replicas in sync -> send "data ready" notificationFor query caching nothing extra is needed in the Logic App; just keep in mind it only applies to the report's initial visual queries (landing page tiles/visuals), so it helps most for heavily used reports with many viewers.
So my overall approach would be:
many concurrent users / slow during refresh -> enable scale-out -> Logic App: refresh -> (optional) explicit sync -> confirm syncStatus -> query caching on for high-traffic reports' landing pagesAI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.
- v-aatheeque
Community Support
Following up to confirm if the earlier responses addressed your query. If not, please share your questions and we’ll assist further.
- v-aatheeque
Community Support
Have you had a chance to look through the responses shared earlier? If anything is still unclear, we’ll be happy to provide additional support.