When attempting to read a Delta table using Python with the deltalake library (Delta_rs, not Spark), you may encounter the following error:
import deltalake
DeltaTable('/lakehouse/default/Tables/xxx').to_pyarrow_dataset()
DeltaProtocolError: The table has set these reader features: {'deletionVectors'} but these are not yet supported by the deltalake reader.
Alternative: Using DuckDB
A simple alternative is to use DuckDB:
import duckdb
duckdb.sql("SELECT COUNT(*) FROM delta_scan('/lakehouse/default/Tables/xxx')")
Tested with a file that contains Deletion vectors


Column Mapping
The same approach applies to column mapping as well.
Upgrading DuckDB
Currently, Fabric Notebook comes preinstalled with DuckDB version 1.1.3. To use the latest features, you need to upgrade to the latest stable release (1.2.1) :
!pip install duckdb --upgrade
import sys
sys.exit(0)
Note: Installing packages using
%pip installdoes not restart the kernel when you run the notebook , you need to usesys.exit(0)to apply the changes, as some packages may already be loaded into memory.
import duckdb
duckdb.sql(" force install delta from core_nightly ")
duckdb.sql(" from delta_scan('/lakehouse/default/Tables/dbo/evolution_column_change') ")

The Future of Delta Rust .
Currently, there are two Rust-based implementations of Delta:
- Delta_rs: The first and more mature implementation, developed by the community. It is an independent implementation of the Delta protocol and utilizes DataFusion and PyArrow (which will soon be deprecated) as its engine. However, Delta_rs does not support deletion vectors or column mapping, though it does support writing Delta tables.
- Delta Kernel_rs: The newer, “official” implementation of Delta, providing a low-level API for query engines. It is currently being adopted by DuckDB ( and Clickhouse apparently) with more engines likely to follow. However, it is still a work in progress and does not yet support writing.
There are ongoing efforts to merge Delta_rs with Delta Kernel_rs to streamline development and reduce duplication of work.
Note : although they are written in Rust, we mainly care about the Python API ๐
Conclusion
At least for now, in my personal opinion, the best approach is to:
- Use DuckDB for reading Delta tables
- Use Python Deltalake (Delta_rs) for writing
