用途
doc-run 用于为 Snowflake 对象生成文档。它会运行 SQL 提取列元数据,创建数据字典,并构建血缘关系图。
主要能力
- 解析参数 $doc run [schema.table];若未提供参数,则记录所有可访问的表(使用 SHOW TABLES 枚举)。
- 对每张表执行 DESCRIBE TABLE [schema].[table],捕获列名、数据类型、是否可空、默认值和注释。
- 为获取血缘关系,执行查询:SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.OBJECT_DEPENDENCIES WHERE REFERENCED_OBJECT_NAME = '[table]' OR REFERENCING_OBJECT_NAME = '[table]' LIMIT 100。
- 生成数据字典文件 .cocoplus/docs/[schema]-[table]-datadict.md,包含列信息表格和血缘部分(上游依赖、下游消费方)。
- 生成 .cocoplus/docs/schema-lineage.md,汇总所有血缘关系。
- 输出结果:"Documentation generated. [N] tables documented. Files written to .cocoplus/docs/."
使用方式
- 确认 .cocoplus/ 目录存在。若不存在,输出 "CocoPlus not initialized in this directory. Run $pod init to begin." 并停止。
- 运行 $doc run [schema.table] 指定单张表,或省略参数以记录所有可访问的表。
- 技能将自动执行上述 SQL 并生成文档文件。
适用场景
- 需要为 Snowflake 表快速生成数据字典和血缘关系文档。
- 在数据治理、数据目录维护或团队协作中,需要了解表结构及上下游依赖。
限制与注意事项
- 运行前必须初始化 CocoPlus(存在 .cocoplus/ 目录)。
- 血缘查询依赖 SNOWFLAKE.ACCOUNT_USAGE.OBJECT_DEPENDENCIES 视图,可能受权限或数据延迟影响。
- 若列注释为空,数据字典中描述字段应填写 "(no description)",不可留空。
- 即使血缘查询无结果,也应保留血缘部分并标注 "No upstream/downstream dependencies found"。
- 扫描所有表时不可只记录前 10 张表,部分文档会带来虚假的完整性。
- 退出标准:每张被记录的表都有对应的数据字典文件且包含 ## Columns 表格;每个数据字典都有 ## Lineage 部分(即使为空);存在 schema-lineage.md 汇总文件;输出报告记录的表数量。