Guides

Find the Power BI reports still on the old Databricks driver

On 15 October 2026 the ADBC driver for the Databricks connector in Power BI became generally available and the default for new connections. Existing queries did not move: they stay on the legacy ODBC driver until someone edits them. This guide gives you a read-only script that lists every Databricks query and the driver it uses, then the safe way to switch.

What changed, and the catch

  • New connections get ADBC. A connection created in the Power BI interface now uses the ADBC driver by default, in Desktop and in the service.
  • Existing connections stay on ODBC. They switch only when the query's options include Implementation="2.0".
  • One driver per semantic model. The documentation says every Databricks connection in a semantic model must use the same driver. A model where someone added one new table last week may now mix both.
  • Desktop version. ADBC needs Power BI Desktop 2.145.1105.0 or later.

So the job is an inventory first: which models, which queries, which driver. Opening every report's Advanced Editor works for five models. It does not work for five hundred.

Step 1: the inventory, with a read-only script

Download find-databricks-odbc.ps1 (PowerShell, under 300 lines). Read it before you run it; it is short on purpose. What it does and does not do:

  • It opens files for reading only, without locking them, so it is safe on files open in Power BI Desktop. It never changes a file, a report or a model. Running it twice gives the same result.
  • The only file it writes is the CSV you ask for with -OutCsv.
  • In local mode nothing leaves your machine. In tenant mode it calls only the Power BI read-only admin scanner APIs.

Option A: scan files on disk

Point it at a folder of PBIP projects, model.bim files or .pbix files. It walks subfolders.

powershell -ExecutionPolicy Bypass -File .\find-databricks-odbc.ps1 -Path "C:\PowerBI" -OutCsv .\databricks-drivers.csv

-ExecutionPolicy Bypass applies to this one run only; it does not change your machine's policy. For PBIP projects the script reads every .tmdl file and model.bim. For .pbix files it reads the Power Query package embedded in the file. Some .pbix files keep their queries only inside the compressed data model; the script lists those as "not readable" rather than guessing. Open them in Desktop and save as a PBIP project, or use option B.

Option B: scan the whole tenant

Install-Module MicrosoftPowerBIMgmt -Scope CurrentUser
powershell -ExecutionPolicy Bypass -File .\find-databricks-odbc.ps1 -Tenant -OutCsv .\databricks-drivers.csv

This uses the metadata scanning APIs: it lists shared workspaces, scans them 100 at a time and reads each semantic model's Power Query expressions. It needs a Fabric administrator (or a service principal allowed to use read-only admin APIs) and two tenant settings switched on: "Enhance admin APIs responses with detailed metadata" and "Enhance admin APIs responses with DAX and mashup expressions". Turning those on is an admin decision; agree it with whoever owns the tenant.

Reading the output

SemanticModel  Location  Driver         Implementation  ModelStatus
Finance        GL        ADBC           2.0             All ADBC: done
Sales          Orders    ADBC           2.0             MIXED: not supported, align all connections
Sales          Sales     ODBC (legacy)  (not set)       MIXED: not supported, align all connections
Budget         Actuals   ODBC (legacy)  (not set)       All ODBC: migrate

Fix the MIXED models first: they are outside what the documentation supports today. Then work through "All ODBC" in order of how much they are used.

Step 2: switch one model at a time

In Power BI Desktop, open Transform data, then the Advanced Editor for each Databricks query, and add the option to the connector's options record:

Source = Databricks.Catalogs(
    "adb-<workspace-id>.azuredatabricks.net",
    "/sql/1.0/warehouses/<warehouse-id>",
    [Catalog = null, Database = null, Implementation = "2.0"])

Change every Databricks query in the model in the same sitting, so the model never mixes drivers. In a PBIP project the same text sits in the model's .tmdl files, which makes a reviewed, bulk change possible for large estates.

Step 3: prove nothing changed except the driver

  • Refresh before and after, and record the refresh duration.
  • Compare row counts per table, and the totals of the three measures people look at most, before and after.
  • Run the script again: the model should show "All ADBC: done".

If something regresses, roll back by setting Implementation to default in the same place. To turn ADBC off for all new connections in Desktop, the documentation points to Options, Preview features, "Use new Databricks connector implementations".

When to ask for help

If the inventory shows hundreds of models, or the models are owned by many teams, the switch is a small migration in its own right: a bulk change to PBIP files, a reconciliation per model, and a rollback plan. That is work we do. Send us the summary lines from the script and we reply with a plan.

Sources: Configure ADBC for Power BI, Azure Databricks release notes, October 2026, Power BI admin scanner API. Related: Power BI performance FAQ.

Hundreds of models still on ODBC?

Send the summary lines from the script. We reply within a working day with a plan for switching them safely.