How to Speed Up Power BI Refresh

Cody Schneider••9 min read

Nothing slows down your workflow quite like staring at a "refreshing data" pop-up in Power BI. A slow refresh can turn quick analysis into a frustrating waiting game, killing productivity and delaying important insights. This article walks you through the most effective strategies to slash your refresh times, from simple model optimizations to advanced configuration settings.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Why Is My Power BI Refresh So Slow? A Quick Diagnosis

Before diving into solutions, it's helpful to understand the common culprits behind a lagging refresh. Power BI has to perform a lot of work behind the scenes, and bottlenecks can occur at several stages. Typically, slow refreshes are caused by a combination of these factors:

  • Large Data Volumes: Simply put, importing millions or billions of rows takes time.
  • Complex Power Query Transformations: Every transformation step - merging queries, calculating new columns, splitting text - adds processing time. Inefficient or memory-intensive steps can dramatically slow things down.
  • Inefficient Data Models: A bloated data model with unnecessary columns, high-cardinality data, and poor relationships forces the VertiPaq engine to work overtime.
  • Gateway and Network Issues: If you're pulling data from an on-premises source, a poorly performing data gateway or slow network connection can be a major bottleneck.
  • Lack of Query Folding: When Power BI can't push transformation logic back to the source database (a process called "query folding"), it has to pull all the raw data in first and then apply the transformations locally, which is far less efficient.

Pinpointing the exact cause is the first step, and the following sections will help you tackle each of these potential performance killers.

Strategy 1: Optimize Your Data Model

Your data model is the foundation of your report. A clean, lean, and efficient model is the single most important factor for fast refreshes. Think of it like packing for a trip - the less unnecessary baggage you bring, the easier it is to move.

Remove Unnecessary Columns and Rows

This is the lowest-hanging fruit. More often than not, reports contain columns and rows that are never used in any visual or calculation. Review every column in every table and ask yourself, "Do I honestly need this for the report?"

The best place to remove data is in Power Query Editor, as early as possible. Filtering data at the source - before it ever gets into your model - is far more efficient.

  • Remove Columns: Right-click the columns you don't need in Power Query and select "Remove." If you need to keep a column for a relationship but don't need to display it, you should still keep it, but hide it in Report View later.
  • Filter Rows: If your report only covers the last two years of sales data, filter out everything older than that in Power Query. Why load five years of historical data if it's never going to be used?

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

Reduce Column Cardinality

Cardinality refers to the number of unique, or distinct, values in a column. Columns with very high cardinality - like a User ID column with a unique value for every row, or a datetime column that includes milliseconds - are a huge drain on performance. The VertiPaq compression engine has a much harder time with these columns.

Here are a few ways to manage high-cardinality fields:

  • Split Date/Time Columns: A DATETIME column can have millions of unique values. If you don't need the time component, change the data type to DATE. Better yet, if you need both, split it into two separate columns: one for Date and one for Time. This drastically reduces the cardinality of each column.
  • Aggregate Logs or Transactional Data: Instead of importing raw event logs with unique GUIDs and timestamps, pre-aggregate the data in the source system or Power Query. Grouping data by hour or minute can transform a billion rows of high-cardinality chaos into a much more manageable dataset.

Use the Right Data Types

Choosing the correct data type for each column might seem like a minor detail, but it has a real impact on model size and processing speed. The general rule is to use the simplest data type possible.

  • Use Whole Number instead of Decimal Number when you don't need fractions.
  • Use Fixed Decimal Number only for financial calculations that require high precision currency data.
  • Use Date instead of Date/Time if you don't need the time-of-day information.

Smaller, simpler data types lead to better compression and a faster data model overall.

Disable Auto Date/Time

By default, Power BI creates a hidden, background date table for every single date or datetime column in your model. If you have several date columns, your model can quickly become bloated with these automatically generated, often redundant tables.

It's a best practice to turn this feature off and use a dedicated calendar table instead. To disable it:

  1. Go to File > Options and settings > Options.
  2. Under the "Current File" section, go to Data Load.
  3. Uncheck the box for "Auto date/time".

After doing this, you'll need to create a dedicated DAX calendar table and mark it as a date table in your model. This single calendar can then be linked to all the date fields in your model, creating a more efficient star schema.

Strategy 2: Streamline Your Power Query Transformations

Power Query is an incredibly powerful tool for data transformation, but it's easy to build inefficient queries. The goal is to make your queries as clean and efficient as possible.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Force Query Folding Whenever Possible

Query folding is the magic that happens when Power BI translates your Power Query steps (like filtering, grouping, or removing columns) into the native language of your data source (e.g., SQL). This allows the source database to do all the heavy lifting before the data is even sent to Power BI, resulting in a massive performance boost.

To check if a step is "folding," right-click the last step in your Applied Steps list. If the "View Native Query" option is clickable, then query folding is active. If it's grayed out, that step broke the fold.

Some common operations that break query folding:

  • Transformations based on custom Functions or M code.
  • Applying an index column.
  • Certain operations that have no equivalent in the source system's query language.

To maximize query folding, try to perform all filtering, removing, and grouping steps at the beginning of your query before any steps that might break the fold.

Disable Load for Intermediate Queries

Many Power BI reports involve "staging" or "helper" queries that are used for merging or shaping data but aren't actually needed in the final report themselves. For example, you might have two separate queries that you merge into a third, final query.

For these staging tables, make sure to disable "Enable Load." Right-click the query in the Queries pane in Power Query and uncheck Enable Load. This tells Power BI not to waste time loading this intermediate data into the final data model, saving memory and refresh time.

Beware of Complex M Code and Merges

While custom M functions and complex merge operations add flexibility, they can also be performance killers, especially if they break query folding. If you find your refresh slowing down after adding a complex transformation, try to find a more efficient way to achieve the same result. Often, pushing this logic back into a SQL view at the data source is the best solution.

Strategy 3: Configure Advanced Refresh Options

Beyond optimizing the .pbix file itself, there are several settings within the Power BI service that can dramatically speed up refreshes for large datasets.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

Implement Incremental Refresh

For very large fact tables - like ad performance data, web analytics, or sales transactions - running a full refresh every time is incredibly wasteful. Incremental refresh allows you to partition your data and only refresh the most recent slice (e.g., the last day or week) while archiving older data.

Setting this up involves a few steps:

  1. Create Parameters: In Power Query, create two Date/Time parameters named RangeStart and RangeEnd. These are case-sensitive!
  2. Filter Your Data: Apply a custom filter to your date column using these parameters. For example, [OrderDate] >= RangeStart and [OrderDate] < RangeEnd.
  3. Configure the Policy: In Power BI Desktop, right-click your table in the Fields list and select "Incremental refresh." Here, you can define your policy, such as "Store data from the last 5 years" and "Incrementally refresh data from the last 7 days."

When you publish to the Power BI service, Power BI will perform an initial large load and then only pull the most recent data on each subsequent refresh, massively cutting down on time.

Check Your On-Premises Data Gateway

If your data sources are located on-premises, your Data Gateway is the bridge to the Power BI service. A slow or underpowered gateway is a common bottleneck.

  • Hardware: Ensure the gateway is running on a machine with sufficient CPU and RAM. Don't install it on a laptop or a low-spec server that is already busy with other tasks.
  • Network Latency: The physical distance and network speed between the gateway machine and your data source matter. Ideally, they should be on the same local network with a low-latency connection.
  • Updates: Keep your gateway software up to date to benefit from the latest performance improvements.

Final Thoughts

Speeding up your Power BI refresh is all about efficiency. By building a lean data model, writing streamlined Power Query transformations, and leveraging smart features like incremental refresh, you can transform sluggish reports into performance machines. Don't let waiting for data be a bottleneck in your analytical process.

While mastering these Power BI optimizations is a valuable skill, it's also a significant time investment, especially for marketing and sales teams who just need answers. We created Graphed because we believe getting insights shouldn't require becoming a data engineer. We automate the entire pipeline - from connecting live to your advertising platforms, CRM, and analytics tools to building real-time dashboards using simple, natural language. Instead of wrangling with M code and capacity settings, just ask for the report you need, and Graphed builds it for you in seconds.

Related Articles