• 马哈鱼血缘分析工具介绍


    SQLFlow通过分析SQL查询和存储过程来生成数据血缘关系。数据血缘关系模型中的实体包括表、列、函数、关系和其他实体。实体和数据流的组合显示了从一个表/列到另一个表/列的沿袭。

    1、数据流单元

    数据流单元包括源实体、目标实体以及它们之间的数据流类型。

    SELECT p.FirstName from Person.Person AS p 

    这是为上述SQL查询生成的数据流。

    person.persion.FirstName -> direct -> RS-1.FirstName

    1.1 源、目标实体

    源实体和目标实体通常引用表、视图和其他关系,例如公共表表达式、查询执行期间生成的结果集。它也可能指HDFS系统中的文件等。

    1.2 数据流类型

    数据流有两种类型:直接数据流(direct )和间接数据流(indirect )。

    1.2.1 直接数据流(direct )

    直接数据流意味着目标实体的数据直接来自源实体。

    在上图中,RS-1.FirstName。直接来自Person.FirstName。

    箭头用于表示图表中的直接数据流:

    1.2.2 间接数据流(indirect )

    间接数据流意味着目标列的数据不是来自源列,而是源列/表的数据影响目标列的结果数据。

    虚线箭头用于表示图表中的间接数据流:

    间接数据流中的源列通常出现在以下子句中:

    • Where 子句

    • Group by 子句

    • Winddows function

    • Join condition

    SELECT deptno, COUNT() num_emp, SUM(SAL) sal_sum
    FROM scott.emp
    GROUP BY deptno

    COUNT()和SUM(SAL)的值受group by子句中deptno列的值影响。因此,间接数据流将如下创建:

    scott.emp.deptno -> indirect -> COUNT()
    scott.emp.deptno -> indirect -> SUM(SAL)

     

    对于其他间接数据流,我们将在后面讨论。

    1.2.3 Join操作符

    Join在联接条件中的两个或多个列之间建立链接。严格地说,这种关系不是数据流类型。

     select b.teur from tbl a left join TT b on (a.key=b.key)

    分析上述SQL后将创建连接关系。它表示tbl之间的连接关系,在tbl.key和TT.key之间。

     

    2、数据流中的实体

    在两个实体之间构建数据流时:源实体和目标实体。它们可以是列到列、表到列或表到表。

    2.1 列对列

    这是最常见的情况,数据流中的两个实体都是列。

    2.2 表对列

    当我们说一个表影响一列的值时,我们通常指的是一个表的行总数影响一列的值,通常,这个列是从COUNT()函数派生出来的。

    SELECT COUNT() num_emp FROM scott.emp

    表到列的数据流通过使用表RelationRows的 psedou列来表示,这将从scott构建一个间接数据流,关系行RS-1.num_emp。

    scott.emp.RelationRows -> indirect -> COUNT() -> RS-1.num_emp

    2.3 表对表

    有时,两个表之间会有数据流。例如,在 alter table rename SQL 语句, 将创建一个表到表的数据流。实际上,表到表的数据流由使用 RelationRows表 pseudo 列.

    alter table t2 rename to t3;

    3、数据血缘

    数据血缘关系由许多基本的数据流单元组成。

    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

    数据血缘分析图:

    输出也可以是XML或JSON格式。

    4、参考

    马哈鱼数据血缘分析器: https://sqlflow.gudusoft.com

    马哈鱼数据血缘分析器中文网站: https://www.sqlflow.cn

  • 相关阅读:
    Git: git tag 使用小结(给发布版本打标记,切换并修改某个历史版本)
    android: Android水波纹点击效果
    Flutter: 运行新项目报错
    FFmpeg编译:mac下编译iOS平台的FFmpeg库(支持armv7, arm64, i386, x86_64)
    Xcode: Xcode中Command Line Tools的安装方法
    win10: windows+E 改回打开我的电脑
    DialogFragment: DialogFragment的一些理解
    Android Studio: 查看SDK源代码
    HandlerThread: HandlerThread的理解
    Looper: Looper,Handler,MessageQueue三者之间的联系
  • 原文地址:https://www.cnblogs.com/syforacle/p/mahayusqlflow.html
Copyright © 2020-2023  润新知