Tableau Migration Hyper Files Power BI

Tableau Hyper Files to Power BI: Converting Extracts, Refresh, and Model Size

July 28, 2026

A .hyper file is a Tableau extract: a compressed, columnar snapshot of data that Tableau's engine queries locally. It is a cache, not a source system, and Power BI cannot open one. The file connectors in Power BI Desktop are Excel, Text/CSV, XML, JSON, Folder, PDF, Parquet and SharePoint folder, with no Tableau format in the list, so converting a Hyper file means choosing between two routes: point the new model at the original source system, usually the right answer, or read the extract with Tableau's Hyper API and land it in a format Power BI can import.

What a Tableau extract maps to in Power BI

TableauPower BI equivalentNotes
.hyper extractImport-mode semantic modelBoth store compressed columnar data
Live connectionDirectQueryQueries reach the source at report time
Extract embedded in a .twbxNo equivalentThe .twbx is a zip; the extract is inside it
Published data sourceShared semantic modelOne model, many reports
Extract refresh scheduleScheduled refresh8 per day on shared capacity, 48 on Premium or Fabric
Incremental extract refreshIncremental refresh policyDriven by RangeStart and RangeEnd
Extract filtersPower Query filter stepsMust fold to the source to stay efficient
Aggregate data for visible dimensionsGroup By in Power QueryOr keep the detail and aggregate in DAX
.tde file (legacy)Upgrade to .hyper firstDesktop 2024.2 is the last release that opens .tde

Should you convert the extract or reconnect to the source?

Reconnect whenever the upstream system still exists and you can get credentials. An extract is not a faithful copy of a source table: Tableau's extract settings offer filters, an Aggregate data for visible dimensions option with date roll-up, and a choice between all rows, a sample, or the top N rows, any of which may already be baked into the file you hold. Reconnecting also restores what Power BI needs later: a query that folds, a real date column to partition on, and a refresh path that does not depend on a file on somebody's laptop.

Convert from the file only when there is nothing to reconnect to: the source was decommissioned, the spreadsheet behind an ad-hoc upload is gone, or credentials will not arrive inside the migration window. Even then it is a bridge and not a destination, because a table loaded from a one-off export cannot be refreshed by anyone. Either way, keep the extract as your validation baseline: its totals are what the Tableau dashboards actually showed.

How to read data out of a .hyper file

RouteHowBest for
Unpack the workbookRename .twbx to .zip and open it; extracts sit in the Data folderFinding which workbooks carry embedded data
Hyper APIpip install tableauhyperapi, connect to the file, run SELECT against its tablesRepeatable extraction to CSV or Parquet
Tableau Desktop, whole sourceData > Export Data to CSV on the data source pageOne table you need once
Tableau Desktop, single viewWorksheet > Export > DataExporting exactly what one view shows

Start with unpacking, because it tells you what you have. Tableau's own instruction is to rename a packaged workbook with a .zip extension and open it, so unzipping a folder of workbooks cheaply reveals which ones carry embedded data. The Hyper API is the scriptable route, shipping for Python, C++ and Java, opening existing files and querying them with SQL. Prefer Parquet over CSV on the way out: Power BI reads it natively and it carries column types, sparing Power Query from guessing dates and decimals.

One caveat applies to every export route: Tableau warns that an export may exclude some table calculations and level of detail expressions, because those are computed in the view rather than stored as data. That is DAX work, not a gap in the data move, covered in LOD expressions to DAX and table calculations to DAX.

How extract refresh becomes semantic model refresh

Tableau's incremental extract refresh watches a column you nominate and appends the rows above its last value. Power BI is declarative instead: create two Power Query date/time parameters with the reserved, case-sensitive names RangeStart and RangeEnd, filter the table with them, then set an archive period and a refresh period. The service creates and rolls the partitions itself, refreshing recent ones and dropping history as it ages out.

Three requirements decide whether that works. The filter has to fold to the source, or the engine retrieves every row and filters locally, defeating the policy. The parameters must be the date/time type even when the table is partitioned on an integer key such as yyyymmdd, which you convert inside the query. And the source has to be a live system, because a static CSV exported from an extract has nothing to filter incrementally. Incremental refresh itself is supported on Pro, Premium per user, Premium and Embedded; only the real-time DirectQuery partition is Premium-only.

Budget the windows too: a refresh must finish within two hours on shared capacity and five on Premium, shared capacity allows eight scheduled refreshes a day against 48 on Premium or Fabric, and on-premises sources need an enterprise gateway.

Model size and the 1 GB limit

The default size limit for a semantic model is 1 GB, and Fabric capacities, Premium per user and Embedded go past it once Large semantic model storage format is on, when the ceiling becomes the capacity size. A model published from Power BI Desktop is separately capped at a 10 GB upload.

Those limits sound tight next to a multi-gigabyte extract and usually are not: Microsoft's guidance for Import models puts VertiPaq compression at roughly 10x, so 10 GB of source data can land near 1 GB. Columns and cardinality drive the result rather than row count, and extracts are the bad case, because the Tableau author included every column of every table and nobody revisited it. Dropping unused columns is the highest-yield change available at import.

What Antares does with extracts and Hyper files

Antares never touches the data inside an extract: analysis and conversion read metadata only, never business data. Moving rows between platforms is a data-platform job, not a dashboard-migration one.

What the Analyzer contributes is the inventory behind the decision above. It reads every data source in every workbook, records whether each is live or extract-backed, and captures what the connection points at. So before anyone opens a file, you know which dashboards can be repointed at a system that still exists and which are backed only by an extract with no reachable upstream. That second group is usually small, and it is where migration estimates go wrong. Run the free Analyzer for your own workbooks.

Related reading: extracts to Power BI dataflows and data sources to Power BI datasets. Primary sources: Tableau's extract format notes and export documentation, the Hyper API installation guide, and Microsoft's data refresh reference.

← Back to Complete Migration Guide

Related Migration Resources

Frequently asked questions

Can Power BI open a Tableau .hyper file?

No. Power BI Desktop has no Tableau connector; its file connectors are Excel, Text/CSV, XML, JSON, Folder, PDF, Parquet and SharePoint folder. Either reconnect the new model to the original source, or read the .hyper file with Tableau's Hyper API and write it out as Parquet or CSV.

How do I extract data from a .hyper file?

Open it with the Hyper API (pip install tableauhyperapi) and run SELECT against its tables. For a one-off, Tableau Desktop exports without code: Data > Export Data to CSV on the data source page. If the extract sits inside a .twbx, rename the workbook to .zip first.

Should I convert the extract or reconnect to the source?

Reconnect if the source system still exists. An extract can carry filters, aggregation to visible dimensions and a row sample, so its numbers are not necessarily the source's, and a model loaded from a static export can never be refreshed. Keep the extract as a validation baseline.

What is the Power BI equivalent of a Tableau extract refresh?

A scheduled semantic model refresh, plus an incremental refresh policy driven by the reserved RangeStart and RangeEnd parameters. Shared capacity allows eight scheduled refreshes a day and Premium or Fabric allows 48; a refresh must finish within two hours on shared capacity and five on Premium.

Let's talk migration.

Get your free Migration Readiness Score, or talk to our team about end-to-end delivery.