用途:在 Windmill 中编写与迭代 DuckDB 查询脚本,并明确本地预览、运行已部署版本、同步元数据与部署之间的区别。
主要能力:DuckDB 脚本用注释声明参数并以 $name 引用,例如 -- $name (text) = default 与 -- $age (integer),查询中写 WHERE name = $name AND age > $age。可 ATTACH 'ducklake' AS dl 或 ATTACH 'ducklake://my_lake' AS dl 接入 Ducklake;用 ATTACH '$res:path/to/resource' AS db (TYPE postgres) 连接外部数据库;用 read_csv、read_parquet、read_json 读取 s3:/// 或 s3://storage_name/ 下的文件;参数类型声明为 (s3object) 时会渲染 S3 文件选择器并绑定为 s3://storage/key URI,可直接传给读取函数。写回 S3 用 COPY ... TO 's3:///exports/users.parquet' (FORMAT PARQUET),DuckDB 不支持其他 SQL 方言的 -- s3 流式指令。
使用方式:本地迭代用 wmill script preview <script_path>;仅当用户明确要运行已部署版本时才用 wmill script run <path>;改动导入或 main 参数后运行 wmill generate-metadata 重新生成 .script.yaml 与 .lock 并刷新 wmill-lock.yaml 哈希,可用 --dry-run 查看受影响项,用 rehash 仅重记哈希;部署需用户明确要求,通过 git push 或 wmill sync push。可用 wmill resource-type list --schema 查看资源类型。
限制:preview 不部署但会执行代码并可能产生副作用;generate-metadata 只写本地文件但会重新解析依赖,可能提升未固定版本;部署是唯一改动远端状态的操作。库自动安装,无需给出安装步骤。其他细节资料未提供。