首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【开源项目推荐】通用SQL数据血缘分析工具——Sqllineage

【开源项目推荐】通用SQL数据血缘分析工具——Sqllineage

作者头像
大数据流动
发布于 2023-12-06 07:15:38
发布于 2023-12-06 07:15:38
5.3K00
代码可运行
举报
文章被收录于专栏:实时计算实时计算
运行总次数:0
代码可运行

大家好,我是独孤风,从本周开始,争取每周为大家带来一个优秀的开源项目推荐。

开源项目不仅促进了技术的发展和普及,还为全球范围内的开发者和用户社区建立了一个共享知识、协作和创新的平台。站在巨人的肩膀上才能看的更远,我们平时也应该多多关注开源项目,不仅学习其丰富的知识,也要找机会为开源事业做出自己的贡献。

话不多说,今天为大家推荐的开源项目名为SQLLineage。

SQLLineage 是一个使用 Python 开发的 SQL 血缘分析工具。它专注于提供 SQL 查询的血缘关系和依赖关系的深入分析。

Github首页地址为: https://github.com/reata/sqllineage

目前标星891,最新版本是v1.4.8,主要开发语言为Python 。

一、概述

简单来说SQLLineage 是一SQL血缘分析工具,而由于SQL在数据分析中的通用性,SQLLineage 是一数据血缘分析工具。

数据血缘(Data Lineage),也有翻译为数据沿袭,都数据血缘(Data Lineage)是指追踪数据从其源头到目的地的路径,包括它在整个数据生命周期中的流动、转换和使用情况。数据血缘的核心目的是提供对数据流动和变化的完整可视化,从而帮助组织理解数据的来源、经过的处理步骤以及最终如何被利用。

数据血缘是元数据管理的重要组成部分,通过收集获取元数据可以分析生成数据血缘,这样可以增加数据透明度,便于审计和合规,也就是说数据血缘在数据安全,数据管理领域意义重大。

而SQLLineage可以通过多SQL的分析来快速的了解血缘的来龙去脉,所以说是一个数据血缘的分析神器。

我们假设有这样的一个SQL。

通过SQLLineage可以快速的分析出表级别的血缘。

也可以分析出列级别的血缘。

这样的话,数据的前后关系就一目了然了。

同时SQLLineage还支持多种SQL语法的解析器,这不管是我们直接拿来用,还是分析其代码都非常的有帮助。

二、主要特性

SQLLineage 还提供了如下的丰富的功能支持。

简化 SQL 解析: SQLLineage 提供了一个简单易用的接口来理解 SQL 查询的源和目标表,无需担心复杂的 SQL 解析过程。

高效的解析库: 使用 sqlfluff 和 sqlparse 等库来解析 SQL 命令,分析 AST,并使用 networkx 图形库存储血缘信息。

易于安装和使用: 可以通过 PyPI 快速安装,并通过简单的命令行操作来解析 SQL 查询。

一些更高级的用法:

  • 处理多个 SQL 语句: 可以分析包含多个 SQL 语句的查询,识别中间表。
  • 详细血缘结果: 提供详细的血缘分析结果,每个 SQL 语句的血缘信息都可以显示出来。
  • 方言意识: 支持不同的 SQL 方言,以适应不同的关键词和语法。
  • 列级血缘: 支持列级血缘分析,展示所有列的血缘路径。
  • 血缘可视化: 支持血缘结果的图形可视化,可以在浏览器中查看表级和列级血缘的有向无环图(DAG)表示。

三、安装部署与使用

SQLLineage 由Python开发而成,所以可以非常方便的使用Python相关组件进行安装。

安裝

可以直接使用pip安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install sqllineage

也可以通过github来安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install git+https://github.com/reata/sqllineage.git

分析

有两种方式,去解析sql。可以用-e直接分析一个sql语句,这里分析出了源表和目标表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sqllineage -e "insert into db1.table1 select * from db2.table2"
Statements(#): 1
Source Tables:
    db2.table2
Target Tables:
    db1.table1

也可以用-f来直接分析一个sql文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sqllineage -f foo.sql
Statements(#): 1
Source Tables:
    db1.table_foo
    db1.table_bar
Target Tables:
    db2.table_baz

对于连续的两个sql也可以进行分析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sqllineage -e "insert into db1.table1 select * from db2.table2; insert into db3.table3 select * from db1.table1;"
Statements(#): 2
Source Tables:
    db2.table2
Target Tables:
    db3.table3
Intermediate Tables:
    db1.table1

可以用-v指令来看每一个sql的执行结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sqllineage -v -e "insert into db1.table1 select * from db2.table2; insert into db3.table3 select * from db1.table1;"
Statement #1: insert into db1.table1 select * from db2.table2;
    table read: [Table: db2.table2]
    table write: [Table: db1.table1]
    table cte: []
    table rename: []
    table drop: []
Statement #2: insert into db3.table3 select * from db1.table1;
    table read: [Table: db1.table1]
    table write: [Table: db3.table3]
    table cte: []
    table rename: []
    table drop: []
==========
Summary:
Statements(#): 2
Source Tables:
    db2.table2
Target Tables:
    db3.table3
Intermediate Tables:
    db1.table1

指定分析器

下面的例子,可以使用 --dialect=postgres关键字来指定要使用的分析引擎:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sqllineage -e "insert into analyze select * from foo;"
Statements(#): 1
Source Tables:
    <default>.foo
Target Tables:
    
$ sqllineage -e "insert into analyze select * from foo;" --dialect=ansi
Statements(#): 1
Source Tables:
    <default>.foo
Target Tables:
    <default>.analyze

$ sqllineage -e "insert into analyze select * from foo;" --dialect=postgres
...
sqllineage.exceptions.InvalidSyntaxException: This SQL statement is unparsable, please check potential syntax error for SQL

提示:用这个命令sqllineage --dialects 看看都有哪些分析器。

列级血缘

可以分析列级血缘,比如下面的sql。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT OVERWRITE TABLE foo
SELECT a.col1,
       b.col1     AS col2,
       c.col3_sum AS col3,
       col4,
       d.*
FROM bar a
         JOIN baz b
              ON a.id = b.bar_id
         LEFT JOIN (SELECT bar_id, sum(col3) AS col3_sum
                    FROM qux
                    GROUP BY bar_id) c
                   ON a.id = sq.bar_id
         CROSS JOIN quux d;

INSERT OVERWRITE TABLE corge
SELECT a.col1,
       a.col2 + b.col2 AS col2
FROM foo a
         LEFT JOIN grault b
              ON a.col1 = b.col1;

可以使用-l关键字来进行列级血缘分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sqllineage -f foo.sql -l column
<default>.corge.col1 <- <default>.foo.col1 <- <default>.bar.col1
<default>.corge.col2 <- <default>.foo.col2 <- <default>.baz.col1
<default>.corge.col2 <- <default>.grault.col2
<default>.foo.* <- <default>.quux.*
<default>.foo.col3 <- c.col3_sum <- <default>.qux.col3
<default>.foo.col4 <- col4

可视化

最后可以用下面的指令来启动一个web浏览器,进行血缘展示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sqllineage -g -f foo.sql

赶紧体验一下吧~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
物联网在应对新冠肺炎疫情方面的作用日益增强
The-Growing-Role-Of-IoT-In-COVID-19-Response-1068x656-1.jpg
用户4122690
2020/06/09
5110
物联网在应对新冠肺炎疫情方面的作用日益增强
AI“黑头盔”亮相成都,警察街头2分钟筛查上百人体温!
新冠病毒已进入全球传播阶段,截止发稿,中国累计确诊已超80000例,国外累计确诊已超14000例,形势严峻。
新智元
2020/03/06
5450
AI“黑头盔”亮相成都,警察街头2分钟筛查上百人体温!
AI对抗冠状病毒爆发的11种方式
随着COVID-19到达60多个国家/地区,全球病例超过95,500,死亡人数超过3,000,全世界正在尽最大努力避免这场灾难。尽管世卫组织和联合国等组织正在释放资金以促进研究,但许多组织都在寻求人工智能来减缓危机。全世界的科学界都在为21世纪的问题找到21世纪的解决方案。
DrugAI
2021/02/01
3730
全国3000多名医护人员感染新冠,医疗机器人与智能技术提供解决方案
本文通过研究医护人员受感染的途径,找到医疗机器人针对性的解决方法和思路,并总结相关医疗发展的一些趋势和特征。
数据派THU
2020/02/27
7020
全国3000多名医护人员感染新冠,医疗机器人与智能技术提供解决方案
在检测和治疗冠状病毒的战斗中AI扮演的作用
COVID-19冠状病毒正在全球迅速蔓延,对社区构成威胁,令金融市场感到恐慌,并在许多情况下迫使国家流行病应对小组迅速更新和实施多年前制定的计划。当这些研究人员竞相将当今的技术应用于检测和对抗病毒时,许多人都在讨论如何——甚至是实地测试——可以用来缓解这场全球危机的人工智能策略。
GPUS Lady
2020/03/09
5370
在检测和治疗冠状病毒的战斗中AI扮演的作用
罕见“川崎病”重现美国,164名儿童感染,《柳叶刀》称与Covid-19直接相关
美国15个州的医生报告说,至少有164名儿童患上了一种罕见的炎症性疾病,症状包括发烧和炎症,可以影响包括心脏在内的器官。其中一些儿童的Covid-19检测呈阳性或有该病毒的抗体,其中三人已经死亡。
大数据文摘
2020/05/25
3830
罕见“川崎病”重现美国,164名儿童感染,《柳叶刀》称与Covid-19直接相关
机器之心「智能战疫日报」:跟踪AI应用动态,对接AI抗疫资源
机器之心最新推出「智能战疫日报」,围绕「人工智能直接应用于抗击疫情」和「人工智能助力产业应对非常时期各项困难」两大主题,提供相关政策、人工智能应用和解决方案、行业洞察、研究进展等每日动态,便于大家关注趋势变化,辅助决策;同时发布抗击疫情需求、产业需求或难题、人工智能资源等信息,促进产业与技术、场景与资源之间的高效合作。文末识别二维码即可开启订阅。
机器之心
2020/02/24
7690
闻不出猫砂臭味?你可能得了新冠肺炎!英美鼻科学会呼吁嗅觉失调者在家隔离
母亲闻不到婴儿的尿布,鼻子灵敏的厨师闻不出咖喱或大蒜的味道,还有人表示他们无法闻到洗发水的香味或猫砂的臭味。
大数据文摘
2020/04/01
4960
闻不出猫砂臭味?你可能得了新冠肺炎!英美鼻科学会呼吁嗅觉失调者在家隔离
冒着疫情抢修网络,却被反5G愚民们辱骂“你在杀人”,英国电信工程师自述魔幻经历
自从疫情期间英国封锁以来,5G阴谋论从英国开始逐渐泛滥,不仅荷兰、爱尔兰等欧洲国家基站遭殃,美国的5G基站也遭遇大规模破坏。
大数据文摘
2020/06/17
4140
冒着疫情抢修网络,却被反5G愚民们辱骂“你在杀人”,英国电信工程师自述魔幻经历
AI将帮助我们应对下次流行病,但不是这次!| MIT科技评论
AI 最先发现疫情的到来,至少故事是这么说的。12月30日,人工智能公司 BlueDot 利用机器学习监测到全球传染病的爆发后,向其客户,包括各国政府、医院和企业,发出预警称中国武汉的肺炎病例出现了不寻常的激增。九天后,世界卫生组织才正式宣布我们大家都知道的 Covid-19。
数据科学人工智能
2022/03/31
3520
AI将帮助我们应对下次流行病,但不是这次!| MIT科技评论
原来疫情发生后,全球加密社区为了抗击冠状病毒做了这么多事情!
致命的冠状病毒仍以前所未有的速度出现在世界各地,许多区块链和加密行业的重要成员都在关注全球的呼声,并迅速采取了有意义的行动——无论是直接参与相关的研究还是通过捐赠资金或资源材料,如口罩,消毒设备等。
区块链大本营
2020/04/16
4610
新冠肺炎获正式命名COVID-19,钟南山「希望」疫情4月左右结束,回应「最长潜伏期24天」为个例
昨晚,世界卫生组织(WHO)召开新一轮会议,探讨有关新冠病毒疫情事宜。会上对新冠病毒肺炎疾病进行了命名,为「COVID-19」,即 coronavirus disease 2019 的缩写。需要注意的是,这是对疾病而非病毒的命名。
机器之心
2020/02/23
5640
新冠肺炎获正式命名COVID-19,钟南山「希望」疫情4月左右结束,回应「最长潜伏期24天」为个例
谷歌官博晒疫情成绩单,BAT:Naive,我们才接地气
内容提要:疫情发生以来,众多科技公司纷纷加入这场战「疫」中,为疫情防控的各方面提供了有力支撑。他们所实行的多项举措,已经为现阶段很多人的生活提供了便利。
HyperAI超神经
2020/03/12
6430
谷歌官博晒疫情成绩单,BAT:Naive,我们才接地气
这15个医疗机器人,可能会让医生失业
镁客网导读:随着AI+医疗的进一步融合、深入,适用于细分医疗领域的AI辅助技术也在不断加强。服务机器人多个应用场景中,医疗必然是最重要之一。这不是简单的科技辅助,而是成为治疗环节的一部分,它们的角色开始转为“医组成员”,它们会测量患者的脉搏、扫描生命体征、阅读病例记录甚至进行手术。
镁客网
2018/10/18
5340
无人机巡逻喊话、疫情排查、送药消毒,抗疫战中机器人化身钢铁战士!
这场抗疫战争似乎格外漫长,但回头细数一下才发现,自疫情爆发以来,也不过半月之久。在接下来的几个半月中,抗疫战仍将继续,各方力量也要绷紧神经继续战斗。
CDA数据分析师
2020/02/21
7810
无人机巡逻喊话、疫情排查、送药消毒,抗疫战中机器人化身钢铁战士!
波士顿动力送狗抗疫:头顶iPad,背装对讲机,说是减少医患接触,但性价比真的OK吗?
波士顿动力表示,新冠病毒大流行之后,他们经常被医院问到,机器人能否帮助医护人员减少接触新冠病毒的风险。
量子位
2020/04/24
5160
疫情过后,人工智能和机器人会迎来哪些机遇?
新型冠状肺炎已经持续一段时间了,在这期间,大多数人都体验了“给你吃喝、手机和Wifi,但只能待在一间房子里,你能待多久?”这个问题。不知道那些回答“我能待一辈子”的人心中是否有了新的答案。
博士的沙漏
2020/09/03
8270
疫情过后,人工智能和机器人会迎来哪些机遇?
科技抗疫有门道,AI建模和分析背后的加速键
【导语】一场席卷全球的新冠疫情牵动着全球人们的心。与过去不同,此次抗疫中,科技发挥了不可低估的力量。尤其是AI技术,无论是影像分析,还是疫情防控,都有着AI技术的影子。从数据采集到训练、应用,AI技术应用的速度在抗疫中至关重要,今年抗疫中诸多AI应用的快速实现,背后的“加速键”倒是什么?请看下文。
大数据在线
2020/06/04
3610
新冠病毒侵入人体全过程!从脚趾到大脑,科学家追踪到病毒对身体的巨大摧残
在杜兰大学医学院,肺病和重症监护医生Joshua Denson发现,一天之内,在约20位重症监护病人中,有2名患者出现癫痫症状,其余不少患者出现呼吸衰竭的症状,还有小部分患者的肾脏功能急剧衰减。
大数据文摘
2020/05/19
7380
新冠病毒侵入人体全过程!从脚趾到大脑,科学家追踪到病毒对身体的巨大摧残
Sience子刊 新研究揭示:COVID-19病毒影响人体线粒体功能,或成治疗新途径
自SARS-CoV-2病毒引发的COVID-19大流行暴发以来,研究人员一直致力于探索为何该病毒相较于其他冠状病毒,会引发如此严重和长期的影响。近期,费城儿童医院(CHOP)团队和COVID-19国际研究小组(COV-IRT)合作发现,新冠病毒对线粒体(人体细胞的能量工厂)基因产生不良影响,进而导致肺部之外的多器官发生功能障碍。该研究成果于2023年8月9日发表于《Science Translational Medicine》(IF2022=17.1)杂志,开创了治疗COVID-19的新思路。
生信宝典
2023/08/30
3960
Sience子刊 新研究揭示:COVID-19病毒影响人体线粒体功能,或成治疗新途径
推荐阅读
物联网在应对新冠肺炎疫情方面的作用日益增强
5110
AI“黑头盔”亮相成都,警察街头2分钟筛查上百人体温!
5450
AI对抗冠状病毒爆发的11种方式
3730
全国3000多名医护人员感染新冠,医疗机器人与智能技术提供解决方案
7020
在检测和治疗冠状病毒的战斗中AI扮演的作用
5370
罕见“川崎病”重现美国,164名儿童感染,《柳叶刀》称与Covid-19直接相关
3830
机器之心「智能战疫日报」:跟踪AI应用动态,对接AI抗疫资源
7690
闻不出猫砂臭味?你可能得了新冠肺炎!英美鼻科学会呼吁嗅觉失调者在家隔离
4960
冒着疫情抢修网络,却被反5G愚民们辱骂“你在杀人”,英国电信工程师自述魔幻经历
4140
AI将帮助我们应对下次流行病,但不是这次!| MIT科技评论
3520
原来疫情发生后,全球加密社区为了抗击冠状病毒做了这么多事情!
4610
新冠肺炎获正式命名COVID-19,钟南山「希望」疫情4月左右结束,回应「最长潜伏期24天」为个例
5640
谷歌官博晒疫情成绩单,BAT:Naive,我们才接地气
6430
这15个医疗机器人,可能会让医生失业
5340
无人机巡逻喊话、疫情排查、送药消毒,抗疫战中机器人化身钢铁战士!
7810
波士顿动力送狗抗疫:头顶iPad,背装对讲机,说是减少医患接触,但性价比真的OK吗?
5160
疫情过后,人工智能和机器人会迎来哪些机遇?
8270
科技抗疫有门道,AI建模和分析背后的加速键
3610
新冠病毒侵入人体全过程!从脚趾到大脑,科学家追踪到病毒对身体的巨大摧残
7380
Sience子刊 新研究揭示:COVID-19病毒影响人体线粒体功能,或成治疗新途径
3960
相关推荐
物联网在应对新冠肺炎疫情方面的作用日益增强
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档