Package: ducklake 0.9.0.9000

ducklake: Interact with 'DuckLake' from R

A 'tidyverse'-friendly interface to 'DuckLake' <https://ducklake.select/>, the 'DuckDB' lakehouse format. Attach versioned data lakes from R and work with them using familiar 'dplyr' verbs, with support for ACID transactions, time travel queries, snapshot audit trails, data inlining, encrypted storage, multiple catalog backends ('DuckDB', 'PostgreSQL', 'SQLite', 'MySQL'), and remote access over the 'Quack' protocol from 'DuckDB'.

Authors:Travis Gerke [aut, cre], Stefan Linner [ctb], Javier Orraca-Deatcu [ctb]

ducklake_0.9.0.9000.tar.gz
ducklake_0.9.0.9000.zip(r-4.7-any)ducklake_0.9.0.9000.zip(r-4.6-any)ducklake_0.9.0.9000.zip(r-4.5-any)
ducklake_0.9.0.9000.tgz(r-4.6-any)ducklake_0.9.0.9000.tgz(r-4.5-any)
ducklake_0.9.0.9000.tar.gz(r-4.7-any)ducklake_0.9.0.9000.tar.gz(r-4.6-any)
ducklake_0.9.0.9000.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
ducklake/json (API)

# Install 'ducklake' in R:
install.packages('ducklake', repos = c('https://tgerke.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/tgerke/ducklake-r/issues

Pkgdown/docs site:https://tgerke.github.io

On CRAN:

Conda:

data-engineeringdata-lakedbplyrdplyrduckdbducklakelakehouseparquettidyverse

8.20 score 26 stars 28 scripts 121 downloads 78 exports 24 dependencies

Last updated from:811a0e2287. Checks:9 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-develOK169
source / vignettesOK262
linux-releaseOK164
macos-releaseOK106
macos-oldrelOK96
windows-develOK116
windows-releaseOK103
windows-oldrelOK122
wasm-releaseOK120

Exports:add_data_filesadd_table_columnattach_ducklakeattach_quackbackup_ducklakebegin_transactioncheckpoint_ducklakecleanup_old_filescommit_transactioncreate_checkcreate_schemacreate_storage_secretcreate_tablecreate_viewdelete_orphaned_filesdetach_ducklakedetach_quackdrop_schemadrop_table_columndrop_viewducklake_execducklake_extension_availableexpire_snapshotsflush_inlined_dataget_ducklake_backendget_ducklake_connectionget_ducklake_infoget_ducklake_optionsget_ducklake_tableget_ducklake_table_asofget_ducklake_table_versionget_inlining_row_limitget_metadata_tableget_table_changesget_table_commentsget_table_infoget_table_partitionsget_table_sortinginstall_ducklakeinstall_quacklist_ducklake_fileslist_ducklake_tableslist_table_snapshotsmerge_adjacent_filesmerge_intoplot_snapshotsplot_table_changesplot_table_filesquack_queryquack_servequack_stoprename_ducklake_tablerename_table_columnreplace_tablereset_table_partitioningreset_table_sortingrestore_table_versionrewrite_data_filesrollback_transactionrows_deleterows_insertrows_updaterows_upsertrun_checksset_column_commentsset_column_not_nullset_column_typeset_ducklake_connectionset_ducklake_optionset_ducklake_retryset_inlining_row_limitset_snapshot_metadataset_table_commentset_table_partitioningset_table_sortingshow_ducklake_queryview_table_changeswith_transaction

Dependencies:blobclicpp11DBIdbplyrdplyrduckdbgenericsgluelifecyclemagrittrpillarpkgconfigpurrrR6rlangstringistringrtibbletidyrtidyselectutf8vctrswithr

Data Checks
The rule the lake enforces | Rules as views | Running the checks | Gating a load | Recording the outcome on the commit | Which rows failed | Rules have history | Rules and data as of a snapshot | Next to affirm and data-dict

Last update: 2026-09-17
Started: 2026-09-17

Views, Comments, and Labels
Views | When a view is the right tool | Table and column comments | Variable labels

Last update: 2026-09-17
Started: 2026-09-07

Time Travel Queries
Introduction | Setting Up the Data Lake | Making Changes Over Time | Version 1: Initial data | Version 2: Update fuel efficiency data | Version 3: Add efficiency classification | Version 4: Correct an error | Exploring Version History | List all snapshots | Query a specific version | Query data as of a specific timestamp | Comparing Versions | Restoring Previous Versions | Pinning a Whole Session to a Snapshot | Row Lineage | Use Cases for Time Travel | Metadata and Audit Information

Last update: 2026-09-15
Started: 2026-02-04

Visualizing Your Lake
Introduction | Building Some History | Plotting the Timeline | How Much Changed | Browsing the Changes | How the Data Is Stored | Plotting the Whole Lake | Customizing the Plots | Learn More

Last update: 2026-09-15
Started: 2026-07-08

Choosing a Deployment
What a lake looks like | Which catalog | Where the data goes | Who can reach it | Day-one setup | Upgrading | Where to next

Last update: 2026-09-11
Started: 2026-09-05

Getting Started with ducklake
What a DuckLake is | Install | Attach a lake | Add a table | Why most calls sit inside with_transaction() | Read a table | Change a table | See the history | Detach | Where to go next

Last update: 2026-09-11
Started: 2026-02-04

Working with Transactions
Introduction | Setup: Loading Initial Data | Approach 1: with_transaction() (Recommended) | Why use with_transaction()? | Single Operation with Metadata | Multiple Operations in a Single Transaction | Automatic Rollback on Error | Approach 2: Manual Transaction Control | When to use manual transactions? | Basic Manual Transaction Workflow | Manual Rollback | Snapshot Metadata: At Commit Time vs After the Fact | Viewing Transaction History | Working with several writers | Comparison: with_transaction() vs Manual Control | Best Practices | Key Concepts Summary

Last update: 2026-09-11
Started: 2026-02-04

Data Inlining
How it works | Setup | Small writes are automatically inlined | Incremental updates stay inlined | Removing rows | Large writes bypass inlining automatically | Configuring the inlining threshold | Global default | Per-connection at attach time | Per-table persistent override | Disable inlining | Flushing inlined data to Parquet | Flushing a specific table | Checkpoint: one-stop maintenance | Time travel with inlined data | When to use inlining | What inlining does not change | Regulated environments | Summary

Last update: 2026-09-09
Started: 2026-07-07

Modifying Tables with Version Control
Choosing a Modification Approach | For incremental changes: the rows_* functions | For update-or-insert: rows_upsert() | For staging syncs and conditional merges: merge_into() | For schema changes: evolve in place | For structural or bulk changes: replace_table() | Group related changes with with_transaction() | Examples | Incremental changes with the rows_* functions | Updating specific rows with replace_table() | Adding derived columns | Reshaping the schema in place | Filtering rows with replace_table() | Time Travel: Accessing Previous Versions

Last update: 2026-09-07
Started: 2026-02-04

Quack Remote Access
Introduction | Installing the extension | Connecting to a shared lake | Connecting to a plain database | Serving a lake of your own | A note on access | Quack or a shared catalog? | Caveats | Learn more

Last update: 2026-09-07
Started: 2026-07-07

Storage and Backup Management
Introduction | DuckLake's Two-Component Architecture | Storage Options | Storage Patterns | Cloud Storage Credentials | Inspecting DuckLake Files | Catalog Files | Storage (Data) Files | Understanding File Organization | Backup Strategies | Backing Up the Catalog | Copying the Catalog | Backing Up Storage (Data Files) | Local Storage Backup | Cloud Storage Backup | Recovery Procedures | Recovering from Catalog Backup | Recovering from Data File Loss | Routine Maintenance | Maintenance Considerations | Complete Backup Example | Cleanup | Summary

Last update: 2026-09-07
Started: 2026-02-06

Loading Data
From a data frame | From a file | From a URL | From a dplyr pipeline | Derive a table inside the database | Put tables in schemas | Register Parquet files in place | Migrate a DuckDB database | Exchange data with Iceberg

Last update: 2026-09-07
Started: 2026-09-07

Readme and manuals

Help Manual

Help pageTopics
Register existing Parquet files with a DuckLake tableadd_data_files
Add a column to a DuckLake tableadd_table_column
Create or attach a ducklakeattach_ducklake
Connect to a remote Quack serverattach_quack
Create a DuckLake backupbackup_ducklake
Begin a transactionbegin_transaction
Run a DuckLake checkpointcheckpoint_ducklake
Delete files scheduled for removalcleanup_old_files
Commit a transactioncommit_transaction
Create a data check from a rulecreate_check
Create a schema in a DuckLakecreate_schema
Store object storage credentials for a sessioncreate_storage_secret
Create a DuckLake tablecreate_table
Create a DuckLake view from a dplyr pipelinecreate_view
Delete orphaned filesdelete_orphaned_files
Detach from a ducklakedetach_ducklake
Disconnect from a remote Quack serverdetach_quack
Drop a schema from a DuckLakedrop_schema
Drop a column from a DuckLake tabledrop_table_column
Drop a DuckLake viewdrop_view
Execute DuckLake operations from dplyr queriesducklake_exec
Is the ducklake DuckDB extension usable?ducklake_extension_available
Expire old snapshotsexpire_snapshots
Flush inlined data to Parquet filesflush_inlined_data
Get the catalog backend type of an attached lakeget_ducklake_backend
Get the DuckDB connection used by ducklakeget_ducklake_connection
Describe an attached DuckLakeget_ducklake_info
List the options set on a DuckLakeget_ducklake_options
Get a DuckLake tableget_ducklake_table
Query a table at a specific timestamp (time travel)get_ducklake_table_asof
Query a table at a specific version/snapshotget_ducklake_table_version
Get the current data inlining row limitget_inlining_row_limit
Get a DuckLake metadata tableget_metadata_table
Get the changes made to a table between two snapshotsget_table_changes
Read table, view, and column comments from a DuckLake catalogget_table_comments
Get file statistics for the tables in a lakeget_table_info
List the partitioning keys of tables in a lakeget_table_partitions
List the sort keys of tables in a lakeget_table_sorting
Download the ducklake extension ahead of timeinstall_ducklake
Install the Quack extensioninstall_quack
List the data files backing a DuckLake tablelist_ducklake_files
List the tables and views in a DuckLake cataloglist_ducklake_tables
List available snapshots for a tablelist_table_snapshots
Merge adjacent Parquet filesmerge_adjacent_files
Merge a source table into a DuckLake tablemerge_into
Plot the snapshot history of a table or lakeplot_snapshots
Plot the rows changed in each snapshot of a tableplot_table_changes
Plot the file layout of a lakeplot_table_files
Run a one-off query against a remote Quack serverquack_query
Serve the current session over Quackquack_serve
Stop a Quack serverquack_stop
Rename a DuckLake tablerename_ducklake_table
Rename a column in a DuckLake tablerename_table_column
Replace a table with modified data and create a new snapshotreplace_table
Remove partitioning keys from a tablereset_table_partitioning
Remove the sort order from a tablereset_table_sorting
Restore a table to a previous versionrestore_table_version
Rewrite data files with many deletesrewrite_data_files
Rollback a transactionrollback_transaction
Delete rows from a DuckLake tablerows_delete
Insert rows into a DuckLake tablerows_insert
Update rows in a DuckLake tablerows_update
Upsert rows into a DuckLake tablerows_upsert
Run the data checks stored in a schemarun_checks
Set column comments on a DuckLake tableset_column_comments
Require or allow NULL values in a columnset_column_not_null
Change the type of a DuckLake table columnset_column_type
Use your own DuckDB connection with ducklakeset_ducklake_connection
Set a DuckLake optionset_ducklake_option
Configure how DuckLake retries conflicting transactionsset_ducklake_retry
Set the data inlining row limitset_inlining_row_limit
Set metadata for a snapshotset_snapshot_metadata
Set the comment on a DuckLake table or viewset_table_comment
Set partitioning keys for a tableset_table_partitioning
Set the sort order of a tableset_table_sorting
Show the SQL that would be executed by ducklake operationsshow_ducklake_query
View a table's change feed interactivelyview_table_changes
Execute code within a transactionwith_transaction