0、前言
进入大数据时代,数据的来源极其广泛,数据爆发性增长。从数据的产生,通过加工融合流转产生新的数据,到最终消亡,数据之间的关联关系可以称之为数据血缘关系。在数据中台的大背景下,数仓的开发者经常需要解决以下问题:
面对成百上千张的数据表,不知道该如何关联,也不知道这些表具有什么业务价值
执行过长,慢的无法忍受的SQL脚本,却不敢轻易进行整改,其实,以上的这些问题都可以统一归类为数据发现问题。
1、什么是数据血缘
数据血缘记录了数据的来源和去处,在数据中台数据治理中更多场景指的实际上就是数仓建设中表及字段的来源与表的去处,数据血缘是帮助用户找数据、理解数据以及使数据发挥价值的重要基础能力。
2、数据血缘的作用
2.1、通过数据血缘可以清晰展示数据的所有依赖关系,当数据出现问题时,便可轻松快速地定位到问题所在的地方,以及发现该问题所影响的上下游数据
2.2、可以统计该表流入流出的数量,数量越多,说明该表的数据价值越大
2.3、可以协助清除没有数据依赖的单独表,在建设数仓的过程中可能会存在一些孤岛的单个表,没有流入和流出,这种表可能没有太大的意义但又占用存储空间
3、血缘常见两个数据来源
3.1、数据开发平台: 用户在开发平台写任务,并对数据加工,由此产生血缘数据。
3.2、追踪数据: 第三方平台(即任务平台)对用户埋点等数据进行计算,也会产生血缘信息。
4、数据血缘生成原理
数据血缘生成的原理其实并不难理解,主要是读取数仓中的数据库表结构,分析执行的 sql 语句,从而生成表与表,列与列的血缘关系依赖,在前台展示给用户查看。
5、市面现有实现
市面上数据血缘的产品有很多,像阿里DataWorks的数据血缘、字节的DataLeap以及开源产品Apache Atlas,但DataWorks和DataLeap都是企业收费得,Apache Atlas能解决场景的数仓建设需求,但还是存在部分问题,比如spark不支持字段血缘,flink也不支持,字段血缘的实时性也难以支持,数仓建设大多以任务性调度,而atlas则是以表为维度的,所以对任务支持也不行,而阿里DataWorks的数据血缘、字节的DataLeap则针对这些痛点进行开发,如果支持付费可能是一个更好的解决方案