文章 查看内容

ETL 输出数据集字段血缘查询

ETL 输出数据集字段血缘查询

40 0 智能ETL 2026-6-29 22:54 发布者: 观小枫

ETL 输出数据集的字段级血缘关系可基于 field_atlas_link 分析,并通过 data_source、field 表把数据集 ID 和字段 ID 转换为可读名称。

背景

排查 ETL 输入输出关系时,元数据表 data_flow 里的 inputsoutputs 只能看到 ETL 级别的输入、输出数据集信息。

如果要分析“输出数据集的某个字段来自哪个来源数据集的哪个字段”,需要看字段级血缘元数据,核心表是 field_atlas_link

结论

ETL 输出数据集的字段级血缘关系主要基于 field_atlas_link 分析,可以理解为:

输出数据集 / 输出字段
  <- 来源数据集 / 来源字段

核心元数据表

field_atlas_link:字段血缘关系表。

  • resource_id:目标资源 ID,ETL 输出字段血缘中通常是输出数据集 dsId
  • fd_id:目标字段 ID,通常是输出数据集字段 fdId
  • resource_type:目标资源类型
  • source_resource_id:来源资源 ID,通常是来源数据集 dsId
  • source_fd_id:来源字段 ID
  • source_resource_type:来源资源类型
  • atlas_link_type:字段血缘类型,0 表示数据集字段血缘,1 表示卡片字段血缘,2 表示指标字段血缘
  • field_info:目标字段显示信息,常见于卡片或指标字段血缘场景
  • dom_id:租户 / 域 ID
  • ctime:创建时间
  • utime:更新时间

data_source 用于把 dsId 转换为数据集名称,常用字段是 ds_idnameis_del

field 用于把 fdId 转换为字段名称或字段别名,常用字段是 ds_idfd_idnamealias_nameis_del

查询 SQL

select
  fal.resource_id as target_ds_id,
  target_ds.name  as target_ds_name,
  fal.fd_id       as target_fd_id,
  coalesce(tf.alias_name, tf.name) as target_field_name,

  fal.source_resource_id as source_ds_id,
  source_ds.name         as source_ds_name,
  fal.source_fd_id       as source_fd_id,
  coalesce(sf.alias_name, sf.name) as source_field_name,

  fal.resource_type,
  fal.source_resource_type,
  fal.atlas_link_type
from field_atlas_link fal
left join data_source target_ds
  on target_ds.ds_id = fal.resource_id
 and target_ds.is_del = 0
left join data_source source_ds
  on source_ds.ds_id = fal.source_resource_id
 and source_ds.is_del = 0
left join field tf
  on tf.ds_id = fal.resource_id
 and tf.fd_id = fal.fd_id
 and tf.is_del = 0
left join field sf
  on sf.ds_id = fal.source_resource_id
 and sf.fd_id = fal.source_fd_id
 and sf.is_del = 0
where fal.resource_id = '<输出数据集dsId>'
  and fal.atlas_link_type = 0;

UAT 示例

  • 输出数据集 ID:c253f99fcb52940bbab9d5f9
  • 输出数据集名称:应用页面关系宽表_多源ETL版_帮助中心demo
  • 来源数据集:元数据_web_portal_帮助中心demo、元数据_page_帮助中心demo、元数据_custom_app_帮助中心demo、元数据_page_path_帮助中心demo

下图是查询结果示例。截图基于 UAT 环境帮助中心 demo 数据集生成;为便于展示,截图中的 ID 做了截断,实际排查时以 SQL 查询结果中的完整 ID 为准。

字段血缘查询结果示例

枚举说明

atlas_link_type

  • 0:DATASET,数据集字段血缘
  • 1:CARD,卡片字段血缘
  • 2:METRIC,指标字段血缘

resource_type / source_resource_type 常见值:

  • 2:DATA_SET_ETL,ETL 数据集
  • 3:DATA_SET_UNIVERSE,Universe 数据集
  • 4:DATA_SET_ACCOUNT,账户数据集
  • 5:DATA_SET_FILE,文件数据集
  • 6:DATA_SET_DB_DIRECT_LINK,数据库直连数据集
  • 7:DATA_SET_DB_EXTRACT,数据库抽取数据集
  • 8:DATA_SET_HIGH_PERF,高性能数据集
  • 9:DATA_SET_SPARK_VIEW,Spark 视图数据集
  • 10:DATA_SET_ORACLE_PROCEDURE,Oracle 存储过程数据集
  • 11:DATA_SET_WEBSERVICE,WebService 数据集
  • 12:DATA_SET_OTHERS,其他数据集
  • 14:DATA_PROCESS_CARD,卡片
  • 25:METRIC_ATOMIC,原子指标
  • 26:METRIC_COMPOSITE,复合指标
  • 27:METRIC_DERIVED,衍生指标

注意事项

  1. data_flow.inputsdata_flow.outputs 只适合看 ETL 输入输出数据集清单,不包含字段级映射关系。
  2. 字段名称需要通过 field 表关联获取,建议用 ds_id + fd_id 联合关联,不要只用 fd_id
  3. 数据集名称需要通过 data_source 表关联获取。
  4. 查询卡片或指标字段血缘时,resource_id 不一定是数据集 ID,字段显示信息可能需要参考 field_atlas_link.field_info
  5. 如果 SQL 查不到字段名称,优先确认字段是否已删除、字段血缘是否已生成、目标数据集是否是 ETL 输出数据集。

路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部