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:可选,指定默认架构。