Choose the right path

Use Power Query when the model is small
Power BI's built-in DeltaLake.Table() function can read a Delta table from storage and resolve the transaction log. It is the simplest answer for small Import-mode datasets.
Use ODBC when the report needs to stay live
If the report needs DirectQuery, predicate pushdown, or SQL against large Delta tables, put a Delta-aware SQL engine in front of the data. DeltaForge is the worked example here: it is a commercial, self-hosted engine that reads and writes Delta Lake and Apache Iceberg without Spark or a JVM, and exposes the tables through native ODBC and ADBC.
Do not read the raw Parquet folder
A Delta table is not just Parquet. The _delta_log decides which files are current. Raw Parquet reads can include deleted rows, old versions, and compacted-away files, which makes report totals drift.
Use Delta Sharing for sharing, not local BI plumbing
Delta Sharing is useful when you need to share datasets across organizations. It is usually too much machinery when your goal is simply to let Power BI query your own Delta tables.

Connect Power BI through ODBC

  1. Install DeltaForge where it can reach your Delta tables, then register the tables in its catalog.

  2. Install the DeltaForge ODBC driver on the Power BI Desktop machine, or on the Power BI gateway for service refreshes.

  3. In Power BI, choose Get Data, then ODBC, and select the DeltaForge data source.

  4. Select tables in the Navigator, or provide a SQL statement.

  5. Choose DirectQuery for live reports, or Import for a cached model.

Power BI now sees Delta tables as a normal SQL source. Filters and aggregations can be pushed into the engine instead of pulling full partitions into the model.

What this gives you

  • Correct Delta reads: the engine resolves _delta_log before reading Parquet files.
  • DirectQuery without Databricks: Power BI sends SQL through ODBC and receives current table results.
  • Self-hosted deployment: DeltaForge runs in your cloud, on-premises, or air-gapped environment.
  • One engine for reads and writes: the same engine can run UPDATE, DELETE, and MERGE on Delta Lake without Spark.

FAQ

Can Power BI read Delta Lake without Databricks?

Yes. Use DeltaLake.Table() for small Import-mode models, or use ODBC to a Delta-aware SQL engine for DirectQuery and pushdown.

Why not connect to the Parquet files directly?

Because raw Parquet reads bypass _delta_log. That can expose rows or files that are no longer part of the current Delta table version.

Does this require Spark?

No. DeltaForge reads the Delta transaction log and exposes the table through SQL drivers without Spark or a JVM. The broader architecture is covered in Delta Lake without Spark.

What about Excel and other BI tools?

The same driver approach applies beyond Power BI. See the related Excel SQL tutorial for another example of keeping data accessible through SQL instead of tool-specific file handling.

Run it yourself

Install DeltaForge, register a Delta table, and connect Power BI through ODBC. Start with the install guide or get a Community license from the DeltaForge console.