⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
DuckLake

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

ducklake 扩展增加了对连接存储在 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)且 0 行的表。

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

ducklake_expire_snapshots

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

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

ducklake_merge_adjacent_files

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

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

兼容性矩阵

DuckLake 规范和 ducklake DuckDB 扩展目前是同时发布的。未来情况可能并非如此,规范和扩展可能会有不同的发布节奏。扩展也可能需要 DuckDB 核心更新,因此 DuckDB 版本也包含在此兼容性矩阵中。

DuckDB DuckLake 扩展 DuckLake 规范
1.4.x 0.3 0.3
1.3.x 0.2 0.2
1.3.x 0.1 0.1
© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南