ZGLanguage 解析SQL数据血缘 之 Python + Echarts 显示SQL结构图

根据之前文章的说明,可以使用 Python 对 ZGLanguage 的SQL代码解析结果进行处理,得到SQL的表级血缘树信息:

SQL代码 :

sql 复制代码
SELECT CL.OBJECTNO
     , AL.PAYDATE
  FROM NYBDP.O_SS_CL_LOAN_ACCT_STATIS CL
 inner JOIN O_CWWS_ACCT_LOAN AL
    ON 1=1
  LEFT out JOIN NYBDP.O_CWWS_BUSINESS_DUEBILL BD
    ON 1=1
  LEFT JOIN O_CWWS_BUSINESS_CONTRACT BC
    ON 1=1
;

解析生成SQL表级血缘树信息 sql_struct_info :

python 复制代码
[{'level': '0', 'node_type': '', 'value': '', 
  'children': [{
  
      'level': '1', 'node_type': '__CREATE_TABLE_SELECT__', 'value': 'TMP_O_SS_CL_1', 
	  'children': [{
	  
	      'level': '5', 'node_type': '__TABLE_NAME__', 'value': 'O_SS_CL_LOAN_ACCT_STATIS', 
		  'children': []}, {
		  
		  'level': '7', 'node_type': '__SUB_SELECT__', 'value': '', 
		  'children': [{
		  
		      'level': '11', 'node_type': '__TABLE_NAME__', 'value': 'O_CWWS_ACCT_LOAN', 
			  'children': []}, {
			  
			  'level': '13', 'node_type': '__TABLE_NAME__', 'value': 'O_CWWS_BUSINESS_DUEBILL', 
			  'children': []}, {
			  
			  'level': '15', 'node_type': '__TABLE_NAME__', 'value': 'O_CWWS_BUSINESS_CONTRACT', 
			  'children': []}]}]}]}]

为了直观显示,可以使用 Echarts 图形化 :

将以上信息转换成 Echarts 的树结构数据, 代码如下:

python 复制代码
def getTableTree(sql_struct_info, one_tree) :
    for one_node in sql_struct_info :
        # print(one_node['value'])
        new_node = {'name':one_node['value'], 'children':[]}
        one_tree.append(new_node)
        getTableTree(one_node['children'], new_node['children'])

    return

tree_date = []
getTableTree(sql_struct_info, tree_date)

print(tree_date)

可以得到转换结果 :

python 复制代码
[{'name': 'file:out.zgl', 
  'children': [{
  
      'name': 'TMP_O_SS_CL_1', 
	  'children': [{
	  
	      'name': 'O_SS_CL_LOAN_ACCT_STATIS', 
		  'children': []}, {
		  
		  'name': '__SUB_SELECT_11__', 
		  'children': [{
		  
		      'name': 'O_CWWS_ACCT_LOAN', 
			  'children': []}, {
			  
			  'name': 'O_CWWS_BUSINESS_DUEBILL', 
			  'children': []}, {
			  
			  'name': 'O_CWWS_BUSINESS_CONTRACT', 
			  'children': []}]}]}]}]

将以上转换结果使用 Echarts 展示 :

相关推荐
马克Markorg2 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
Coder_Boy_4 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
2501_944934734 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
Gain_chance4 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
helloworldandy4 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
九河云5 小时前
5秒开服,你的应用部署还卡在“加载中”吗?
大数据·人工智能·安全·机器学习·华为云
Gain_chance5 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
数据知道6 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
每日新鲜事6 小时前
热销复盘:招商林屿缦岛203套售罄背后的客户逻辑分析
大数据·人工智能
qq_12498707536 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计