马哈鱼数据血缘工具背后的项目: gsp_demo_java 项目简单介绍与使用

0.背景

马哈鱼数据血缘工具(https://www.sqlflow.cn/)是SQLflow工具的中文译名,实际就是sqlflow.
对于SQL flow来说,底层调用的是General SQL Parser(GSP https://sqlparser.com) 的库.
这个gsp有开源的java demo项目:https://github.com/sqlparser/gsp_demo_java

1.快速使用

下载项目后用idea 导入后,这是一个springboot项目,如果直接启动控制台会打印一堆注释,因为没有导入参数,这个项目需要用参数来导入sql文件
在运行里输入 /f sql文件绝对路径
在这里插入图片描述启动项目后控制台即打印血缘
以 下列sql为例

SELECT d.deptno,
d.dname
FROM dept d

生成节点

<dlineage>
    <table id="4" name="dept" alias="d" type="table" coordinate="[3,8,0],[3,14,0]">
        <column id="5" name="deptno" coordinate="[1,8,0],[1,16,0]"/>
        <column id="6" name="dname" coordinate="[2,8,0],[2,15,0]"/>
    </table>
    <resultset id="8" name="RS-1" type="select_list" coordinate="[1,8,0],[2,15,0]">
        <column id="9" name="deptno" coordinate="[1,8,0],[1,16,0]"/>
        <column id="10" name="dname" coordinate="[2,8,0],[2,15,0]"/>
    </resultset>
    <relationship id="1" type="fdd" effectType="select">
        <target id="9" column="deptno" parent_id="8" parent_name="RS-1" coordinate="[1,8,0],[1,16,0]"/>
        <source id="5" column="deptno" parent_id="4" parent_name="dept" parent_alias="d" coordinate="[1,8,0],[1,16,0]"/>
    </relationship>
    <relationship id="2" type="fdd" effectType="select">
        <target id="10" column="dname" parent_id="8" parent_name="RS-1" coordinate="[2,8,0],[2,15,0]"/>
        <source id="6" column="dname" parent_id="4" parent_name="dept" parent_alias="d" coordinate="[2,8,0],[2,15,0]"/>
    </relationship>
</dlineage>

打印结果是xml格式,当然也可以用参数 /json 指定输出 为json格式方便代码处理

上述xml中有三种类型,table 表示源表,而select_list 表示查询列表即结果集,fdd 是表示目标实体的数据来自源实体的一种关系
以上就是最简单的应用
具体的学习还带研读源码和查看项目doc文件夹下pdf

2. 参数翻译

加粗为个人觉得常用参数

/f:可选,SQL文件的完整路径。
/d:可选,目录的完整路径包括SQL文件。
/j: 可选, 返回结果包含join关系.

/s:可选,简单输出,忽略中间结果。
/i:可选,与/s选项相同,但将保留SQL函数生成的结果集。
/text:可选,此选项仅在使用/s时有效,以文本模式输出列依赖项。

/if:可选,保留所有中间结果集,但删除SQL函数生成的结果集
/ic:可选,忽略输出中的坐标。
/lof:选项,将孤立列链接到第一个表。
/traceView:可选,只输出源表和视图的名称,忽略所有中间数据。

/json:可选,打印json格式输出。
/stat:可选,输出分析统计信息。
/tableLineage:可选的输出表级沿袭。 **
/tableLineage/csv:可选,以csv格式输出选项卡级沿袭。 **

/t,设置数据库类型。默认值为oracle
/o:可选,将输出流写入指定文件。
/log:可选,生成数据流。日志文件来记录信息。

/h:可选,指定jdbc连接的主机
/P:可选,指定jdbc连接的端口,注意大写字母P。
/u:可选,指定jdbc连接的用户名。
/p:可选,指定jdbc连接的密码,注意它是小写的p。
/db:可选,指定jdbc连接的数据库。

/schema:可选,指定用于提取元数据的模式。
/metadata:可选,将数据库元数据信息输出到文件元数据。json。
/transform:可选,输出关系转换代码。 没大用
/coor:可选,输出关系变换坐标,但不输出代码。 没大用
/defaultDatabase:可选,指定默认架构。
/defaultSchema:可选,指定默认架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/82854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C# 基础精讲】LINQ 基础

LINQ&#xff08;Language Integrated Query&#xff09;是一项强大的C#语言特性&#xff0c;它使数据查询和操作变得更加简洁、灵活和可读性强。通过使用LINQ&#xff0c;您可以使用类似SQL的语法来查询各种数据源&#xff0c;如集合、数组、数据库等。本文将介绍LINQ的基础概…

(排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

❓ 剑指 Offer 45. 把数组排成最小的数 难度&#xff1a;中等 输入一个非负整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459”…

PV3D: A 3D GENERATIVE MODEL FOR PORTRAITVIDEO GENERATION 【2023 ICLR】

ICLR&#xff1a;International Conference on Learning Representations CCF-A 国际表征学习大会&#xff1a;深度学习的顶级会议 生成对抗网络(GANs)的最新进展已经证明了生成令人惊叹的逼真肖像图像的能力。虽然之前的一些工作已经将这种图像gan应用于无条件的2D人像视频生…

[K8s]问题描述:k8s拉起来的容器少了cuda的so文件

问题解决&#xff1a;需要设置Runtimes&#xff1a;nvidia的同时设置Default Runtimenvidia

Java请求Http接口-OkHttp(超详细-附带工具类)

简介&#xff1a;OkHttp是一个默认有效的HTTP客户端&#xff0c;有效地执行HTTP可以加快您的负载并节省带宽&#xff0c;如果您的服务有多个IP地址&#xff0c;如果第一次连接失败&#xff0c;OkHttp将尝试备用地址。这对于IPv4 IPv6和冗余数据中心中托管的服务是必需的。OkHt…

Win11游戏高性能模式怎么开

1、点击桌面任务栏上的“开始”图标&#xff0c;在打开的应用中&#xff0c;点击“设置”&#xff1b; 2、“设置”窗口&#xff0c;左侧找到“游戏”选项&#xff0c;在右侧的选项中&#xff0c;找到并点击打开“游戏模式”&#xff1b; 3、打开的“游戏模式”中&#xff0c;找…

搭载KaihongOS的工业平板、机器人、无人机等产品通过3.2版本兼容性测评,持续繁荣OpenHarmony生态

近日&#xff0c;搭载深圳开鸿数字产业发展有限公司&#xff08;简称“深开鸿”&#xff09;KaihongOS软件发行版的工业平板、机器人、无人机等商用产品均通过OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;3.2 Release版本兼容性测评&#xff0c;获颁O…

【Vue】yarn 安装包时权限不足或者文件夹被占用导致安装失败

在一个 Vue3 项目中&#xff0c;用 yarn 安装 Vue 插件或者 Vue-Router 时&#xff0c;出现同样的 error &#xff0c;如下&#xff1a; An unexpected error occurred: “EPERM: operation not permitted, unlink ‘C:\Codefield\项目\yupao-frontend\node_modules\esbuild\w…

c#设计模式-结构型模式 之 代理模式

前言 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接 引用目标对象&#xff0c;代理对象作为访问对象和目标对象之间的中介。在学习代理模式的时候&#xff0c;可以去了解一下Aop切面编程AOP切面编程_aop编程…

python高级基础

文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量&#xff0c;因为如果声明全局变量&#xff0c;那在后面就有可能会修改 在闭包中的…

下载安装并使用小乌龟TortoiseGit

1、下载TortoiseGit安装包 官网&#xff1a;Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 2、小乌龟汉化包 在官网的下面就有官方提供的下载包 3、安装

android 的Thread类

Thread类 位于java.lang包下的Thread类是非常重要的线程类&#xff0c;它实现了Runnable接口&#xff0c;学习Thread类包括这些相关知识&#xff1a;线程的几种状态、上下文切换&#xff0c;Thread类中的方法的具体使用。 线程&#xff1a;比进程更小的执行单元&#xff0c;每…

消息中间件-kafka实战-第六章-kafka加线程池多线程消费

目录 参考架构图延时队列 参考 头条面试&#xff1a;当线上Kafka集群有大量消息积压时&#xff0c;如何利用多线程消费解决消费积压问题 架构图 延时队列

vulnhub靶机DarkHole_2

靶机下载地址&#xff1a;DarkHole: 2 ~ VulnHub 靶机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.145 扫描服务 nmap -sV -sT -O -p22,80 192.168.21.145 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.145 这里有git源码泄露 git clone mirrors…

网络编程基础(1)

目录 网络编程解决是跨主机的进程间通讯 1、网络 2、互联网 3、ip地址 &#xff08;1&#xff09;ipv4: &#xff08;2&#xff09;ipV6:1 &#xff08;3&#xff09;IP地址的组成&#xff1a; (4)Linux查看IP地址&#xff1a;ifconfig 4、mac地址 5、ping Ip地址 6…

Vue2-TodoList案例(初级 后面会进行完善)

&#x1f954;&#xff1a;觉得累是因为在走上坡路 本案例是初级案例&#xff0c;在下面几节会进行完善——Vue.js TodoList案例 组件化编码流程&#xff08;通用&#xff09;整体思路1、分析结构2、拆html和css3、初始化列表4、实现添加列表功能5、实现勾选功能6、实现删除功能…

第三讲:ApplicationContext的实现

这里写目录标题 一、前文回顾二、基础代码准备三、基于XML的ClassPathXmlApplicationContext1. 创建spring-config.xml配置文件2. 指定配置文件的路径 四、基于注解的AnnotationConfigApplicationContext1. 新增一个配置类2.指定配置类信息 五、基于注解和ServletWebServer应用…

Endnote在线链接pubmed的时候报错12057:不能连接到吊销服务器,或者未能获得最终响应?

​嘎嘎嘎问题如下&#xff1a; 解决办法&#xff1a; 打开控制面板: ok,完了之后再去EndNote就不会出现此问题了。&#xff08;有的可能需要重启电脑&#xff0c;重启EndNote才会生效&#xff09;

Docker 网络之 ipvlan 和 macvlan

Docker ipvlan 和 macvlan 引言 本文讲解了Docker 网络模式中的 ipvlan 和 macvlan 的区别,目前自己在生产环境中使用的 ipvlan 模式非常问题.也解决了实际业务问题. IPvlan L2 mode example ipvlan 无需网卡混杂模式 , 运行如下命令后可以生成一个 vlan 子接口 , 会和主网卡…

Ajax介绍

1.与服务器进行数据交换&#xff1a;通过 Ajax 可以给服务器发送请求&#xff0c;并获取服务器响应的数据。 2.异步交互&#xff1a;可以在 不重新加载整个页面 的情况下&#xff0c;与服务器交换数据并 更新部分网页 的技术&#xff0c;如&#xff1a; 搜索联想、用户名是否可…