⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Sharing Macros

DuckDB 拥有一个强大的宏机制,允许为常见任务创建简写。例如,我们可以定义一个宏,将非负整数漂亮地打印为一个包含十亿、百万和千(不四舍五入)的短字符串,如下所示:

duckdb pretty_print_integer_macro.duckdb
CREATE MACRO pretty_print_integer(n) AS
    CASE
        WHEN n >= 1_000_000_000 THEN printf('%dB', n // 1_000_000_000)
        WHEN n >= 1_000_000     THEN printf('%dM', n // 1_000_000)
        WHEN n >= 1_000         THEN printf('%dk', n // 1_000)
        ELSE printf('%d', n)
    END;

SELECT pretty_print_integer(25_500_000) AS x;
┌─────────┐
│    x    │
│ varchar │
├─────────┤
│ 25M     │
└─────────┘

正如人们所期望的那样,宏被持久化在数据库中。 但这也意味着我们可以将其托管在HTTPS端点上并与任何人分享! 我们已经在blobs.duckdb.org上发布了这个宏。

让我们开始一个新的DuckDB会话并尝试一下:

duckdb

我们现在可以连接到远程端点并使用宏:

ATTACH 'https://blobs.duckdb.org/data/pretty_print_integer_macro.duckdb' AS db;
USE db;
SELECT pretty_print_integer(42_123) AS x;
┌─────────┐
│    x    │
│ varchar │
├─────────┤
│ 42k     │
└─────────┘

警告 目前不支持通过附件共享表格宏。