开发了一个 SQL 血缘解析的网站,可视化查询字段级别和表级别的血缘关系 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sanbuliuxin
V2EX    分享创造

开发了一个 SQL 血缘解析的网站,可视化查询字段级别和表级别的血缘关系

  •  
      sanbuliuxin 2024-01-09 14:43:11 +08:00 2574 次点击
    这是一个创建于 675 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有兴趣的人,可以私我 SQL 帮忙生成可视化文件(单文件 HTML ),同时,寻求商业资源,例如私有化部署或者二次开发

    邮箱: [email protected]

    以下是同一段 SQL 生成的 4 张血缘可视化截图

    字段血缘

    1.png

    带中间表的字段血缘

    2.png

    表血缘

    3.png

    带中间表的血缘

    4.png

    第 1 条附言    2024-03-05 19:14:58 +08:00
    最近抽空上线了,欢迎使用。 没有任何门槛,免费无广告,目前只展示字段间的血缘关系,后续会放出更多功能:表级别血缘、桑基图等

    网站地址 : https://www.thinktech.top/





    17 条回复    2024-01-19 08:39:57 +08:00
    sanbuliuxin
        1
    sanbuliuxin  
    OP
       2024-01-09 14:58:07 +08:00
    提出你的 SQL ,我可以生成截图回复你,或者留下邮箱发送生成的文件。
    举例:insert into c select a from b


    https://pic.ziyuan.wang/user/guest/2024/01/1704783467353_ed04ac8f9ccd6.png
    googleplus
        2
    googleplus  
       2024-01-09 16:30:34 +08:00
    为啥不先部署一个 saas 让我们体验下
    jxxz
        3
    jxxz  
       2024-01-09 16:41:13 +08:00
    ..
    darksword21
        4
    darksword21  
    PRO
       2024-01-09 17:21:58 +08:00   1
    我还以为解析血源诅咒。。
    sanbuliuxin
        5
    sanbuliuxin  
    OP
       2024-01-10 10:16:05 +08:00
    @googleplus 没有 saas 资源,泪目
    sivacohan
        6
    sivacohan  
    PRO
       2024-01-10 11:11:05 +08:00
    insert into tbl_c select a, sum(b) from tbl_a group by a
    proxychains
        7
    proxychains  
       2024-01-10 13:42:54 +08:00
    根据表定义的外键来扫描的? 还是 sql 语句中 join 或查询关系?
    luotuoxiaohui
        8
    luotuoxiaohui  
       2024-01-10 22:09:45 +08:00 via Android
    跟小米的那个一样?
    sanbuliuxin
        9
    sanbuliuxin  
    OP
       2024-01-11 10:39:53 +08:00
    @proxychains 是使用 Antlr 语法树解析,跟是不是外键和 join 没有关系
    sanbuliuxin
        10
    sanbuliuxin  
    OP
       2024-01-11 10:40:03 +08:00
    @luotuoxiaohui 哪个?
    sanbuliuxin
        11
    sanbuliuxin  
    OP
       2024-01-11 10:43:41 +08:00
    @sivacohan [![1704940991849.png]( https://pic.ziyuan.wang/user/guest/2024/01/1704940991849_82cb52dda4cc9.png)]( https://pic.ziyuan.wang/user/guest/2024/01/1704940991849_82cb52dda4cc9.png)
    sanbuliuxin
        12
    sanbuliuxin  
    OP
       2024-01-11 10:49:19 +08:00
    XhivaW
        13
    XhivaW  
       2024-01-11 13:50:44 +08:00
    支持哪些数据库/计算引擎?
    XhivaW
        14
    XhivaW  
       2024-01-11 13:53:21 +08:00
    以及支持程度如何,比如对 select * ?
    sanbuliuxin
        15
    sanbuliuxin  
    OP
       2024-01-18 17:50:20 +08:00
    @XhivaW 支持 sparksql 和 presto , 支持 select * 启发式解析,但是太模糊的就不能做到字段血缘,只能忽略字段血缘。

    例如, 支持 insert into target select * from (select a, b, c from d) tmp , 会启发式认为 target 表中存在同名的 a,b,c 的字段,并和最底层的物理表 d 的 a,b,c 字段存在血缘关系,截图如下:

    sanbuliuxin
        16
    sanbuliuxin  
    OP
       2024-01-18 17:54:04 +08:00
    @XhivaW 支持的程度我这边应该是能达到 sparksql ,presto 全部语法的 99%,因为我这边是专门做大数据的 SQL 解析。

    其他的数据库如果有一些写法相同的语句拿过来解析,也没有问题。 例如 mysql 等一些通用的 select 语法
    XhivaW
        17
    XhivaW  
       2024-01-19 08:39:57 +08:00
    @sanbuliuxin 谢谢回复 23 年搬砖我也写了个类似的东西用于 hive+spark sql 的解析 做了 hive 元数据库的自动匹配以解决 select * 的问题 不过遇到中间表还是会有断点 我是希望能做到类似 https://sqlflow.gudusoft.com/#/ 这样的产品 哈哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2573 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 05:30 PVG 13:30 LAX 21:30 JFK 00:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86