大数据血缘主要体现在表与表之间的关系,描述了我的数据从哪里来,经过怎样的关联处理,流到哪里去,弄清楚关系是做数据治理的关键一环。
大数据中涉及的数据表成百上千,表与表之间的关系,交叉依赖,错中复杂的。
今天我们从一个简单的SQL开始,去构建血缘关系及可视化。SQL查询客户的销售额,并将数据写入表table_user_dt_tg中:
血缘关系解析图谱:
使用PlantUML做可视化展示:
关键血缘分析
1. 目标表结构
2. 分区策略
3. 字段级血缘
有了血缘数据之后,我们请能清楚的看出 数据的流向以及使用哪些字段,做了哪些计算统计等,数据治理才有了抓手。比如基于血缘数据分析。可以评估出S QL存在的风险点以及优化建议。
SQL质量风险点
优化建议
动态分区改造(如需多分区写入):
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
-- 移除WHERE条件中的dt过滤
JOIN条件优化:
LEFT JOIN table_order_source2 s2
ON s1.user_id = s2.user_id
AND s2.dt = '20250216' -- 将过滤条件移到JOIN条件中
字段精简:
GROUP BY
s1.user_id, -- s2.dt已是常量,可移除
s1.user_name,
s2.order_id
以上就是一个基于数据血缘,做数据治理的经典案例了。