馬哈魚血緣分析工具介紹

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、參考

馬哈魚數據血緣分析器: //sqlflow.gudusoft.com

馬哈魚數據血緣分析器中文網站: //www.sqlflow.cn