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_logdecides 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
Install DeltaForge where it can reach your Delta tables, then register the tables in its catalog.
Install the DeltaForge ODBC driver on the Power BI Desktop machine, or on the Power BI gateway for service refreshes.
In Power BI, choose Get Data, then ODBC, and select the DeltaForge data source.
Select tables in the Navigator, or provide a SQL statement.
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_logbefore 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.