How to Set Up Incremental Refresh in Tableau
Waiting for a massive Tableau dashboard to refresh can feel like watching paint dry. A full refresh grabs every single row from your database every time, which is fine for small datasets but becomes a huge bottleneck when you're working with millions or billions of rows. This article will show you how to set up an incremental refresh in Tableau, a powerful feature that only adds the newest and updated data/rows, dramatically speeding up your workbooks and reducing the strain on your data sources.
What is Incremental Refresh and Why Should You Use It?
Think of your data like a bookshelf. A full refresh is like taking every single book off the shelf and putting it back, just to add one new book. An incremental refresh is much smarter. It looks at the books already on the shelf, sees the newest one you added yesterday, and simply adds the new books that arrived today right next to it.
In technical terms, an incremental refresh updates your Tableau extract by retrieving only the rows that are new or changed since the last refresh. It uses a specific column, typically a date, datetime, or a sequential ID, to figure out where it left off.
The Benefits of Going Incremental
Swapping a full refresh for an incremental one isn't just a minor tweak, it fundamentally changes your workflow for the better, especially with large datasets. Here are the main advantages:
- Faster Refresh Times: This is the biggest win. Instead of pulling millions of rows, you might only be pulling a few thousand new ones. Refresh tasks that used to take hours can be completed in minutes, giving you quicker access to fresh data.
- Reduced Database Load: Your database administrators will thank you. Running huge queries puts a lot of stress on your database server, potentially slowing it down for everyone else. Incremental refreshes run smaller, more efficient queries, which minimizes the performance impact.
- Saves on API Calls and Costs: If you're pulling data from a source with API limits or a usage-based cost structure (like Google Analytics or certain data cloud platforms), pulling less data translates directly into lower costs and staying well within your API-call limits.
- Consistency with Historical Data: Since you're only adding new rows, you avoid accidentally altering historical data. This provides a stable, unchanging foundation for your longitudinal analysis.
Prerequisites for Setting Up Incremental Refresh
Before you get started, your data source needs one critical component. Tableau needs a marker to know where the new data begins. This is not optional, without it, incremental refresh won't work.
You must have a column in your data that consistently increases as new records are added. This can be:
- A creation_date or transaction_date (Date/Datetime column): This is the most common and ideal scenario. You can tell Tableau to fetch all rows with a date greater than the last one it saw.
- A sequential ID number (Integer column): An OrderID, TransactionID, or any other unique numeric ID that increases in order is a perfect candidate. Tableau will simply query for IDs greater than the last recorded ID.
Important: A last_modified_date column is usually a poor choice. An incremental refresh only adds new rows based on this column. If an old row from last year is modified, its last_modified_date will update, but Tableau's incremental logic won't go back to find it. It's only looking for records newer than the most recent creation date in its extract.
You also need to be using a Tableau Data Extract (.hyper file). Incremental refresh is a feature of extracts, not live connections.
Step-by-Step Guide to Configuring Incremental Refresh in Tableau
Ready to set it up? The process is straightforward and only takes a minute inside Tableau Desktop. Let's walk through it.
Step 1: Connect to Your Data Source and Select "Extract"
Start by creating your data source as you normally would. Once your tables are on the canvas, look to the top right corner of the Data Source page. You’ll see options for Live and Extract. Select Extract.
This tells Tableau that you want to import a copy of the data into its high-performance in-memory engine, creating a .hyper file.
Step 2: Open the Extract Data Settings
After selecting Extract, a link that says "Edit..." will appear next to it. Click this link to open the "Extract Data" dialogue box. This is where you configure all the settings for your extract, including filters, aggregation, and the incremental refresh itself.
Step 3: Enable Incremental Refresh
In the dialogue box, you will see a checkbox for Incremental refresh. Check this box.
This will enable the options below it, which tell Tableau how to perform the incremental update.
Step 4: Identify Your Refresh Column
This is the most critical step. Tableau needs to know which column to use to identify new rows.
- Click the dropdown menu under Identify new rows using column:
- Select the appropriate date, datetime, or integer ID column from your table. Remember, this must be a column that strictly increases as new data is added (e.g., OrderDate, Creation_Timestamp, RecordID).
Once you select a valid column, you’re ready to create the extract.
Step 5 (Optional): Advanced Settings
Under the "Advanced settings" dropdown, you'll find two options:
- Don't refresh rows and have a last_modified_date newer than the last refresh if one exists on your dataset. This isn't usually recommended if you rely on an append-only model to only add new data when using the date creation timestamp as the refresh column.
- Refresh by replacing existing data within the extract with new data based on what exists on your refresh column. This is also useful in specific sync cases, but for most use cases, stick to "Only insert new rows".
For a standard incremental refresh simply adding newly generated data, the default settings will suffice and you can bypass any adjustments in the advanced settings.
Step 6: Create the Initial Extract
Click "OK" to close the settings. Now, simply navigate to any sheet in your workbook. Tableau will prompt you to save the extract (.hyper file) and will begin creating the initial, full extract. This first pull will take a while, as it's grabbing all the data. But don't worry — every subsequent refresh from this point forward will be incremental and much, much faster.
Once the extract is created, you can publish the workbook to Tableau Server or Tableau Cloud and set up a refresh schedule. The server will use the incremental settings you just configured for all automated refreshes.
Common Challenges and Best Practices
Setting up incremental refresh is generally easy, but a few common issues can trip people up. Here’s what to look out for.
Challenge: Deleted Rows
It's crucial to understand that an incremental refresh only adds new data. It does not account for rows that have been hard deleted from the source database. If a record from six months ago is deleted in your CRM, Tableau's extract won't know and will continue to include it in your dashboard.
Solution: Schedule a periodic full refresh (e.g., once a week or once a month) alongside your daily incremental refreshes. This "cleans house" by rebuilding the entire extract and removing any deleted records, ensuring data accuracy over the long term.
Challenge: Updated Historical Rows
As mentioned before, if old rows in your data source are updated (not deleted), the incremental refresh will miss them. The process only looks for rows with a creation date/ID greater than what it already has.
Solution: The best approach here is structural. Try to work with data that follows an append-only model where historical records are immutable. If that's not possible, the periodic full refresh is your best bet for catching those sneaky updates.
Best Practice: Run a Validation Check
After your incremental refresh has been running for a while, it's wise to do a sanity check. A great way is to build a simple worksheet displaying COUNTD(OrderID) or a total record count. Compare the number in your Tableau view with a simple query directly against the database to ensure they are in sync. If you see them drifting apart, it might be a sign that a full refresh is needed.
Best Practice: Use with a Data Source Filter
If your dataset contains years of data but you only ever report on the last two, why pull all of it? Before creating your extract, add a "Data Source Filter." For example, add a filter on OrderDate to only include "Last 2 years." Your incremental refresh will have a smaller initial footprint and be more performant over time.
Final Thoughts
Setting up an incremental refresh in Tableau is a simple configuration change with a huge payoff, especially for anyone bogged down by performance issues on large datasets. By intelligently updating your extracts instead of completely rebuilding them, you'll reclaim hours of lost time and deliver insights to your stakeholders much faster.
While mastering specific settings is valuable, it highlights the kind of manual configuration work that teams often get stuck doing. At Graphed, our goal is to eliminate that friction. We connect directly to your marketing and sales data sources and manage real-time data syncs automatically, so you're not spending your day configuring schedules or troubleshooting stale dashboards. You can just focus on asking questions and getting instant answers from always-fresh data.
Related Articles
How to Enable Data Analysis in Excel
Enable Excel's hidden data analysis tools with our step-by-step guide. Uncover trends, make forecasts, and turn raw numbers into actionable insights today!
What SEO Tools Work with Google Analytics?
Discover which SEO tools integrate seamlessly with Google Analytics to provide a comprehensive view of your site's performance. Optimize your SEO strategy now!
Looker Studio vs Metabase: Which BI Tool Actually Fits Your Team?
Looker Studio and Metabase both help you turn raw data into dashboards, but they take completely different approaches. This guide breaks down where each tool fits, what they are good at, and which one matches your actual workflow.