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_snapshot
和 end_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_snapshot
和 end_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_snapshot
和 end_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 |
更改类型:insert 或 delete |
命令
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 |
否 |