基于alibaba druid的血缘解析工具

基于alibaba druid的血缘解析

1、前言

仅仅对mysql数据库的select查询语句进行了血缘解析,该血缘解析包含了原始表字段、临时表字段和目标表字段的关联关系。

2、涉及到技术

主要使用了druid的如下接口对语法树进行解析:

(1)selement
  • SQLSelectStatement
(2)sqlselectquery
  • SQLUnionQuery
  • SQLSelectQueryBlock
  • MySqlSelectQueryBlock
(3)tablesource
  • SQLExprTableSource
  • SQLJoinTableSource
  • SQLSubqueryTableSource
  • SQLUnionQueryTableSource
(4)sqlexpr
  • SQLAggregateExpr
  • SQLAllColumnExpr
  • SQLIdentifierExpr
  • SQLPropertyExpr
  • SQLQueryExpr

3、成果展示

主要和datablau血缘解析工具进行对比
(1)select语句中包含关联查询和字段中包含子查询

SELECT
  e.employee_id,
  e.name,
  e.gender,
  e.date_of_birth,
  e.date_of_hire,
  d.department_name,
  ts.total_salary,
  b.bonus,
  (
    SELECT
      B.id,
      B.CGFS,
      B.WLZ,
      B.CPMC,
      B.CGSL,
      B.ZXCJ,
      B.ZXJE,
      B.HTGLXTHTH,
      B.CGPZH,
      B.WZBM,
      B.HSZJ,
      B.BEDNR JHBH,
      B.WCXTCGDDID,
      B.ZHTDAT,
      D.WERKS_NAME XQGCMC,
      D.WERKS XQGCBM
    FROM
      (
        SELECT
          A.id,
          A.ZCGFS CGFS,
          A.MATKL WLZ,
          A.TXZ01 CPMC,
          A.MENGE CGSL,
          A.NAME1 ZXCJ,
          A.ZHSDJ ZXJE,
          A.ZHTNUM HTGLXTHTH,
          A.EBELN CGPZH,
          A.MATNR WZBM,
          A.ZHSZJ HSZJ,
          A.ZHTDAT,
          C.EMATN,
          C.BEDNR,
          C.ZCGDDID WCXTCGDDID
        FROM
          TB_ERP_ZP11MMRP008 A,
          TB_ERP_ME2M C
        WHERE
          A.EBELN = C.EBELN
          and A.MATNR = C.EMATN
      ) B,
      TB_ERP_ZP10MMDG030 D
    WHERE
      B.BEDNR = D.BEDNR
      AND B.EMATN = D.MATNR
      and B.ZHTDAT > to_date('2023/05/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS')
  ) as sfs,
  (
    select
      s.d
    from
      student s
    where
      student_id = e.employee_id
  ) as saf12
FROM
  employee e
  INNER JOIN department d ON e.department_id = d.department_id
  INNER JOIN tmp_salary ts ON e.employee_id = ts.employee_id
  LEFT OUTER JOIN bonus b ON e.employee_id = b.employee_id;

本血缘解析工具分析结果:

-- TB_ERP_ZP11MMRP008.NAME1 -> B.ZXCJ -> SELECT_STATEMENT_2.ZXCJ -> SELECT_STATEMENT_0.sfs
-- employee.date_of_birth -> SELECT_STATEMENT_0.date_of_birth
-- TB_ERP_ZP11MMRP008.ZHTDAT -> B.ZHTDAT -> SELECT_STATEMENT_2.ZHTDAT -> SELECT_STATEMENT_0.sfs
-- department.department_name -> SELECT_STATEMENT_0.department_name
-- bonus.bonus -> SELECT_STATEMENT_0.bonus
-- student.d -> SELECT_STATEMENT_5.d -> SELECT_STATEMENT_0.saf12
-- TB_ERP_ZP11MMRP008.MATNR -> B.WZBM -> SELECT_STATEMENT_2.WZBM -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP11MMRP008.EBELN -> B.CGPZH -> SELECT_STATEMENT_2.CGPZH -> SELECT_STATEMENT_0.sfs
-- employee.name -> SELECT_STATEMENT_0.name
-- TB_ERP_ZP11MMRP008.ZHTNUM -> B.HTGLXTHTH -> SELECT_STATEMENT_2.HTGLXTHTH -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP11MMRP008.MATKL -> B.WLZ -> SELECT_STATEMENT_2.WLZ -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP10MMDG030.WERKS -> SELECT_STATEMENT_2.XQGCBM -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP11MMRP008.ZCGFS -> B.CGFS -> SELECT_STATEMENT_2.CGFS -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP11MMRP008.MENGE -> B.CGSL -> SELECT_STATEMENT_2.CGSL -> SELECT_STATEMENT_0.sfs
-- employee.gender -> SELECT_STATEMENT_0.gender
-- TB_ERP_ZP11MMRP008.TXZ01 -> B.CPMC -> SELECT_STATEMENT_2.CPMC -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP11MMRP008.id -> B.id -> SELECT_STATEMENT_2.id -> SELECT_STATEMENT_0.sfs
-- tmp_salary.total_salary -> SELECT_STATEMENT_0.total_salary
-- TB_ERP_ZP11MMRP008.ZHSZJ -> B.HSZJ -> SELECT_STATEMENT_2.HSZJ -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ME2M.ZCGDDID -> B.WCXTCGDDID -> SELECT_STATEMENT_2.WCXTCGDDID -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ZP11MMRP008.ZHSDJ -> B.ZXJE -> SELECT_STATEMENT_2.ZXJE -> SELECT_STATEMENT_0.sfs
-- TB_ERP_ME2M.EMATN -> B.EMATN
-- TB_ERP_ME2M.BEDNR -> B.BEDNR -> SELECT_STATEMENT_2.JHBH -> SELECT_STATEMENT_0.sfs
-- employee.date_of_hire -> SELECT_STATEMENT_0.date_of_hire
-- employee.employee_id -> SELECT_STATEMENT_0.employee_id
-- TB_ERP_ZP10MMDG030.WERKS_NAME -> SELECT_STATEMENT_2.XQGCMC -> SELECT_STATEMENT_0.sfs

datablua血缘解析工具结果:
在这里插入图片描述
(2)select联合查询

select s.id from student s union select e.id from employees e

本血缘解析工具分析结果:

-- student.id -> SELECT_STATEMENT_0.id
-- employees.id -> SELECT_STATEMENT_1.id

datablua血缘解析工具结果:
在这里插入图片描述

4 待优化点

  • 不支持没有别名的select查询
  • 联合查询没有结果汇总,有待优化

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux笔记---系统信息

🍎个人博客:个人主页 🏆个人专栏:Linux学习 ⛳️ 功不唐捐,玉汝于成 目录 前言 命令 1. uname - 显示系统信息 2. hostname - 显示或设置系统主机名 3. top - 显示系统资源使用情况 4. df - 显示磁盘空间使用情…

HTTP协议 -JavaWeb基础必知

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

2010-2020年中国1km陆地生态系统碳汇

2010-2020年中国1km陆地生态系统碳汇数据 引用地址: 赵俊芳.2010-2020年中国1km陆地生态系统碳汇产品数据集,北京:中国科学院地理科学与资源研究所,2023.doi:10.12237/casearth.6538842e819aec0f26f42cb0 数据作者 作者:赵俊芳 版权机构:中…

YoloV8的一个缓存问题

摘要 如果尝使用YoloV8,我们一定遇到这个问题:明明都配置正确了,但是还是报错,数据的类别一直匹配不上,数据集指向上一个YoloV8的数据集,这时候你就要检查一下缓存了! 解决方法 如果是Win电脑…

ChatGPT助力Excel数据分析:让你的工作事半功倍!

文章目录 一、ChatGPT简介二、ChatGPT在Excel数据分析中的应用1. 数据清洗2. 数据处理3. 数据分析4. 数据可视化 三、如何使用ChatGPT进行Excel数据分析1. 安装ChatGPT插件2. 输入问题或命令3. 查看结果并调整参数4. 导出结果并分享四、总结与展望 《巧用ChatGPT高效搞定Excel数…

Keil编译STM32工程,提示__align(4)处语法错误

好久没有用Keil编程,因为别人的代码是用Keil写的,所以又得安装起来,编译时遇到__align(4)的错误提示。 这个问题主要是编译器版本的问题,默认使用的是v6.19版本的编译器,而工程原来使用的是v5版本的,两个编…

Android: Ubuntu下交叉环境编译常用调试工具demo for lspci命令(ARM设备)

lspci命令交叉环境编译(ARM设备) 交叉编译工具下载: https://releases.linaro.org/components/toolchain/binaries https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/ lspci命令交叉环境编译(ARM设备): 1&a…

本地文件内容搜索神器AnyTXT Searcher如何搭建与远程访问

文章目录 前言1. AnyTXT Searcher1.1 下载安装AnyTXT Searcher 2. 下载安装注册cpolar3. AnyTXT Searcher设置和操作3.1 AnyTXT结合cpolar—公网访问搜索神器3.2 公网访问测试 4. 固定连接公网地址 前言 你是否遇到过这种情况,异地办公或者不在公司,想找…

爬虫实战案例 -- 爬取豆瓣读书网页内容

进入网站检查信息 , 确定请求方式以及相关数据 找到爬取目标位置 开始敲代码 # 链接网站 def url_link(url):res requests.get(url,headers headers)response res.textparse_data(response)# 爬取信息 def parse_data(data):msg <li\sclass"media\sclearfix…

从安全性角度,看“可信数字底座”有何价值

文章目录 每日一句正能量前言概念对比安全技术对比思考与建议 每日一句正能量 不管现在有多么艰辛&#xff0c;我们也要做个生活的舞者。 前言 万向区块链此前提出“可信数字底座”这一概念和技术&#xff0c;即将区块链与物联网、人工智能、隐私计算等数字化技术相融合&#…

Java开发手册

扫一扫二维码关注公众号 1、每日推送人工智能、数据科学等行业最新重磅报告&#xff1b;2、回复“干货” &#xff0c;获取海量个性化推荐相关技术文档&#xff1b;3、最大最全的个性化推荐技术与产品社区&#xff0c;欢迎来撩&#xff1b; 个性化推荐技术与产品社区 前 言 …

解决:AttributeError: module ‘scipy.misc’ has no attribute ‘imresize’

解决&#xff1a;AttributeError: module ‘scipy.misc’ has no attribute ‘imresize’ 文章目录 解决&#xff1a;AttributeError: module scipy.misc has no attribute imresize背景报错问题报错翻译报错位置代码报错原因解决方法方法一 scipy版本回退&#xff08;不推荐&a…

2023最新最全【MYSQL】8.0.11下载,零基础入门到精通

1、下载安装&#xff1a; MySQL8下载地址&#xff1a;点击No thanks 点击底部“No thanks, just start my download.”直接下载就行。 然后将压缩包解压到电脑&#xff0c;直接抄我的 D:\Program Files (x86)\mysql\mysql-8.0.11-winx64 2、配置环境&#xff08;win10&#x…

取消paypal免密支付绑定平台

在设置支付中-》自动支付-》取消特定平台即可。

PLC智能网关,实现PLC联网

在工业自动化领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;的应用日益广泛。然而&#xff0c;传统的PLC系统通常面临着联网难题&#xff0c;限制了数据的共享和远程监控的可能性。在这个背景下&#xff0c;PLC智能网关应运而生。本文将围绕“PLC智能网关&#…

Spring MVC控制层框架

三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数&#xff08;重点&#xff09; 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…

每日分享,以圣诞节为题的诗词

圣诞节即将来临&#xff0c;相信大家都会在朋友圈表达一下自己的情感&#xff0c;不管大家以前是怎么表达的&#xff0c;今天小编给你分享几首以圣诞节为题的几首诗&#xff0c;喜欢的朋友可以自取&#xff0c;想要更多免费的诗词&#xff0c;请自行百度或小程序搜索&#xff1…

vscode开发python环境配置

前言 vscode作为一款好用的轻量级代码编辑器&#xff0c;不仅支持代码调试&#xff0c;而且还有丰富的插件库&#xff0c;可以说是免费好用&#xff0c;对于初学者来说用来写写python是再合适不过了。下面就推荐几款个人觉得还不错的插件&#xff0c;希望可以帮助大家更好地写…

LVS+keepalived小白都看得懂也不来看?

1 高可用集群 1.1 一个合格的集群应该具备的特性 1.负载均衡 LVS Nginx HAProxy F5 2.健康检查&#xff08;使得调度器检查节点状态是否可以正常运行&#xff0c;调度器&#xff08;负载均衡器&#xff09;也要做健康检查&#xff09;for调度器/节点服务器 keeplived hearb…

CentOS安装Python解释,CentOS设置python虚拟环境,linux设置python虚拟环境

一、安装python解释器 1、创建解释器安装的目录&#xff1a;/usr/local/python39 cd /usr/local mkdir python39 2、下载依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel …