使用马哈鱼SQLFLow 1 分钟获取复杂 SQL 语句的血缘关系

news/2024/10/30 13:36:40/

数据血缘关系在企业的数据治理中是非常重要的一个环节,关于数据血缘在企业数据治理中的重要作用,可以参考这篇文章。SQL 语言在数据处理中被广泛使用,SQL 语句中包含了丰富的数据血缘关系,关于什么是 SQL 中的数据血缘,如何发现这些隐藏在 SQL 语句中数据血缘,请参考这篇文章

本文主要介绍如何利用马哈鱼数据血缘分析器提供的 UI,Rest API 及 Java 库来快速获取复杂 SQL 语句中的数据血缘,并根据需要,集成在自己的数据治理平台中。

一个稍微有点复杂的 SQL 语句

我们利用下面这个稍微有点复杂的 SQL 语句来演示如何利用 Gudu SQLFlow 快速获取各种数据血缘关系,如果你有更复杂的 SQL 语句或者存储过程 (stored procedure) 需要处理,那么更需要一个像 Gudu SQLFlow 这样的数据血缘分析工具。

select data.*, location.remote
from (select e.last_name, e.department_id, d.department_namefrom employees eleft outer join department don (e.department_id = d.department_id)
) data inner join
(select s.remote,s.department_id from source sinner join location l on s.location_id = l.id
) location on data.department_id = location.department_id;

我们的目标是需要知道顶层的 select list 中包含哪些字段(column),并且这些字段的源数据来自其它哪些表和字段。一个理想的结果应该如下图所示:
在这里插入图片描述

Data Lineage for Top Level Select List
为了得到上面的结果,我们需要做这些事情:

1、自动展开 data.* 中的 * (asterisk),找到对应的字段。

2、为 select list 中的每个字段进行数据溯源,找到原始的表和字段,这个过程可能需要进行多层次的溯源,直到找到最终的数据源。

关于 * 号的自动展开

Select list 中的 * (asterisk) 代表该 relation 中的所有字段,需要展开为具体的字段名,在本例中,Gudu SQLFlow 可以根据 SQL 中提供的上下文信息,进行自动展开。但有时候,SQL 语句本身无法提供足够的信息以确定 * 到底包含了哪些字段,这时,你需要提供元数据 (metadata) 信息给 Gudu SQLFlow, 以便正确展开星号。

Gudu SQLFlow 提供了三种途径来帮你快速获得复杂 SQL 语句的血缘关系,方便你在不同场合使用。

1. Gudu SQLFlow UI

你可以直接访问 Gudu SQLFlow Cloud 版本,无需安装任何软件,即可使用。使用方法很简单,直接把需要处理的 SQL 语句 paste 到输入区域,然后点击 Visualize 即可。
在这里插入图片描述
我们可以忽略数据血缘的中间处理步骤及详细的信息,直接展示源数据(source data)和目标数据(target data),获得如上图的简洁结果,采用的 setting 设置如下:
在这里插入图片描述
你可以下载包含了数据血缘关系的 JSON 结果,进行进一步的处理。( 数据血缘的存放路径: data -> sqlflow -> relationships)
Gudu SQLFlow Data Lineage in JSON

2. Gudu SQLFlow Rest API

你可以在代码中调用 Gudu SQLFlow Rest API 来自动递交需要处理的 SQL 语句,并实时获得处理结果,然后在你的代码中对返回的数据血缘关系按业务需求进行处理。

为了使用 Gudu SQLFlow Rest API, 你需要一个 Gudu SQLFlow Cloud Premium Account, 这里有 详细的教程 。或者在你的公司内部安装 Gudu SQLFlow Cloud Premium 来使用 Rest API。

Python code 连接部署在企业内部的 Gudu SQLFlow 服务器 ( Gudu SQLFlow on-premise server ) 来获取数据血缘结果。
Python code 连接 SQLFlow cloud server 来获取数据血缘结果。
点击这里,可以查看利用以上 Python 代码分析产生的数据血缘结果。( 数据血缘的存放路径: data -> sqlflow -> relationships)

3. Gudu SQLFlow Java library

你也可以使用 Gudu SQLFlow Java 类库来分析 SQL 语句的数据血缘。利用 Gudu SQLFlow Java 类库的好处是你无需安装 Gudu SQLFlow 服务器软件,并且可以独立运行,不依赖任何第三方 Java 类库,方便集成到你自己的项目中。

我们为你创建了一个 Java demo 程序,你可以拿来直接编译运行。为了获取本文中 SQL 语句顶层 select list 返回的所有字段及他们的数据源,我们可以用以下参数运行该 Java demo:

/s /topselectlist

生成的数据血缘关系以 XML 格式存储,可以点击这里打开这个 XML 文件。

参考

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

马哈鱼数据血缘关系分析工具英文网站: https://docs.gudusoft.com

马哈鱼数据血缘关系分析工具在线使用: https://sqlflow.gudusoft.com


http://www.ppmy.cn/news/65850.html

相关文章

仿抖音开发需要注意的问题

一、版权问题 仿抖音开发需要注意版权问题,包括内容的版权和软件的版权。在开发的过程中,不要直接抄袭他人的作品,应该注重保护知识产权。 二、安全性问题 仿抖音开发需要重视应用的安全性问题,避免应用在使用过程中发生安全漏…

如何从0开始系统的学习kotlin?

Kotlin强大的静态语言特性相信不用我多讲,大家都或多或少明白一些。无论是对于安卓程序员还是JavaEE程序员来说,掌握Kotlin都是十分有必要的。 Kotlin作为谷歌官方支持的编程语言,目前,不少公司的Android开发工程师岗位表示要有K…

二叉排序树查找成功和不成功的平均查找长度

理解二叉树的特性: 1)结点:包含一个数据元素及若干指向子树分支的信息。 2)结点的度:一个结点拥有子树的数据成为结点的度。 3)叶子结点:也称为终端结点,没有子树的结点或者度为零的结点。 4)分支结点:也称为非终端结点,度不为零的结点成为非终端结点。 5)结点…

1区(TOP)极速送审,5月SCI/SSCI/EI刊源表已更新,

2023年5月SCI/SSCI/EI期刊目录更新 5月我处新增多本1-2区高分区新刊,包括计算机、医学、环境、化学、材料、生物、工程、社科领域,新刊版面极速送审~ 以下是本月重点期刊推荐,可作参考: 计算机类新刊: 1区计算机科…

操作系统:10 信号处理

基本概念: 1、中断 当程序接收到消息后中止了当前正在执行的程序,转而执行其他的任务,等其他任务执行完成后可能再返回继续执行,这种执行模式称为中断执行 分为硬件中断和软件中断 硬件中断由外设硬件产生的中断,例如键…

花菁染料CY5.5标记活性脂 Cy5.5-NHS

Cy5.5 NHS ester用于染色蛋白质、标记DNA、标记细胞表面抗原、标记抗体和其他生物分子。Cy5.5 NHS ester还可以用于分子影像学,可以追踪细胞内的变化。它还可以用于荧光免疫检测,以检测细胞表面抗原和抗体。 产品名称:五甲川花菁染料CY5.5标记…

商用密码应用安全性测评机构资质流程

商用密码应用安全性测评机构(简称密评机构)资质建设相关指导性材料包括: 1、《商用密码应用安全性测评机构能力要求》 2、《商用密码应用安全性测评机构能力评审实施细则(试行)》 3、《商用密码应用安全性测评机构管理…

三流面试聊技术,二流面试聊框架,一流面试…

前言 本文是为了帮大家快速回顾了软件测试中知识点,这套面试手册涵盖了诸多软件测试技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。 本来想将文件上传到github上,但由于文件太大有的都…