Hi Team, The api for writing to delta lake doesn't...
# daft-dev
a
Hi Team, The api for writing to delta lake doesn't support merge mode natively (https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_deltalake) (https://github.com/Eventual-Inc/Daft/issues/4047) . Are there any plans to add this support soon? I am willing to contribute but I am new to daft. How can I learn about daft's architecture? Is this good place to start - https://deepwiki.com/Eventual-Inc/Daft/1-overview ?
e
Hey @Abhijeet Patil, The DeepWiki is a great place to start in terms of overall architecture. In terms of just improving deltalake support you'll want to look at the deltalake python module https://github.com/Eventual-Inc/Daft/tree/main/daft/io/delta_lake then additionally the rust crates: https://github.com/Eventual-Inc/Daft/blob/main/src/daft-sql/src/table_provider/read_deltalake.rs @Desmond Cheong Any tips?
d
Hey Abhijeet, thanks for the interest. Daft's Delta Lake integration is intentionally thin - we use the deltalake Python package for metadata/commit operations and handle the parquet I/O ourselves. We don't have native merge support today, and it's not on the near-term roadmap. However, the simplest path to a df.merge_into_deltalake() API is straightforward: collect the source DataFrame to Arrow on the driver and call deltalake's DeltaTable.merge() directly. This works well for the common case where you're merging an incremental batch into a large target table (the source is small, the deltalake SDK handles target-side file pruning). For the uncommon case where the source is too large to fit on the driver, users can already implement a custom DataSink as a workaround. If you want to contribute this, the relevant entry points are DataFrame.write_deltalake() in daft/dataframe/dataframe.py and the Delta Lake scan/write glue in daft/delta_lake/. The Daft architecture page on deepwiki looks reasonable as a starting point, but honestly the fastest way to orient yourself is to trace the write_deltalake code path end-to-end - it's not deep. The CONTRIBUTING.md in the repo covers dev setup. Happy to help scope out the implementation if you want to open a draft PR