Tableau to Power BI
Cohash moves Tableau estates to Power BI. We use Tableau's usage data to decide what's worth moving, rebuild published data sources as Power BI semantic models with measures defined once, translate calculated fields and LOD expressions into DAX, and replace user filters with row-level security from Entra ID groups. Reports are rebuilt by priority and checked number by number against Tableau before users switch.
- 01Usage and scope
- 02Semantic model design
- 03Calculation translation
- 04Security
- 05Report rebuild and parallel run
- 06Training and retirement
The story
Told without the client's name or anything that could identify them.
A retailer's analytics group ran Tableau and Power BI side by side, and the same KPI showed two different values depending on which tool you opened. The Tableau renewal was due and Fabric capacity had already been bought. We pulled usage from Tableau's admin views, archived the workbooks nobody opened, and rebuilt the published data sources as Power BI semantic models with each measure defined once. Calculated fields and LOD expressions became DAX measures tested against Tableau's numbers, and user filters became row-level security on Entra ID groups. Priority reports ran in parallel until their owners signed off, and then Tableau went read-only and was retired.
why it was urgentIt's usually a licence renewal that starts this. On Microsoft Fabric F64 or larger, users with a Free licence and the Viewer role can view Power BI content. Microsoft is also retiring Power BI Premium P SKUs, which pushes many companies onto F SKUs anyway. Once that capacity is paid for, someone asks why Tableau is still running beside it.
- openTableau and Power BI both run, and the same KPI shows two different values.
- recurringThe Tableau renewal is coming up and the company already has Fabric capacity.
- blockedMost workbooks on the server haven't been opened in months.
- openRow-level security in Tableau depends on a hand-kept entitlement table.
The estate, before and after
Before: two BI tools and two answers for the same KPI
Tableau read extracts and published data sources, with user filters driven by a hand-kept entitlement table. Power BI reports joined raw warehouse tables their own way, so the same metric came out differently in each tool.
Read the diagram as text
- Warehouse → Tableau data sources: extract
- Source applications → Tableau data sources: Prep flow
- Tableau data sources → Tableau Server: published source
- Entitlement table → Tableau Server: user filters
- Warehouse → Power BI reports: raw table joins
- Tableau Server → Business users: dashboards
- Power BI reports → Business users: reports
After: Power BI semantic models on Microsoft Fabric
We built Power BI semantic models on certified warehouse tables, defined each measure once and took row-level security from Entra ID groups. The rebuilt reports and Fabric IQ in Copilot Chat both read the same models.
Read the diagram as text
- dbt models → Warehouse: transform
- Warehouse → Power BI semantic models: Import · Direct Lake
- Entra ID groups → Power BI semantic models: RLS roles
- Power BI semantic models → Power BI reports: measures
- Power BI semantic models → Fabric IQ in Copilot Chat: named measures
- Power BI reports → Business users: reports
- Fabric IQ in Copilot Chat → Business users: answers
How we run it, phase by phase.
6 phases take you from Tableau Server or Tableau Cloud to Power BI on Microsoft Fabric. Each one ends with something you can check before the next starts. As you scroll, the blocks show the estate moving across.
- phase 01
Usage and scope
Pull view counts, owners and data source lineage from Tableau's admin views before you plan anything. Archive what nobody opens, merge the duplicates, and rank the rest by audience. The rebuild list gets shorter before any work starts.
- phase 02
Semantic model design
Rebuild published data sources and extracts as Power BI semantic models on a star schema. Import, DirectQuery or Direct Lake is decided per model, from data size, how fresh it has to be and what warehouse sits underneath. There's no single right answer for the whole estate.
- phase 03
Calculation translation
Translate calculated fields, LOD expressions and table calculations into DAX measures. Each measure gets a test with known values from Tableau, because the two engines evaluate context differently.
- phase 04
Security
Replace Tableau user filters and entitlement joins with row-level security roles mapped to Entra ID groups, and test them with real accounts from each role.
- phase 05
Report rebuild and parallel run
Rebuild priority dashboards for the questions they answer rather than pixel for pixel. Both versions run in parallel until owners sign off on the numbers.
- phase 06
Training and retirement
Train report authors on the new models and workspace rules, then move subscriptions and alerts across. Set Tableau to read-only for a while. On the agreed date, retire it.
What the client got
What changed for the client once the work was done. Described, not scored: we don't publish client figures.
- result 01
Each KPI has one definition
We moved the measures into shared semantic models on a star schema, with names and descriptions, so every report and every Copilot question reads the same definition.
- result 02
Numbers matched Tableau before anyone switched
We wrote a test with known values from Tableau for every translated measure, and kept a reconciliation log of each figure the report owners signed off.
- result 03
Report security comes from Entra ID groups
Row-level security roles map to Entra ID groups and were tested with real accounts from each role. The hand-kept entitlement table is gone.
- result 04
Only content people used was moved
Workbooks were ranked by audience from Tableau's usage data. We archived the unused ones and merged duplicates, and only then started rebuilding.
- result 05
Tableau was retired on the agreed date
We moved subscriptions and alerts to Power BI and trained report authors on the new models and workspace rules. Tableau went read-only before it was shut down.
Risks we plan for
-
LOD and table calculations
Tableau's FIXED, INCLUDE and EXCLUDE expressions and table calculations have no one-to-one DAX form. Naive translation gives numbers that are close but wrong.
-
No automatic converter
There's no reliable tool that turns workbooks into Power BI reports. Plans that assume one underestimate the rebuild.
-
Tableau Prep flows
Somebody has to move the Prep flows to Dataflows Gen2, dbt or warehouse SQL. Forget them and the new reports have nothing to show.
-
User pushback
Analysts who like Tableau's exploration style may resist. Involving power users in the model design and keeping a short overlap helps more than mandates do.
Where AI helps, and where it needs guardrails
We use AI in two places. After the move, Fabric IQ in Copilot Chat, generally available since September 2026, answers natural-language questions over Fabric data, and it does better when measures have clear names and descriptions, so we write those as we build the model. During the move, an LLM reads the exported .twb workbook XML, lists the fields and drafts DAX for each calculated field. Each draft gets tested against Tableau's output before anyone uses it, and sensitive workbooks only go to approved models.
forward deployed engineers →What you're left with
We write these for your setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.
- inventory01
Usage-ranked workbook inventory with a move, merge or retire decision
yours to keep - tests02
Power BI semantic models with documented measures and tests
yours to keep - design03
Row-level security design mapped to Entra ID groups
yours to keep - report04
Rebuilt priority reports with owner sign-off
yours to keep - document05
Reconciliation log comparing Tableau and Power BI figures
yours to keep
Platforms and services on this move
Services involved
Certified engineers, wherever you need them.
Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.
Onsite
Engineers at your sites in the US
Nearshore
Overlapping hours with US teams
Offshore
Overnight progress on your backlog
All time zones
Coverage handed over across time zones
01How long does a Tableau to Power BI migration take?
It depends how many workbooks survive the usage review, how hairy their calculations are and how many data sources need new semantic models. The inventory gives you a scoped estimate. Retiring unused content cuts it more than anything else.
02Can we run both tools for a while?
Yes, and for priority reports you should. The overlap costs licences, so we set an end date per report group up front.
03Do we need Fabric capacity, or is Power BI Pro enough?
Usually it comes down to viewer count and data size. Pro works per user. On F64 or larger, someone with a Free license can read content in those workspaces. For a large audience that changes the math.
04Do you also fix the data underneath?
Yes. If metrics differ because each workbook joins raw tables its own way, we build certified tables in the warehouse first, so Power BI isn't the only place logic lives.
Often on the same roadmap
On-premises Active Directory to cloud-first Microsoft Entra ID
We shrink on-premises Active Directory one application at a time, moving groups, users and app authentication to Microsoft Entra ID as each app is ready.
read the case studyAD FS federation to Entra ID authentication
Converting federated domains from AD FS to Entra ID cloud authentication, moving relying parties app by app and retiring the AD FS farm.
read the case studyAI pilot to production with forward deployed engineers
Taking an AI pilot into production with forward deployed engineers who work with the business team, build evals, connect real systems and hand over cleanly.
read the case studya4d93fd6 - 01Microsoft Learn: Power BI Premium to Microsoft Fabric migration overview (Free-license viewing on F64 and larger)learn.microsoft.com ↗
- 02Microsoft Learn: Direct Lake overviewlearn.microsoft.com ↗
- 03Microsoft Azure blog: FabCon and SQLCon 2026 in Barcelona (28 Sep 2026)azure.microsoft.com ↗
Planning this move?
A 30-minute working session with a senior engineer. No slides.
- The platform and the version you're on
- Where you need to get to, and by when
- What's custom: rules, plugins, integrations
- Any audit finding or deadline driving it