马哈鱼数据血缘工具背后的项目: 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:可选,指定默认架构。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4G电力摄像机如何通过AT指令对接到国网平台呢?

对于针对电网安全运行的迫切需求&#xff0c;”输电线路智能可视化监测系统”被研发并应用&#xff0c;通过视频监控和AI智能分析技术&#xff0c;实现了对输电线路远程视频在线监测、外力破坏智能分析&#xff0c;可实现对输电线路的全天候实时监测和预警&#xff0c;有效保障…

阿里云ECS服务器企业级和共享型介绍_企业级常见问题解答FAQ

阿里云企业级服务器是什么&#xff1f;企业级和共享型有什么区别&#xff1f;企业级服务器具有独享且稳定的计算、存储、网络资源&#xff0c;如ECS计算型c6、通用型g8等都是企业级实例&#xff0c;阿里云百科分享什么是企业级云服务器、企业级实例的优势、企业级和共享型云服务…

vue3跳转页面后 海康监控实例不销毁

第一个页面是这样的 跳转到新的页面 只有海康的监控没有消失 使用控制台审查元素也审查不到 解决方法&#xff1a;在vue3的销毁周期把海康的监控销毁掉 import { reactive, onDeactivated} from "vue"; const state reactive({oWebControl: null as any, //监控绑…

kafka晋升之路-理论+场景

kafka晋升之路 一&#xff1a;故事背景二&#xff1a;核心概念2.1 系统架构2.2 生产者&#xff08;Producer&#xff09;2.2.1 生产者分区2.2.2 生产者分区策略 2.3 经纪人&#xff08;Broker&#xff09;2.3.1 主题&#xff08;Topic&#xff09;2.3.2 分区&#xff08;Partit…

攻防世界-warmup

原题解题思路 只有一张图片&#xff0c;就查看源代码&#xff0c;有一个source.php。 查看source.php&#xff0c;白名单中还有一个hint.php。 hint.php告诉我们flag的位置ffffllllaaaagggg 但是直接跳转是没用的&#xff0c;构造payload。 http://61.147.171.105:55725/sourc…

linux部署kafka3.5.1(单机)

一、下载jdk17 kafka3.x版本需要jdk11以上版本才能更好的兼容&#xff0c;jdk11、jdk17都是LTS长期维护版本&#xff0c;而且jdk17支持springboot3.x,所以我选择了openjdk17。 下载地址: Archived OpenJDK GA Releaseshttps://jdk.java.net/archive/ 二、上传jdk安装包解压 …

Netty为什么高效,为什么这么受欢迎?

文章目录 前言Netty 解决的问题简化网络编程粘包和拆包 高性能的设计多线程调度零拷贝 总结 前言 上篇文章通过 Java NIO 的处理流程与 Netty 的总体流程比较&#xff0c;并结合 Netty 的源码&#xff0c;可以更加清晰地理解Netty。本文将结合源码详细解析Netty的高效和强大功…

spring源码分析bean的生命周期(下)

doGetBean()执行过程 createBean()执行过程 一、DependsOn注解 spring创建对象之前会判断类上是否加了DependsOn注解&#xff0c;加了会遍历然后会添加到一个map中&#xff0c;spring会先创建DependsOn注解指定的类 二、spring类加载器 在合并BeanDefinition&#xff0c;确定…

【校招VIP】java语言类和对象之map、set集合

考点介绍&#xff1a; map、set集合相关内容是校招面试的高频考点之一。 map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索效率与其具体的实例化子类有关系。 『java语言类和对象之map、set集合』相关题目及解析内容可点击文章末尾链接查看&#xff01; …

网络通信原理传输层TCP三次建立连接(第四十八课)

ACK :确认号 。 是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。确认号X+1SEQ:序号字段。 TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的…

20W IP网络吸顶喇叭 POE供电吸顶喇叭

SV-29852T 20W IP网络吸顶喇叭产品简介 产品用途&#xff1a; ◆室内豪华型吸顶喇叭一体化网络音频解码扬声器&#xff0c;用于广播分区音频解码、声音还原作用 ◆应用场地如火车站、地铁、教堂、工厂、仓库、公园停车场等&#xff1b;室内使用效果均佳。 产品特点&#xff…

ARM体系结构学习笔记:过程调用标准AAPC、 ARM32调用约定、ARM64调用约定

参数传递的本质: 将上层函数变量复制一份, 传给下层函数. 过程调用标准AAPC(Arm Architecture Procedure Call) 有了标准, 才能够进行C调用汇编或者汇编调用C ARM32调用约定 参数是不同位数传参情况, 额外的参数被caller进行入栈, callee进行出栈 寄存器传参 寄存器返回 汇编…