Microsoft Fabric Best Practice: Safe, Scalable Refresh in Power BI & Fabric (2026)

 Updated: 11 March 2026 (AEDT)

Keeping data fresh without breaking capacity or waking up on-call at 3 a.m. is equal parts architecture and hygiene. In this post, we cover how to manage refresh and refresh failures safely across Power BI Service and Microsoft Fabric, for both normal-sized semantic models (<1 GB) and large models. We also show when to use XMLA endpoints and how to set up Fabric pipeline retries for resilient ingestion.


What to do:


1) The Platform Reality Check (Why refresh differs)

  • In Power BI Service, only Import-mode semantic models need source refresh; other modes (DirectQuery, Direct Lake, Live) query the source/OneLake directly. [knowledgesquare.uk]
  • Microsoft Fabric is a data platform: refresh can involve lakehouses, warehouses, pipelines, dataflows, and semantic models—and Direct Lake can auto‑reflect OneLake changes via “Keep your Direct Lake data up to date.” [learn.microsoft.com], [github.com]

2) Reference Architecture (Normal & Large Models)

Figure A – End‑to‑end refresh architecture in Fabric (original):

fabric_refresh_architecture.png


3) Storage Modes: Operational Trade‑offs

Figure B – Storage mode ops trade‑offs (original)





  • Import: Highest scheduled‑refresh effort; best report performance; requires solid Incremental Refresh and scheduling. [knowledgesquare.uk]
  • Direct Lake: Lowest refresh overhead—models read OneLake directly; enable “Keep up to date.” [github.com]
  • DirectQuery: No scheduled refresh, but higher latency/complexity against the source. [knowledgesquare.uk]

4) Safe Refresh for Normal Models (<1 GB)

Configure in Power BI Service (Import/Composite)

  1. Incremental Refresh: Set Store (e.g., 5–7 years) and Refresh (3–7 days) per big fact table. [knowledgesquare.uk]
  2. Schedule: 1–4 runs/day outside peak. Use Refresh history to verify duration and failures. [knowledgesquare.uk]
  3. Credentials & Gateways: Validate “Data source credentials” and “Gateway connections” to prevent failures. [knowledgesquare.uk]
  4. Notifications: Enable Refresh failure emails to owner + BI Ops. [knowledgesquare.uk]

Configure in Fabric (Direct Lake models)

  • Turn on “Keep your Direct Lake data up to date.” Add a scheduled refresh only for schema/metadata sync when needed. [github.com]

5) Safe Refresh for Large Models (>1 GB)

In Power BI Service (Premium/PPU)

  1. Large semantic model format = ON. [linkedin.com]
  2. Incremental Refresh = ON (avoid full reloads; partition by date). [knowledgesquare.uk]
  3. Semantic model scale‑out = ON to create read‑only replicas; readers continue uninterrupted while the write replica refreshes. You can let auto‑replica manage counts. [learn.microsoft.com], [au-prod.as...rosoft.com]
  4. XMLA endpoint (read/write) for table/partition refresh, metadata‑only deployments, and orchestration beyond UI limits. [learn.microsoft.com], [CodeInterpreter | InteractiveChart]

In Fabric

  • Prefer Direct Lake for very large facts when possible; it reduces “refresh” to metadata management. Orchestrate loads via Pipelines with activity‑level retries and alerts. [github.com], [inkeysolutions.com]

6) XMLA Endpoint: What It Is and How to Use It

What

  • The XMLA endpoint exposes your semantic models for open‑protocol management (SSMS, Tabular Editor, TOM/TMSL). Enable read/write in Premium/PPU to unlock partition control and advanced refresh. [CodeInterpreter | InteractiveChart]

Why

  • Partition‑level control (refresh only the changed month/day).
  • No 48‑per‑day UI limit; orchestrate sequences/scripts as needed. [learn.microsoft.com]

How (step‑by‑step)

  1. Prereqs: Workspace on Premium/PPU; XMLA read/write enabled. [CodeInterpreter | InteractiveChart]
  2. Connect: SSMS → Analysis Servicespowerbi://api.powerbi.com/v1.0/myorg/<workspace> → sign in. [CodeInterpreter | InteractiveChart]
  3. Manage partitions: Databases → <model> → Tables → Partitions</model> (view/create/alter). Process only the newest partition, or run TMSL (example below). [learn.microsoft.com]
  4. Automate: Use PowerShell/Automation to run TMSL on a schedule; common pattern is nightly “re‑process yesterday/today” while leaving history untouched. [github.com] 

TMSL example: refresh a single partition

{
  "refresh": {
    "type": "full",
    "objects": [
      { "database": "Hydrographics_Model",
        "table": "FactReadings",
        "partition": "FactReadings_2026_03_10" }
    ]
  }


Run from SSMS (XMLA query) or an Automation step. [learn.microsoft.com]

Bonus: With Scale‑out enabled, read‑only replicas keep serving users while the write replica refreshes—true zero‑disruption maintenance. [learn.microsoft.com]


7) Fabric Pipelines: Where Retries Belong (and How Many)

  • Retries are configured per activity (e.g., Copy, Notebook) with Retry Count and Retry Interval; there’s no global pipeline‑level retry today. [inkeysolutions.com], [learn.microsoft.com]
  • Retries help for transient faults (network hiccups, timeouts, locks, brief service blips). Community guidance suggests 2–3 retries, 30–60s interval, especially for Notebooks and Copy activities. [learn.microsoft.com]

Set up in the UI

  1. Data Factory → Pipelines → open Activity.
  2. Settings → set Retry count (e.g., 3) and Retry interval (e.g., 00:00:30).
  3. Add On Failure path to notify Teams/Email and optionally re‑queue downstream steps after cool‑off. [inkeysolutions.com]

8) Ops Checklist (Copy‑Ready)

Power BI Service – Normal (<1 GB)

Power BI Service – Large (>1 GB)

Microsoft Fabric (any size)


9) References (Further Reading)


Comments

Popular posts from this blog

Refresh Settings & Failure Management for Large Semantic Models in Microsoft Fabric (2026 Edition)

Migrating from Power BI Premium to Microsoft Fabric: A Step-by-Step Guide

Incremental Refresh in Dataflows Gen2 (2026 Edition)