Delta Funnel

[!NOTE] Delta Funnel is early project code. The Rust crate is available on crates.io, and the Python package is available on PyPI.
When To Use It
Use Delta Funnel when you need to:
- Read Delta Lake tables from local paths or object-store URIs.
- Transform rows with DataFusion SQL.
- Load one or more results into Microsoft SQL Server.
- Use native TDS bulk writes designed to be significantly faster than ODBC-based loads.
- Run the workflow from Rust or from a PyO3 native extension module in Python.
- Avoid standing up Spark for a focused Delta Lake to SQL Server pipeline.
Install Or Build
For Rust, add the delta-funnel crate:
For Python, add the deltafunnel package:
Python Quickstart
=
=
=
=
=
session.delta_lake(..., name="orders") registers a Delta source immediately.
session.delta_lake(...) without name returns a pending source; call
.alias("orders") before SQL references it.
Reports are plain Python dict values converted from Rust report types. Report
formatting is designed to avoid exposing connection strings, credentials, and
raw row values. See
docs/failure-reports-and-tracing.md
for the failure-report and tracing rules.
Dry Runs
Use dry_run=True on the same write methods to validate the plan without
writing rows:
=
There are no public Python dry_run_* methods.
Multi-output Writes
Table.to_mssql(...) creates an output spec without writing. Session.write_all
writes the specs in one workflow.
=
=
=
=
=
=
options={"cache_mode": "auto"} is the default execute behavior. It may cache
shared lazy SQL aliases during one write_all call. Use
options={"cache_mode": "disabled"} to force the baseline path.
[!IMPORTANT]
optionsis only accepted for executewrite_allcalls, not dry runs.
The first Python surface does not include persistent cache, persist,
or materialize APIs.
Rust API
The Rust crate owns the workflow implementation and public report types. A
minimal dry-run example is available at
crates/delta-funnel/examples/query_load_dry_run.rs.
Run it with a local Delta table path:
DELTA_FUNNEL_EXAMPLE_ORDERS_DELTA=/path/to/orders \
Core Rust entry points include:
DeltaFunnelSessionfor source registration and session state.DeltaFunnelRuntimefor lazy SQL planning, dry runs, and writes.OutputWritePlanandMssqlOutputTargetfor output planning.WriteAllOptionsandWriteAllCacheModefor multi-output execution.
Build And Test
SQL Server integration tests are opt-in:
The xtask runner can start a local SQL Server container, run Rust and Python
write tests, and remove the container when it exits. See
docs/mssql-integration-tests.md.