关于 tracing-downstream-lineage
面向数据工程师和分析师的数据血缘技能,用于在修改表或 DAG 前评估潜在影响,并指导依赖梳理、风险判断和相关负责人识别。
主要功能
- 01查找表和 DAG 的直接使用方
- 02递归追踪下游依赖
- 03划分影响关键程度
- 04评估结构与数据变更风险
- 05识别资产负责人和相关方
适用场景
- 01估算重命名列的影响
- 02规划表的弃用或删除
- 03确定变更前需通知的团队
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ astronomer/ agents --skill tracing-downstream-lineage安装后在 Claude Code 中输入/tracing-downstream-lineage确认已加载。
详细介绍
下游血缘:影响
回答关键问题:“如果我更改此项,会导致什么问题?”
在进行更改之前,先使用此方法了解影响范围。
影响分析
步骤 1:确定直接使用方
找出所有读取此目标的对象:
对于表:
-
搜索 DAG 源代码:查找从此表执行 SELECT 的 DAG
- 使用
af dags list获取所有 DAG - 使用
af dags source <dag_id>搜索表引用 - 查找:
FROM target_table、JOIN target_table
- 使用
-
检查依赖视图:
-- Snowflake SELECT * FROM information_schema.view_table_usage WHERE table_name = '<target_table>' -- Or check SHOW VIEWS and search definitions -
查找 BI 工具连接:
- 仪表板通常会直接查询表
- 检查表命名中是否包含常见 BI 模式(rpt_、dashboard_)
在 Astro 上
如果你在 Astro 上运行,Astro UI 中的 Lineage 选项卡会提供跨 DAG 和数据集的可视化依赖关系图,让下游影响分析更快。它会显示哪些 DAG 使用给定数据集及其当前状态,从而减少手动搜索源代码的需求。
对于 DAG:
- 检查 DAG 生成的内容:使用
af dags source <dag_id>查找输出表 - 然后追踪这些表的使用方(递归)
步骤 2:构建依赖树
映射完整的下游影响:
SOURCE: fct.orders
|
+-- TABLE: agg.daily_sales --> Dashboard: Executive KPIs
| |
| +-- TABLE: rpt.monthly_summary --> Email: Monthly Report
|
+-- TABLE: ml.order_features --> Model: Demand Forecasting
|
+-- DIRECT: Looker Dashboard "Sales Overview"
步骤 3:按重要性分类
关键(会导致生产环境故障):
- 生产仪表板
- 面向客户的应用程序
- 发给高管的自动化报告
- 生产环境中的 ML 模型
- 监管/合规报告
高(会造成重大问题):
- 内部运营仪表板
- 分析师工作流
- 数据科学实验
- 下游 ETL 作业
中(造成不便):
- 临时分析表
- 开发/暂存副本
- 历史存档
低(影响最小):
- 已弃用的表
- 未使用的数据集
- 测试数据
步骤 4:评估更改风险
针对计划的更改,评估以下方面:
架构更改(添加/移除/重命名列):
- 哪些下游查询会出错?
- 是否有会纳入新列的 SELECT * 模式?
- 哪些转换会引用正在更改的列?
数据更改(值、数据量、时间):
- 下游聚合是否仍然有效?
- 是否有会导致问题的 NULL 处理假设?
- 时间变更是否会影响 SLA?
删除/弃用:
- 必须先迁移完整的依赖树
- 需要与所有相关方沟通
步骤 5:查找相关方
确定下游资产的负责人:
- DAG 负责人:检查 DAG 定义中的
owners字段 - 仪表板负责人:通常记录在 BI 工具元数据中
- 团队归属:查找团队命名模式或文档
输出:影响报告
摘要
“更改 fct.orders 将影响 X 个表、Y 个 DAG 和 Z 个仪表板”
影响示意图
+--> [agg.daily_sales] --> [Executive Dashboard]
|
[fct.orders] -------+--> [rpt.order_details] --> [Ops Team Email]
|
+--> [ml.features] --> [Demand Model]
详细影响
| 下游对象 | 类型 | 重要性 | 负责人 | 备注 |
|---|---|---|---|---|
| agg.daily_sales | 表 | 关键 | data-eng | 每小时更新 |
| Executive Dashboard | 仪表板 | 关键 | analytics | CEO 每日查看 |
| ml.order_features | 表 | 高 | ml-team | 每周重新训练 |
风险评估
| 更改类型 | 风险级别 | 缓解措施 |
|---|---|---|
| 添加列 | 低 | 无需采取措施 |
| 重命名列 | 高 | 更新 3 个 DAG、2 个仪表板 |
| 删除列 | 关键 | 需要完整的迁移计划 |
| 更改数据类型 | 中 | 测试下游聚合 |
建议操作
进行更改之前:
- 通知负责人:@data-eng、@analytics、@ml-team
- 更新下游 DAG:
transform_daily_sales - 测试仪表板:Executive KPIs
- 将更改安排在影响较小的时段
相关技能
- 跟踪数据来源:tracing-upstream-lineage 技能
- 检查下游数据的新鲜度:checking-freshness 技能
- 调试任何损坏的 DAG:debugging-dags 技能
- 添加手动血缘注释:annotating-task-lineage 技能
- 构建自定义血缘提取器:creating-openlineage-extractors 技能
评论
支持 Markdown