⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
DuckLake

DuckLake 已于 2025 年 5 月发布。阅读发布博客文章

ducklake 扩展增加了对连接到以 DuckLake 格式存储的数据库的支持

安装和加载

要安装 ducklake,请运行

INSTALL ducklake;

ducklake 扩展将在 ATTACH 子句中首次使用时自动透明加载。如果您想手动加载它,请运行

LOAD ducklake;

用法

ATTACH 'ducklake:metadata.ducklake' AS my_ducklake (DATA_PATH 'data_files');
USE my_ducklake;

在 DuckDB 中,ducklake 扩展将名为 my_ducklake 的 DuckLake 的目录表存储在 __ducklake_metadata_my_ducklake 目录中。

函数

请注意,DuckLake 注册了多个函数。这些函数应将目录名称作为第一个参数调用,例如:

FROM ducklake_snapshots('my_ducklake');
┌─────────────┬────────────────────────────┬────────────────┬──────────────────────────┐
│ snapshot_id │       snapshot_time        │ schema_version │         changes          │
│    int64    │  timestamp with time zone  │     int64      │ map(varchar, varchar[])  │
├─────────────┼────────────────────────────┼────────────────┼──────────────────────────┤
│      0      │ 2025-05-26 11:41:10.838+02 │       0        │ {schemas_created=[main]} │
└─────────────┴────────────────────────────┴────────────────┴──────────────────────────┘

ducklake_snapshots

返回存储在名为 catalog 的 DuckLake 目录中的快照。

参数名称 参数类型 命名参数 描述
catalog VARCHAR  

信息被编码为具有以下模式的表

列名 列类型
snapshot_id BIGINT
snapshot_time TIMESTAMP WITH TIME ZONE
schema_version BIGINT
changes MAP(VARCHAR, VARCHAR[])

ducklake_table_info

ducklake_table_info 函数返回存储在名为 catalog 的 DuckLake 目录中的表的信息。

参数名称 参数类型 命名参数 描述
catalog VARCHAR  

信息被编码为具有以下模式的表

列名 列类型
表名 (table_name) VARCHAR
schema_id BIGINT
table_id BIGINT
table_uuid UUID
file_count BIGINT
file_size_bytes BIGINT
delete_file_count BIGINT
delete_file_size_bytes BIGINT

ducklake_table_insertions

ducklake_table_insertions 函数返回在给定版本或时间戳的快照之间插入到给定表中的行。该函数有两种变体,具体取决于 start_snapshotend_snapshot 的类型是 BIGINT 还是 TIMESTAMP WITH TIME ZONE

参数名称 参数类型 命名参数 描述
catalog VARCHAR  
schema_name VARCHAR  
表名 (table_name) VARCHAR  
start_snapshot BIGINT / TIMESTAMP WITH TIME ZONE  
end_snapshot BIGINT / TIMESTAMP WITH TIME ZONE  

该函数返回的表的模式与 table_name 表的模式相同。

ducklake_table_deletions

ducklake_table_deletions 函数返回在给定版本或时间戳的快照之间从给定表中删除的行。该函数有两种变体,具体取决于 start_snapshotend_snapshot 的类型是 BIGINT 还是 TIMESTAMP WITH TIME ZONE

参数名称 参数类型 命名参数 描述
catalog VARCHAR  
schema_name VARCHAR  
表名 (table_name) VARCHAR  
start_snapshot BIGINT / TIMESTAMP WITH TIME ZONE  
end_snapshot BIGINT / TIMESTAMP WITH TIME ZONE  

该函数返回的表的模式与 table_name 表的模式相同。

ducklake_table_changes

ducklake_table_changes 函数返回在给定版本或时间戳的快照之间在给定表中更改的行。该函数有两种变体,具体取决于 start_snapshotend_snapshot 的类型是 BIGINT 还是 TIMESTAMP WITH TIME ZONE

参数名称 参数类型 命名参数 描述
catalog VARCHAR  
schema_name VARCHAR  
表名 (table_name) VARCHAR  
start_snapshot BIGINT / TIMESTAMP WITH TIME ZONE  
end_snapshot BIGINT / TIMESTAMP WITH TIME ZONE  

该函数返回的表的模式包含以下三列以及 table_name 表的模式。

列名 列类型 描述
snapshot_id BIGINT  
rowid BIGINT  
change_type VARCHAR 更改类型:insertdelete

命令

ducklake_cleanup_old_files

ducklake_cleanup_old_files 函数清理 catalog 表示的 DuckLake 中的旧文件。成功后,它将返回一个只有一列 (Success) 且没有行的表。

参数名称 参数类型 命名参数 描述
catalog VARCHAR  
cleanup_all BOOLEAN  
dry_run BOOLEAN  
older_than TIMESTAMP WITH TIME ZONE  

ducklake_expire_snapshots

ducklake_expire_snapshots 函数使由 versions 参数指定的快照版本或比 older_than 参数更旧的快照过期。成功后,它将返回一个只有一列 (Success) 且没有行的表。

参数名称 参数类型 命名参数 描述
catalog VARCHAR  
versions UBIGINT[]  
older_than TIMESTAMP WITH TIME ZONE  

ducklake_merge_adjacent_files

ducklake_merge_adjacent_files 函数合并存储中的相邻文件。成功后,它将返回一个只有一列 (Success) 且没有行的表。

参数名称 参数类型 命名参数 描述
catalog VARCHAR