DuckDB 1.2 亮点功能
简而言之:本文重点介绍 DuckDB 1.2 中引入的一些令人激动的新功能。
我们昨天发布了 DuckDB 1.2.1 错误修复版本。一如既往,请查阅发布说明以获取完整的更改列表,并访问安装页面以获取安装或升级说明。在这篇文章中,我们将重点介绍 DuckDB 最近添加的一些功能以及其生态系统中的改进。
新的客户端页面
DuckDB 的客户端 API(或“驱动程序”)通过多个集中式存储库分发,例如适用于 R 的 CRAN 和适用于 Java 的 Maven。为了帮助用户跟踪新 DuckDB 版本的发布,我们重新设计了“客户端”页面,以显示每个客户端的最新版本。该页面还阐明了适用于客户端的支持层级。
更简单的安装
秉承 DuckDB 的“低摩擦”原则,我们确保您可以更轻松地安装 DuckDB 命令行客户端。
Linux 和 macOS 上的安装脚本
现在可以使用安装脚本在类 UNIX 系统上安装 DuckDB
curl https://install.duckdb.org | sh
该脚本会检测您的操作系统和架构,获取最新版本的标签,如果不存在,则将最新可用的 DuckDB 二进制文件下载到 ~/.duckdb/cli
(~/.duckdb
文件夹已用于存储扩展)。
运行该脚本不需要 root (sudo) 权限,它只使用 curl
和 zcat
工具,这些工具广泛可用。您可以通过在浏览器中访问 install.duckdb.org
来检查 shell 脚本。
Windows 上的签名二进制文件
从 v1.2.1 开始,我们为 DuckDB Windows 命令行客户端提供了数字签名的二进制文件。这意味着您可以在要求签名二进制文件的环境中运行 DuckDB。
DuckDB 1.2 未被充分提及的功能
除了公告博客文章中“1.2.0 版本新增功能”部分之外,我们还收集了 v1.2.0 中引入的五个新功能。
OR
/ IN
过滤器下推
从 1.2.0 版本开始,DuckDB 支持 OR
和 IN
表达式用于过滤器下推。这项优化在查询远程 Parquet 文件或 DuckDB 数据库时特别有用。
-f
命令行标志
DuckDB CLI 客户端现在支持 -f
标志来执行 SQL 脚本文件
duckdb -f script.sql
这等同于
duckdb -c ".read script.sql"
此功能已在DuckDB tldr 页面中记录。如果您安装了 tldr,可以通过 tldr duckdb
在 CLI 中获取此页面。
allowed_directories
/ allowed_paths
选项
我们继续改进对在安全环境中操作 DuckDB 的支持。allowed_directories
和 allowed_paths
选项允许限制 DuckDB 对特定目录或文件(分别)的访问。这些选项允许对文件系统进行细粒度访问控制。例如,您可以将 DuckDB 设置为仅使用 /tmp
目录。
SET allowed_directories = ['/tmp'];
SET enable_external_access = false;
FROM read_csv('test.csv');
应用此设置后,DuckDB 将拒绝读取当前工作目录中的文件
Permission Error:
Cannot access file "test.csv" - file system operations are disabled by configuration
sum(BOOLEAN)
您现在可以直接计算 BOOLEAN
表达式的和而无需将其包装到 CASE
表达式中
SELECT sum(l_extendedprice > 500) FROM lineitem;
这等同于
SELECT sum(CASE WHEN l_extendedprice > 500 THEN 1 END) FROM lineitem;
Excel 扩展
在 DuckDB 1.2 之前,Excel 文件仅受spatial
扩展支持,这是一个具有多个依赖项的重量级扩展。从 1.2 版本开始,excel
扩展(以前仅限于计算一些公式)可以读取和写入 Excel 表。例如
FROM read_xlsx('test.xlsx', header = true);
如果您想使用 Google 表格工作表,请查看
gsheets
社区扩展。
在互联网上
互联网上有许多关于 DuckDB 的存储库和信息。我们重点介绍其中两个重要的
Awesome DuckDB
DuckDB 的生态系统持续增长:许多项目都在 DuckDB 之上和 DuckDB 内部构建。由 David Gasquez 维护的社区驱动的 awesome-duckdb
存储库列出了这些项目,并且最近已超过 200 个条目。
DuckDB 文件签名
DuckDB 的文件签名,DUCK
(十六进制:44 55 43 4B
),现已列在维基百科上。
Parquet 信息表
我们已将 DuckDB 添加到Parquet 文档的“实现状态”页面。在此过程中,我们还改进了 DuckDB 对 Parquet 的支持,例如,通过添加FLOAT16
逻辑类型。