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

news2025/2/28 17:35:38

数据血缘关系在企业的数据治理中是非常重要的一个环节,关于数据血缘在企业数据治理中的重要作用,可以参考这篇文章。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_name
	from employees e
	left outer join department d
		on (e.department_id = d.department_id)
) data inner join
(
	select s.remote,s.department_id 
	from source s
	inner 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.coloradmin.cn/o/520270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

死锁与活锁

1 死锁概述 死锁主要是由于资源使用不当引发的。OS中存在很多不同类型的软硬件资源,而可以引发死锁的资源 主要是需要互斥访问的、不可被抢占的资源,即临界资源。下面先来简单了解下资源的分类。 资源分类 按照资源是否可重复使用划分,可以分…

Spring ( 三 ) SpringIoC

3.SpringIoC Spring 核心 是 通过IoC 降低 项目中的类之间的耦合 IoC Inversion of Control 控制反转: 应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。 ​ 这样控制权就由应用转移到了外部容器,控制权的转移…

【Linux从入门到精通】一文带你理解进程概念

我们通过对上篇文章冯诺依曼体系结构对硬件进行讲解后, 本篇文章会对进程进行深入讲解。同时会讲解PCB(进程控制块)。希望本篇文章内容会对你有所帮助。 文章目录 一、再次理解操作系统 1、1 操作系统的作用 1、2 操作系统的管理 二、进程基本…

基于Kubernetes集群构建大中型企业CICD应用平台(5)--Integrate工具

5.1、jenkins介绍 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。 Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。 Jenkins需要大量的插件保证工作,安装成本较高&am…

Java Web开发:Spring Boot和Spring Cloud的应用和实践

一、介绍 Java Web开发是当今互联网时代中的一项重要技术,随着互联网的发展和应用场景的不断扩大,Java Web开发技术也得到了广泛的应用。而Spring Boot和Spring Cloud作为Java Web开发中最常用的技术之一,已经成为了很多开发者必备的技能。本…

使用Vue3和Typescript实现可复用的路由标签页和面包屑导航组件

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 一、为什么需要可复用的路由标签页和面包屑导航组件1.1 前端应用导航的问题1.2 解决问题的方法二、Vue3和Typescript基础知识回…

shell脚本中数组的运用以及排序算法

shell脚本中数组的运用 一、数组的介绍1、概念2、定义方法3、数组包括的数据类型 二、关于数组的操作1、获取数组长度2、获取数组各个元素的下标3、获取数组列表或单个元素4、对数组切片输出5、对数组里的元素替换6、删除单个元素或数组7、数组追加元素8、向函数传入数组的值 三…

Learning C++ No.20 【红黑树实战】

引言: 北京时间:2023/5/12/20:30,今天周五,周五不摆烂从我做起,虽然刚睡醒,但是今天如果论学习时长,那可能是许久以来最长的一天,从早上6:40晨跑回来坐在凳子上,一坐久坐…

在 I/O 看未来 | 开发者集合!官方学习资源已更新,即 课 解锁新技能!

看完 Google I/O 2023 的精彩内容 你是否已跃跃欲试,准备充电学习? 马上跟随 Google 开发者在线课程 刷新知识储备和开发技能 将技术热爱落地为实践应用! "解码 Google I/O 洞见科技未来" 征文活动 也向身为技术爱好者的你发出召唤…

【Wi-Fi】802.11/802.11b/802.11g/802.11n/802.11a/802.11ac/802.11ax/802.11be

WiFi发展历史 IEEE 802.11 Protocol Release Date Frequency Band Bandwidth Max Throughput 802.11-1997 1997 2.4GHz 22MHz 2Mbps 802.11b 1999 2.4GHz 22MHz 11Mbps 802.11a 1999 5GHz 20MHz 54Mbps 802.11g 2003 2.4GHz 20MHz 54Mbps 802.11n (W…

Kubernetes❀实战入门

Kubernetes❀实战入门 4. 实战入门4.1 Namespace4.1.1 **查看**4.1.2 **创建**4.1.3 **删除**4.1.4 **配置方式** 4.2 Pod4.2.1 创建并运行4.2.2 查看pod信息4.2.3 访问Pod4.2.4 删除指定Pod4.2.5 配置操作 4.3 Label4.3.1 命令方式4.3.2 配置方式 4.4 Deployment4.4.1待操作。…

第二章 介绍Productions - 互操作性制作简介

文章目录 第二章 介绍Productions - 互操作性制作简介介绍Productions设置Production的消息流 第二章 介绍Productions - 互操作性制作简介 互操作性产品的目的是使能够连接系统,以便可以在它们之间转换和路由消息。要连接系统,需要开发、配置、部署和管…

( 位运算 ) 693. 交替位二进制数 ——【Leetcode每日一题】

❓693. 交替位二进制数 难度:简单 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 示例 1: 输入:n 5 输出:true 解释&#…

【FreeRTOS】——API函数任务创建与删除挂起与恢复

目录 前言: 一、任务创建与删除的API函数 二、任务挂起与恢复的API函数 总结: 前言: 博客笔记根据正点原子视频教程编辑,仅供学习交流使用! 一、任务创建与删除的API函数 任务的创建和删除的本质就是调用FreeRT…

小宁ChatGPT智能机器人上线,无需魔法注册即可使用!

​大家好,今天我要向大家介绍一款基于人工智能技术的聊天机器人——ChatGPT。ChatGPT可以与用户进行自然语言交互,回答用户的问题、提供服务、进行闲聊等,让聊天变得更有趣。 小宁ChatGPT是对接ChatGPT官方api,实现无需魔法无误差…

使用Visual Studio 2019 创建JNI式的动态库及在Java代码中的使用

文章目录 JNI简介JNI 数据类型与 Java 、C 类型对比JNI式动态库函数编码规则Visual Studio下的编码JNI式动态库在Java代码中的使用改进版通过javah命令自动生成.h文件 JNI简介 JNI (Java Native Interface) 是 Java 沟通 Native 语言(主要是C、C)的桥梁…

《花雕学AI》34:用13种Prompt玩转AI聊天机器人—揭秘ChatGPT模型

引言: 聊天机器人是一种能够通过自然语言进行交流的智能系统,它可以模仿人类的对话方式,提供各种信息、服务或娱乐。随着人工智能技术的发展,聊天机器人的应用越来越广泛,从电商、教育、医疗、旅游等领域,到…

Spring ( 四 ) 注解注入

3.2.注解方式 目前 主流的方式 是使用注解方式来实现IoC效果. 3.2.1.配置类 在 config包下增加 SpringConfig 配置类 Configuration 声明当前类为配置类, SpringIoC容器会根据配置类信息进行配置 ComponentScan() bean扫描路径 , SpringIoC容器只维护 声明的路径下的增加&q…

华为OD机试真题 Java 实现【最多提取子串数目】【2023Q1 100分】

一、题目描述 给定由[a-z] 26 个英文小写字母组成的字符串 A和 B,其中A中可能存在重复字母,B 中不会存在重复字母,现从字符串 A 中按规则挑选一些字母,可以组成字符串 B。 挑选规则如下: 同一个位置的字母只能被挑选一次&#…

Qt连接Sqlite3并使用Qtableview实时显示数据,重写QSqlQueryModel实现文本居中

文章目录 前言一、引入SQL模块二、数据库的基本操作三、示例完整代码四、下载链接总结 前言 什么是 SQLite? SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其…