Power BI to Tableau Migration: What Moves, What Is Rebuilt
October 2, 2026
A Power BI to Tableau migration moves three things: the report pages people open, the semantic model and the DAX measures behind them, and the row‑level security roles that decide who sees which rows. None of it moves as a file. Tableau Desktop does not open a .pbix, Power BI has no export to Tableau, and as of October 2026 neither vendor ships an importer for the other's format, so every report is regenerated from what its definition describes. This guide covers that direction; the opposite move, Tableau to Power BI, has its own guide.
Why teams move from Power BI to Tableau
Rarely for price: Power BI Pro is usually the cheaper seat and is included in some Microsoft 365 plans. The usual reason is a consolidation after a merger in which the larger business already runs Tableau. Behind it come a Salesforce‑centered organization that wants analytics next to its CRM, a data platform that is not on Azure, where Entra groups, gateways and Fabric capacity stop being conveniences, and an analyst culture that prefers Tableau's worksheet model. Two scope facts belong in the first conversation: Tableau has no native counterpart to paginated reports, so pixel‑exact printouts stay in Power BI Report Builder, and most estates hold reports nobody has opened in months, which the inventory removes before anything is converted.
What a Power BI report becomes in Tableau
The unit changes first: a report holds pages, a workbook holds dashboards, and every visual on a page becomes a worksheet of its own. "Converts" means the construct exists on both sides, "with review" means a person decides something, and "redesign" means Tableau has no object to convert into. Power BI's own dashboards, the canvas of pinned tiles, have no counterpart; the report page is what a Tableau dashboard corresponds to.
| Power BI | Tableau | Fate |
|---|---|---|
Report (.pbix, PBIP) with pages | Workbook (.twb, .twbx) with dashboards | Converts; one page becomes one dashboard |
| Visual | Worksheet placed on the dashboard | Converts; a twelve‑visual page is twelve worksheets |
| Semantic model: tables and relationships | Data source with relationships or joins; published if shared | With review: cardinality and filter direction |
| Import mode, DirectQuery | Extract (.hyper) on a refresh schedule, live connection | Converts |
| Calculated column (DAX, row level) | Row‑level calculated field | Converts; RELATED becomes the related field |
| Composite model, calculated table | No equivalent; a view in the source | Redesign |
| Power Query (M) | Tableau Prep flow, custom SQL, or logic moved into the warehouse | With review |
| Measure (DAX) | Aggregate calculated field, LOD expression or table calculation | With review, per measure |
| Calculation group, field parameter | Parameter plus a CASE calculation; dynamic zone visibility for sheet swapping | Redesign |
| RLS role | User filter on a published data source, or an entitlement table | Redesign (below) |
| Slicer, synced slicers | Quick filter applied to all sheets using the data source | Converts |
| Cross‑highlight, drillthrough page | Highlight action; filter action to a target dashboard | With review |
| Bookmark | Parameter action plus dynamic zone visibility; Show/Hide buttons | Redesign |
| Report page tooltip | Viz in Tooltip | Converts |
| Custom visual (AppSource) | Viz Extension from Tableau Exchange, or native marks | Redesign |
| Workspace, app, Entra groups | Project, site, Tableau groups | Rebuilt, not copied |
Where the model lands
Power BI assumes a star schema with explicit relationships and one shared model. Tableau's relationships are the counterpart: tables keep their own level of detail and Tableau picks join types at query time from the fields in the view, which is what a Power BI model does implicitly. Two things do not carry over. Circular relationships are not supported and relationships cannot be defined between published data sources, so two paths to a date table, or an inactive relationship switched on by USERELATIONSHIP, become a role‑playing copy of the dimension or a second data source. Several fact tables map to a multi‑fact relationship data source (Tableau 2024.2 and later). Publish the data source first and build workbooks on it; it is also where the user filters have to live.
Converting DAX measures: the part that sets the budget
Measures, not visuals, set the hours. A DAX measure is evaluated in a filter context assembled from the visual, the slicers and the model; a Tableau calculation is evaluated at the level of detail of the view, and LOD expressions and table calculations exist to step outside it.
| DAX pattern | Tableau shape | Fate |
|---|---|---|
Plain aggregate: SUM, DISTINCTCOUNT, DIVIDE | Aggregate calculated field: SUM([Amount]) / COUNTD([Customer]) | Converts |
CALCULATE([Sales], 'Product'[Color] = "Blue") | SUM(IF [Color] = "Blue" THEN [Amount] END) | With review: CALCULATE replaces an existing Color filter, IF intersects with it |
CALCULATE with ALL or REMOVEFILTERS (share of total) | {EXCLUDE [Region] : SUM([Amount])} or a TOTAL() table calculation | With review: which filters it ignores |
CALCULATE with ALLEXCEPT (per‑entity total) | {FIXED [Customer] : SUM([Amount])} | With review: which slicers survive differs |
Context transition: CALCULATE inside SUMX over VALUES | Nested LOD: AVG({INCLUDE [Customer] : SUM([Amount])}) | With review: INCLUDE keeps the view's filters |
Time intelligence: DATESYTD, SAMEPERIODLASTYEAR | RUNNING_SUM or LOOKUP table calculations, or a date‑range LOD | With review: needs the dates in the view |
Calculation group item: CALCULATE(SELECTEDMEASURE(), DATESYTD(...)) | A parameter and a CASE calculation, repeated per base measure | Redesign |
WINDOW, OFFSET, RANKX, visual calculations | Table calculations with explicit partitioning and addressing | With review |
The review rows share one cause, Tableau's order of operations. A FIXED expression ignores every filter in the view except context, data source and extract filters, while ALL and ALLEXCEPT clear only the filters on the table or columns you name and leave every other slicer in force. The same measure therefore keeps different slicers alive on each platform, and which ones it should keep is a decision per measure, not a translation; the LOD to DAX page works through FIXED, INCLUDE and EXCLUDE from the other side. Time intelligence is the second trap: a DAX year‑to‑date works on a card with no dates on it because CALCULATE rewrites the filter context, while a table calculation computes on the marks in the view and needs the months present. Calculation groups get their own line in the estimate: 8 time‑intelligence items over 20 measures are 160 effective measures, and as many calculations, or one parameter‑driven CASE per base measure, in Tableau.
Row‑level security: roles become user filters
Power BI row‑level security is a DAX filter per role, with members assigned in the service, usually through Entra groups, and it applies only to viewers. Tableau has no role object. The same outcome is a user filter: a calculation such as [Region Owner] = USERNAME() or ISMEMBEROF('EMEA'), or an entitlement table joined to the data, set as a data source filter on a published data source. Placement matters: Tableau's guidance says that if the data source is embedded and a user can web edit or download the workbook, the row‑level security is nonexistent, because the filter can be removed. With the Data Management add‑on, a virtual connection with a data policy centralizes the filter across every workbook, the closest thing to roles managed in the service. Dynamic rules on USERPRINCIPALNAME() map well on Tableau Cloud, where usernames are email addresses; Tableau Server usernames can differ, and static roles with hard‑coded values map to Tableau groups. Test every role before cutover, because the row count per role is the first thing an auditor asks for.
Interactions: drillthrough, bookmarks and field parameters
A drillthrough page becomes a filter action aimed at a detail dashboard and set to exclude all values when cleared, so the target stays empty until something is clicked. Bookmarks have no object to convert into: a bookmark captures filters, slicer state, sort order, drill location and the visibility of objects, and Tableau rebuilds that with a parameter action driving dynamic zone visibility, where a boolean, single‑value, view‑independent field shows or hides a zone. Field parameters become a parameter with a CASE calculation for measure swapping, or a dynamic‑zone sheet swap for dimensions. Custom visuals from AppSource do not run in Tableau; the nearest thing is a Viz Extension, and most are redrawn with native marks. Count these per report: a page of standard charts can still owe most of its hours to two bookmarks and a custom visual.
Phases, and how to validate the result
| Phase | What it produces | Where it goes wrong |
|---|---|---|
| Inventory | Every report with its pages, measures, sources and viewers | Counting workspaces instead of the pages people open |
| Prune and score | The shorter list that moves, scored on measures, model shape and interactions | Scoring on visual count |
| Publish the data sources | Published data sources with relationships and user filters in place | Embedding a data source in every workbook |
| Convert the calculations | Calculated fields, with the review items flagged for a decision | Translating text and trusting the total |
| Rebuild the dashboards | One dashboard per report page, interactions built from actions | Redesigning while converting |
| Validate and cut over | Numbers tied out under filters and per role; Power BI set read‑only | Checking totals only |
Once an admin enables them, Microsoft's scanner APIs return the measures with their DAX and the queries of every semantic model, enough to score an estate before anyone opens a report, and a report saved as a Power BI project (PBIP) holds the same definitions as plain‑text files. Validation is the longest step. Reconcile agreed measures at the grand total and then under the slicer combinations users actually apply, because the "with review" patterns agree at the top and part ways below it; check year‑to‑date figures at a period boundary; open each dashboard as a user in each role. Explain every difference rather than adjusting until the platforms agree, and expect a few to be defects in the Power BI original that the move made visible.
What Antares does on this route
Everything above holds whichever tool you use; this section is about Antares. The Analyzer is free, and its Power BI side is generally available: upload a .pbix file or a zipped PBIP project, one report per analysis, pick Tableau as the target, and it returns a complexity score, a migration difficulty score for Tableau, the main considerations for the move and a component inventory. A .pbix can carry imported data; the Analyzer works from the report and model structure and does not copy data rows into its results. Its DAX rating follows this page: measures built on context transition, measure switching or windowed ranking are rated hardest, iterators, table expressions and relationship functions sit in the middle, plain filters and time intelligence are light, and an expression the parser cannot read is left unclassified rather than scored.
Conversion from Power BI to Tableau is in private beta and is not self‑serve: the Converter page takes requests for beta access, and the home page keeps the current list of routes and their status. Antares converts dashboards and the semantic logic inside them, not data; the tables Power BI read stay where they are and Tableau connects to them. Run the free Analyzer on a report to see where its hours are before committing to a date.
Related reading: the vendor‑neutral BI migration guide, LOD expressions and DAX, table calculations and DAX; for a Databricks target, Power BI to Databricks AI/BI. Primary sources: Microsoft on CALCULATE, calculation groups, field parameters and row‑level security; Tableau on relationships, row‑level security, LOD expressions and dynamic zone visibility.
Related Migration Resources
Frequently asked questions
Can a Power BI report be converted directly into a Tableau workbook?
No. Tableau Desktop does not open .pbix or PBIP files, and Power BI has no export to Tableau. What moves is the definition: the semantic model, the DAX measures, the page layouts and the RLS roles, which a person or a conversion tool reads and rebuilds as a Tableau data source and workbook. Pointing Tableau at the same database is a separate task from migrating the reports.
Is there a Power BI to Tableau migration tool?
Neither Microsoft nor Tableau ships one. Third‑party conversion tools regenerate workbooks from the report definition and leave review to people; Antares offers a free Analyzer for Power BI reports and has conversion to Tableau in private beta. Whatever tool is used, DAX measures with context transition, calculation groups, bookmarks and custom visuals still need a decision per item.
How do DAX measures translate to Tableau calculations?
Plain aggregates become aggregate calculated fields. CALCULATE with ALL or ALLEXCEPT becomes an EXCLUDE or FIXED level-of-detail expression, and because the two platforms keep different filters alive, each one is checked under the slicers users actually set. Time intelligence becomes table calculations or date‑range LODs, and calculation groups have no equivalent, so each item is rebuilt as a parameter‑driven calculation.
How does Power BI row-level security map to Tableau?
A Power BI role is a DAX filter with members assigned in the service. Tableau builds the same result from a user filter, a calculation using USERNAME() or ISMEMBEROF(), or an entitlement table, applied as a data source filter on a published data source. The published data source matters: a filter inside an embedded workbook can be removed by anyone allowed to edit or download it.
What replaces bookmarks and drillthrough in Tableau?
Drillthrough becomes a filter action aimed at a detail dashboard, set to exclude all values when cleared so the target starts empty. Bookmarks have no direct counterpart; the saved state of filters, sort and object visibility is rebuilt with parameter actions and dynamic zone visibility, plus Show/Hide buttons on layout containers. Both count as design work in the estimate.
Can Antares convert Power BI reports to Tableau today?
Analysis is available now and free: upload a .pbix file or a zipped PBIP project and get a complexity score and a migration difficulty score for Tableau. Conversion from Power BI to Tableau is in private beta rather than self‑serve; the Converter page takes requests for access, and the home page lists the current status of every route.