Forum Discussion

manoj_0911's avatar
manoj_0911
Icon for Post Prodigy rankPost Prodigy
3 months ago
Solved

Recommendations to Improve Power BI Incremental Refresh Performance

Hi Team, I would like to know if there are any Microsoft-recommended settings or best practices to improve the refresh performance of our Power BI semantic models. Our current environment is: Po...
  • Rupa01's avatar
    3 months ago

    Hi manoj_0911,

     

    1. Are there any Power BI Desktop or Power BI Service settings that can improve refresh performance in our scenario?

    Yes. Verify query folding is maintained, enable Incremental Refresh with the smallest practical refresh window, review Power BI Desktop Data Load settings (parallel loading), and monitor Premium capacity using the Capacity Metrics app to identify refresh bottlenecks.

     

    2. Are there any recommended settings to reduce the load on SQL Server during refresh?

    Reduce the refresh window to only the period where data can change, enable Detect Data Changes where appropriate, ensure the Incremental Refresh date column is indexed, maintain query folding, and push heavy transformations into SQL rather than Power Query.

     

    2. Is there any way to control or limit the number of parallel queries generated during a refresh?

    Yes. In Power BI Desktop, review Parallel Loading and evaluation settings. Microsoft documents controls such as Maximum Number of Simultaneous Evaluations, which can be reduced when the source system is constrained by concurrent queries.

     

    3. Are there any recommended Incremental Refresh settings (such as refresh window, archive period, or refresh frequency) for our scenario?

    There is no Microsoft-recommended universal setting. The refresh window should match how far back data changes. If data only changes within the last 1โ€“2 days, refreshing the last 7 days every 2 hours may be excessive. The archive period should align with reporting requirements, and refresh frequency should be driven by business SLAs rather than a fixed best practice.

     

    4. Are there any Premium Capacity settings that can help improve refresh performance or reduce database contention?

    Monitor refresh workloads using the Fabric Capacity Metrics App and review capacity utilization. For larger models, consider Large Semantic Model Storage Format. For high-concurrency environments, Semantic Model Scale-Out can separate report query workloads from refresh workloads.

     

    5. Since we have more than 30 reports refreshing every 2 hours, are there any Microsoft best practices for scheduling or staggering refreshes?

    Yes. Avoid scheduling large numbers of semantic models at the same refresh time. Stagger refresh schedules across the day and consider using Fabric Data Pipelines to orchestrate refreshes sequentially rather than running many refreshes concurrently.

     

    6. Based on our data model, are there any relationship or modelling best practices that could improve refresh performance?

    Maintain a clean star schema, minimize bi-directional relationships, and only use many-to-many relationships where truly required. Microsoft recommends limiting bidirectional filtering because it can negatively impact performance and model complexity.

     

    7. Are there any other Microsoft recommendations to optimize our current setup?

    Consider using XMLA endpoints with SSMS or Tabular Editor for advanced partition management, metadata-only deployments, and targeted partition refreshes instead of refreshing entire semantic models. Also review SQL indexing and deadlock patterns with your DBA since refresh performance is often limited by source system behaviour rather than Power BI settings alone.

     

    8. Is there any Microsoft documentation covering these recommendations?

    Refer below ๐Ÿ“Œ Microsoft reference - 

    Overall recommendation - Focus first on staggering refresh schedules, reducing unnecessary refresh windows, limiting refresh parallelism, and reviewing SQL indexing/query plans. These typically provide the biggest improvements when many Incremental Refresh models hit the same SQL Server concurrently.

     

    ๐Ÿ’ก Helpful? Give a Kudos ๐Ÿ‘ โ€” keep the community growing
    โœ… Solved your issue? Mark as Solution โœ”๏ธ โ€” help others find it faster

    Best regards,
    Rupasree Achari | BI & Fabric Analytics Engineer 
  • Azadsingh's avatar
    3 months ago

    Your setup already looks quite good honestly (Premium + Import + Incremental Refresh + folding), so I donโ€™t think there is some magic Power BI setting that will suddenly improve everything.

    From what you described, issue looks more on SQL side due to concurrent refreshes. If 30+ datasets are refreshing every 2 hours, Power BI will fire many queries in parallel and that can definitely cause blocking/deadlocks.

    Few things I would check:

    • Stagger refresh timings โ€” donโ€™t start too many datasets at exact same time. Spread them by 5โ€“15 mins.
    • Reduce refresh frequency for reports which donโ€™t need 2-hour refresh.
    • Check SQL views/indexes, especially on columns used in incremental refresh filters.
    • Try to avoid too many Both direction and Many-to-Many relationships unless really needed.
    • If multiple reports use same dimensions/facts, maybe consider shared semantic model/dataflow instead of hitting SQL separately.

    As far as I know, there is no direct setting to limit parallel queries during refresh in Power BI Service.

    For Premium, Iโ€™d also monitor capacity metrics to see CPU/memory pressure during refresh.

    Microsoft docs you may find useful:
    Incremental Refresh: Incremental Refresh Docs
    Optimization guide: Power BI Optimization

     

    Helpful? Give a Kudos ๐Ÿ‘
    Solved? Mark as Solution โœ”๏ธ
    โ€” Azad Singh Thakur | Power BI Developer