解析CSV文件中SQL语句的数据血缘关系

2021/09/03 马哈鱼 教程 共 1975 字,约 6 分钟

马哈鱼数据血缘分析器 作为一个分析数据血缘关系工具,通过对 SQL 脚本或者其他包含 SQL 的格式文件进行分析,得到 data lineage。目前支持获取 SQL 的方式:

  • 通过在线递交 SQL 文本。
  • 连接指定数据库获取 metadata。
  • 上传本地文件目录
  • 从指定 git 仓库获取 SQL 脚本

对于文件格式,目前支持 SQL 脚本,包含 metadata 的 JSON 文件,特定格式的 CSV 文件以及 spark 的 python 脚本文件,本文主要介绍 SQLFlow 对于 CSV 文件的分析。

CSV 文件的结构

如果 CSV 文件中某一列数据为 SQL 脚本时,就可以把这个 CSV 文件递交给马哈鱼,马哈鱼可以对这种格式的 CSV 文件处理分析其中的 SQL 脚本,并给出数据血缘关系。

同时马哈鱼还可以分析 CSV 文件中其他列的数据,目前马哈鱼可以处理 CSV 文件中包含的以下这些列。

database,Schema,ObjectType,ObjectName,ObjectCode,Notes
含义
  • database:SQL 脚本所在的数据库
  • schema:SQL 脚本所在的模式
  • objectType:SQL 脚本的类型,例如:存储过程,视图或方法等
  • objectName:SQL 脚本的名称
  • objectCode:SQL 脚本
  • Notes:注释

马哈鱼所处理的 CSV 文件必须包含 SQL 脚本的列 ,其他列的数据都是为了马哈鱼能够更精准的分析血缘关系,如果不存在就默认分析为 DEFAULT

设置处理列序号

了解了马哈鱼所支持解析的 CSV 文件结构之后,我们知道马哈鱼默认支持 database,Schema,ObjectType,ObjectName,ObjectCode,Notes这些列的数据,并且马哈鱼 所处理的 CSV 文件必须包含 SQL 脚本的列,但是在实际情况中,CSV 文件中的列名可能不同,并且还穿插着其他的一些无关列数据,所以在递交 CSV 的时候需要设置马哈鱼所需数据列在 CSV 文件中的位置(从 1 开始递增的序号),如果某一列数据不存在则其位置就设置为 0,这样 SQLFlow 才能准确的拿取到这个列在 CSV 文件中的数据然后解析。

例如有这样一个 CSV 文件结构:

catalogschematypecode
database1schema1procedure“create procedure smart-meter-development.SMF_STG.PRC_REGISTER_READS_FLAT_TO_STG(IN register_batch_id INT64) BEGIN # STEP 1 # Declare variables –DECLARE date_to_query DATE; –DECLARE hour_to_query INT64; DECLARE v_insert_time DATETIME; ….”

从左到右的列序号为 1,2,3,4,并且可以看出 catalog 是 database,type 是 objectType,code 是 objectCode,而 objectName 和 notes 这两列不存在。于是在递交任务的时候,就需要设置 database 的位置为 1,schema 位置为 2,objectType 位置为 3,objectType 为 4,objectName 位置为 0,objectCode 为 4,notes 为 0。

objectCode 列的 SQL 脚本

objectCode 列中的 SQL 脚本一般会跨多行,所以需要一个封闭字符(enclosed char)把这个跨行的 SQL 脚本包围起来。在默认情况下, 这些 SQL 脚本被认为是用双引号 "围起来的,但是如果是用其它字符,需要通过参数 objectCodeEncloseChar 来告诉马哈鱼。

如果SQL 脚本中本来就有双引号,那么需要用转义符,放在这个双引号前。通过参数 objectCodeEscapeChar 来指定转义符号,默认为双引号。

其它列的封闭字符

默认情况下,马哈鱼不认为 objectCode 列以为的其它列也被封闭字符围起来。但马哈鱼会尝试,如果一个列的内容以 objectCodeEncloseChar 开始,则自动去掉该列值首尾的 objectCodeEncloseChar

下面演示马哈鱼 中如何上传此 CSV 文件结构,并设置各个参数。

操作流程

  • 进入马哈鱼平台
  • 选择左侧第二个 Job List 菜单,然后点击上传文件,选择数据库和要分析的 CSV 文件。

  • 勾选 CSV 文件选项,并且设置默认的处理列序号和转义符号,如图:
  • 确定后得到马哈鱼 的分析结果

以上就是对马哈鱼 的分析 CSV 文件功能的介绍,后面我会继续介绍马哈鱼的其他的功能,并且使用更复杂的 SQL 进行分析,更深入的了解马哈鱼的功能和运行机制。

参考

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

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

文档信息

Search

    Table of Contents