delivered for clients · names withheldmigration Data and analytics

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.

  1. 01Usage and scope
  2. 02Semantic model design
  3. 03Calculation translation
  4. 04Security
  5. 05Report rebuild and parallel run
  6. 06Training and retirement
case-study / tableau-to-power-bi delivered
beforeTableau Server or Tableau Cloud afterPower BI on Microsoft Fabric
01 · DATA 02 · SEMANTIC LAYER 03 · REPORTS AND AI 04 · USERS dbt models: replaced Prep flows dbt models replaced Prep flows Warehouse: certified tables Warehouse certified tables Power BI semantic models: star schema · DAX measures Power BI semanticmodels star schema · DAXmeasures Entra ID groups: row-level security roles Entra ID groups row-level securityroles Power BI reports: rebuilt priority dashboards Power BI reports rebuilt prioritydashboards Fabric IQ in Copilot Chat: questions over named measures Fabric IQ in CopilotChat questions over namedmeasures Business users: one value per KPI Business users one value per KPI
case file

The story

Told without the client's name or anything that could identify them.

what happened

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 urgent

It'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.

problem statement
  • 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.
architecture

The estate, before and after

before
before

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.

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. 01 · DATA 02 · PREPARATION 03 · BI TOOLS 04 · USERS extract Prep flow published source user filters raw table joins dashboards reports Warehouse raw tables Sf Sourceapplications CRM · ERP Tableau data sources extracts · Prep flows Entitlement table kept by hand Tableau Server many workbooks unopened Power BI reports own joins, own KPI logic Business users two values for one KPI
Read the diagram as text
  1. Warehouse → Tableau data sources: extract
  2. Source applications → Tableau data sources: Prep flow
  3. Tableau data sources → Tableau Server: published source
  4. Entitlement table → Tableau Server: user filters
  5. Warehouse → Power BI reports: raw table joins
  6. Tableau Server → Business users: dashboards
  7. Power BI reports → Business users: reports
after
after

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.

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. 01 · DATA 02 · SEMANTIC LAYER 03 · REPORTS AND AI 04 · USERS transform Import · Direct Lake RLS roles measures named measures reports answers dbt dbt models replaced Prep flows Warehouse certified tables Fb Power BI semanticmodels star schema · DAXmeasures Ex Entra ID groups row-level securityroles Power BI reports rebuilt prioritydashboards Fabric IQ in CopilotChat questions over namedmeasures Business users one value per KPI
Read the diagram as text
  1. dbt models → Warehouse: transform
  2. Warehouse → Power BI semantic models: Import · Direct Lake
  3. Entra ID groups → Power BI semantic models: RLS roles
  4. Power BI semantic models → Power BI reports: measures
  5. Power BI semantic models → Fabric IQ in Copilot Chat: named measures
  6. Power BI reports → Business users: reports
  7. Fabric IQ in Copilot Chat → Business users: answers
results

What the client got

What changed for the client once the work was done. Described, not scored: we don't publish client figures.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

what can go wrong

Risks we plan for

  1. 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.

  2. No automatic converter

    There's no reliable tool that turns workbooks into Power BI reports. Plans that assume one underestimate the rebuild.

  3. 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.

  4. 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.

ai in this move

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 →
you keep

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
talent and delivery · power bi on microsoft fabric

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

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
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.

sources 3 sources linked last checked 2026-10-20 content fingerprint a4d93fd6
  1. 01Microsoft Learn: Power BI Premium to Microsoft Fabric migration overview (Free-license viewing on F64 and larger)learn.microsoft.com ↗
  2. 02Microsoft Learn: Direct Lake overviewlearn.microsoft.com ↗
  3. 03Microsoft Azure blog: FabCon and SQLCon 2026 in Barcelona (28 Sep 2026)azure.microsoft.com ↗
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Planning this move?

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • 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