用途
warehouse-init 用于初始化数据仓库的模式发现,生成一份全面的、用户可编辑的数据仓库模式参考文件。它通过从仓库中发现数据库、模式、表和列,并结合代码库上下文,为团队提供可直接查表的参考文档,使得概念到表的查找无需再查询仓库即可完成。
主要能力
-
仓库发现:读取仓库配置(cat ~/.astro/agents/warehouse.yml),获取要发现的数据库列表(如 databases: [HQ, ANALYTICS, RAW]),并并行发现每个数据库的模式、表、行数和列。
-
代码库上下文搜索:启动子代理查找代码中的业务上下文,包括:
- dbt 模型(/models//*.yml、**/schema.yml):提取表描述、列描述、主键和测试
- Gusty/声明式 SQL(/dags//*.sql with YAML frontmatter):解析 frontmatter 中的 description、primary_key、tests,以及模式映射
- AGENTS.md 或 CLAUDE.md 中的数据层文档 返回 table_name -> {description, primary_key, important_columns, layer} 的映射。
-
并行仓库发现:为每个数据库启动一个子代理,查询 schemas、tables(含行数和注释)、重要模式的列信息(如 MODEL_、METRICS_、MART_*),并标记超过 1 亿行的大表为 "large"。使用的命令示例:
uv run scripts/cli.py exec "df = run_sql('...')"uv run scripts/cli.py exec "print(df)"
-
分类值族发现:对关键分类列(如 OPERATOR、STATUS、TYPE、FEATURE)发现值族,按公共前缀/后缀分组。
-
合并结果:将仓库元数据与代码库上下文合并,生成包含快速参考表、分类列、数据库章节、模式子章节、表详情等内容的 warehouse.md。
-
生成 warehouse.md:写入
.astro/warehouse.md(默认,项目特定、可版本控制)或~/.astro/agents/warehouse.md(如果使用 --global 标志)。 -
预填充缓存:生成 warehouse.md 后,通过
uv run cli.py concept import -p .astro/warehouse.md和uv run cli.py concept learn customers HQ.MART_CUST.CURRENT_ASTRO_CUSTS -k ACCT_ID填充概念缓存。 -
提供 CLAUDE.md 集成:询问用户是否将快速参考表添加到 CLAUDE.md 文件,以提升复杂查询的准确性。
使用方式
/astronomer-data:warehouse-init— 生成 .astro/warehouse.md/astronomer-data:warehouse-init --refresh— 重新生成,保留用户编辑(保留 HTML 注释、快速参考表用户条目、用户添加的描述;更新行数、添加新表、标记已删除表)/astronomer-data:warehouse-init --database HQ— 仅发现指定数据库/astronomer-data:warehouse-init --global— 写入到 ~/.astro/agents/ 而不是项目目录
生成后建议:编辑 .astro/warehouse.md 添加业务上下文、提交到版本控制、模式变更时运行 --refresh。
适用场景
- 需要快速查找概念对应的数据表,避免每次查询仓库
- 团队共享数据仓库模式参考
- 结合代码库(dbt、gusty、文档)丰富表描述
- 需要标记大表并提醒添加日期过滤
- 数据管道部署模式迁移后需要刷新模式信息
- 定期(如每周)维护模式参考
限制
- 运行时缓存默认 TTL 为 7 天,过期后缓存条目将失效并重新发现
- 当出现 "table not found" 错误、结果错误或过时、新表未被发现时,可能表示缓存陈旧,可手动重置:
uv run scripts/cli.py cache statusuv run scripts/cli.py cache clear --stale-onlyuv run scripts/cli.py cache clear
- 所有 CLI 命令相对于 analyzing-data 技能的目录(../analyzing-data/),运行前需 cd 到该目录。
- 脚本路径为 ../analyzing-data/scripts/。
- 关于收费、价格、平台支持和具体效果,资料中暂未提供。
识别到的代码库模式
| 模式 | 来源 | 提取内容 |
|---|---|---|
| /models//*.yml | dbt | 表/列描述、测试 |
| /dags//*.sql | gusty | YAML frontmatter(description、primary_key) |
| AGENTS.md、CLAUDE.md | docs | 数据层层次、约定 |
| /docs//*.md | docs | 业务上下文 |
数据层层次(查询时优先下游)
reporting > mart_* > metric_* > model_* > IN_*
| 层 | 前缀 | 用途 |
|---|---|---|
| Reporting | reporting.* |
仪表盘优化 |
| Mart | mart_* |
组合分析 |
| Metric | metric_* |
各种粒度的 KPI |
| Model | model_* |
清洗后的真实来源 |
| Raw | IN_* |
源数据 - 避免使用 |