zl程序教程

您现在的位置是:首页 >  其他

当前栏目

数据治理--数据血缘模型【lineage model】的概念及三个层级

概念数据 -- 模型 model 三个 治理 层级
2023-09-11 14:16:24 时间

数据血缘

数据血缘关系:数据血缘关系是指数据在产生、处理、流转到消亡过程中,数据之间形成的一种类似于人类社会血缘关系的关系。

数据血缘模型【lineage model】中的实体包括表、列、函数、RESULTSET、关系和其他实体。实体和关系的组合显示了从一个表/列到其他表/列的血缘

如以下SQL解析产生的数据血缘如下:

针对员工表创建一个视图,针对NYC城市的员工统计如下信息:

  • 每个部门的员工数 与 总员工数的比值
  • 每个部门的工资数 与 总工资数的比例
CREATE VIEW vsal AS SELECT a.deptno "Department",
a.num_emp / b.total_count "Employees",
a.sal_sum / b.total_sal "Salary" 
FROM
	( SELECT deptno, Count( ) num_emp, SUM( sal ) sal_sum FROM scott.emp WHERE city = 'NYC' GROUP BY deptno ) a,
	( SELECT Count( ) total_count, SUM( sal ) total_sal FROM scott.emp WHERE city = 'NYC' ) b

在这里插入图片描述
数据血缘涉及的实体、关系如下:

  • table 表
  • view 视图
  • resultset 结果集
  • relation 关系
    • target element 源
    • source element 目标
  • process 处理过程(SQL statement)
  • column 列、字段
  • variable 变量:scalar、cursor、record
  • procedure 存储过程:argument 参数
  • path 路径
  • error 错误

数据血缘的三个层级

完整的数据血缘模型

完整的数据血缘模型包括所有的详细信息,例如在SELECT语句中生成的RESULT SET、用于根据输入列计算新列值的FUNCTION CALL、用于将数据从一列转换到另一列的CASE EXPRESSION等等

这个完整的数据血缘模型是所有其他高级血缘模型的基础,这些高级血缘模型通过省略或聚合模型中的某些关系和实体而只包含该完整模型中的一些血缘

更高层次的模型不仅删除一些关系和实体,而且合并一些关系来创建新的关系。在高级模型中引入的最重要的实体是PROCESS,它是一个执行转换的SQL查询。**
高级模型使用SQL查询作为最小单元,告诉您数据是如何从一个表/列传输到另一个表/列的。
另一方面,完整的模型告诉您在SQL查询中数据是如何传输的。

完整的数据血缘模型不适合展示给用户:

  • 包含数千个实体的图表和关系是混乱的,几乎不可能在一张图片中展示。
  • 分析所有详细信息是费时费力的

实体类型

Table, view, column, process(SQL statement), resultset, function, variale, path.
PseudoRows column:表示结果集中的行数

关系类型

  • fdd : 目标实体的数据来自源实体
  • fdr : 源列的数据将影响选择列表中结果集的行号,或者影响aggreate函数的结果值。
    示例如下:
    SELECT a.empName “eName” FROM scott.emp a Where sal > 1000
    sal -> fdr -> resultset.PseudoRows
  • join : 在连接条件中建立2个或更多列之间的链接

字段级别的血缘

该模型只包含三种实体:

  • 源列
  • 目标列
  • SQL语句(模型中称之为PROCESS)
  • 它们之间的关系。

表级别的血缘

该模型只包含三种实体:

  • 源表
  • 目标表
  • SQL语句(模型中称之为PROCESS)
  • 它们之间的关系

基于解析SQL的表间血缘关系工具

sqllineage

SQL Lineage Analysis Tool powered by Python,只提供表级别的血缘分析
源码地址:https://github.com/reata/sqllineage
安装:pip install sqllineage
使用:sqllineage -e “select * from tabA”
sqllineage -f demo.sql

在线工具sqlflow

https://sqlflow.gudusoft.com/#/
著名的sqlparser: http://www.sqlparser.com/index.php
访问地址(提供了解析SQL并展示血缘关系的小工具):https://sqlflow.gudusoft.com/#/
能提供字段及表级别的血缘分析