用途:本技能用于指导编写 BigQuery 查询脚本,并规定编写完成后如何使用 Windmill CLI 验证、同步元数据与部署。脚本应放在某个文件夹中。
BigQuery 参数:使用 @name 语法,在语句前用注释声明参数名与类型,例如 -- @name1 (string)、-- @name2 (int64) = 0,其后在 SQL 中以 @name1、@name2 引用。
S3 对象参数:将参数声明为 (s3object),Windmill 会渲染 S3 文件选择器、下载文件并以 STRING JSON 参数绑定;Parquet/CSV 会在服务端解码为 JSON 记录数组,JSON/JSONL 原样传递。可用 JSON_EXTRACT_ARRAY 与 JSON_VALUE 消费,例如 -- @file (s3object) 配合 SELECT ... FROM UNNEST(JSON_EXTRACT_ARRAY(@file)) AS row。
结果流式写入 S3:在脚本顶部添加 -- s3 指令可把结果集直接流式写入 S3 而不返回行,Windmill 写入文件并返回其 S3Object 作为脚本结果,例如 -- s3 prefix=exports/users format=parquet。其键均可选:prefix(对象键前缀)、storage(命名存储,省略则用工作区默认)、format(json 为默认,另有 parquet、csv)。适用于大结果集,行直接流入 S3 而不缓冲,可绕过 10000 行的返回上限。
CLI 用法:wmill script preview <script_path> 用于本地迭代,运行本地文件而不部署;wmill script run <path> 运行已部署到工作区的脚本,仅在用户明确要测试已部署版本时使用;wmill generate-metadata 为改动的脚本重新生成本地 .script.yaml(输入 schema)与 .lock(解析后的依赖),并刷新 wmill-lock.yaml 中的内容哈希;它只写本地文件、不是部署,但会重新解析依赖,可能提升未固定版本。无路径参数时仅重建内容哈希漂移的条目;导入会传播,改动被他人导入的脚本会使其导入者同样过期。可用 wmill generate-metadata --dry-run 列出过期项及原因,再用路径参数或 --strict-folder-boundaries 收窄范围。若磁盘上的 .lock 与 .script.yaml 已正确、仅需刷新 wmill-lock.yaml 哈希,使用 wmill generate-metadata rehash。
部署:通过 git push 或 wmill sync push,取决于仓库接线方式;仅在用户明确要求 deploy/publish/push 时执行。用户说 run、try、test 且存在本地改动时,应使用 script preview,而不是先推送再运行。
其他:参数与凭据应通过资源类型参数传入,不要硬编码或从环境读取;库会自动安装,无需给出安装说明;可用 wmill resource-type list --schema 发现资源类型。
限制:资料未提供更多关于运行环境要求、费用或版本兼容性的信息。