Forum Discussion

powerbiexpert22's avatar
powerbiexpert22
Icon for Impactful Individual rankImpactful Individual
19 days ago
Solved

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

  • 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.

  • Hi powerbiexpert22​ 

    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's avatar
    jubinsoni
    Icon for Memorable Member rankMemorable 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 finishes

    With 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 time
    Logic App flow with scale-out:
    refresh (POST) -> Until: refresh status = Completed
    -> POST queryScaleOut/sync -> Until: syncStatus shows replicas in sync
    -> send "data ready" notification

    For 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 pages

    AI-assisted drafting: AI was used to help structure and phrase this response. I reviewed and validated the technical content before posting.

  • v-aatheeque's avatar
    v-aatheeque
    Icon for Community Support rankCommunity Support

    Hi powerbiexpert22​ 

    Following up to confirm if the earlier responses addressed your query. If not, please share your questions and we’ll assist further.

    • v-aatheeque's avatar
      v-aatheeque
      Icon for Community Support rankCommunity Support

      Hi powerbiexpert22​ 

      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.