SuperAPI AI 工具集

write-script-bigquery

数据与分析

查看项目

更新于 10-16 10:24

技能介绍

该技能用于指导编写 BigQuery 查询脚本,要求在此类任务中必须使用。它围绕 Windmill 的 wmill CLI 工具展开,提供脚本从编写、预览、测试到部署的完整操作规范。

用途

本技能主要服务于在 Windmill 平台上编写 BigQuery 查询脚本的场景。它帮助用户区分本地预览(wmill script preview)与已部署脚本运行(wmill script run),避免为测试而误将未验证的改动部署到工作区。技能还强调在编辑脚本内容后(尤其是增删 import 或修改 main 参数时)需运行 wmill generate-metadata 来保持本地 .script.yaml、.lock 与 wmill-lock.yaml 的哈希一致性,防止 git-sync 和 CI 出现虚假差异。

主要能力

该技能涵盖以下操作指导:

  • 使用 wmill script preview 在本地迭代脚本,不部署即可运行;
  • 使用 wmill script run 运行已部署到工作区的脚本;
  • 使用 wmill generate-metadata 重新生成输入 schema(.script.yaml)和依赖锁(.lock),并刷新内容哈希;
  • 使用 wmill generate-metadata --dry-run 列出过时项及原因而不做改动;
  • 使用 wmill generate-metadata rehash 仅从磁盘重新记录哈希,不产生后端往返和依赖变更;
  • 通过 wmill resource-type list --schema 发现可用的资源类型;
  • 部署操作(git push 或 wmill sync push)仅在用户明确要求发布/推送时执行。

BigQuery 脚本编写方面,技能说明了参数使用 @name 语法,可通过在语句前添加注释来命名参数并指定类型,例如: -- @name1 (string) -- @name2 (int64) = 0 SELECT * FROM users WHERE name = @name1 AND age > @name2;

对于接收 S3Object 类型参数,需声明类型为 (s3object),Windmill 会渲染 S3 文件选择器,下载文件并以 STRING JSON 参数绑定。Parquet/CSV 文件在服务端解码为 JSON 记录数组,JSON/JSONL 则直接传递。可使用 JSON_EXTRACT_ARRAY / JSON_VALUE 消费数据。

若需将查询结果流式写入 S3,可在脚本顶部添加 -- s3 指令,支持 prefix、storage、format(json 默认、parquet、csv)等可选键,从而绕过 10000 行返回上限。

使用方式

技能要求在编写完成后告知用户哪些命令适合其目标。默认在本地迭代时使用 wmill script preview;仅当用户明确要求运行已部署版本或没有本地脚本编辑时使用 wmill script run。部署仅在用户明确要求时执行。编辑后应主动提议运行 wmill generate-metadata,除非项目 AGENTS.md 选择自动运行。运行后应对比重新生成的 .lock 文件并告知依赖版本变化。

适用场景

适用于使用 Windmill 平台开发、测试和部署 BigQuery 查询脚本的数据工程师和开发者,特别是在需要处理 S3 文件输入或将大数据集结果导出至 S3 的工作流中。

限制

技能未提供 BigQuery 本身的具体价格、收费或性能指标;未说明支持的所有文件格式细节;元数据自动运行需项目 AGENTS.md 明确配置;部署操作需用户显式授权。