SQLFlow分析mysql语句

使用SQLFlow分析一段mysql的SQL脚本,得其中的表以及字段间的数据血缘关系data lineage。

分析的SQL:

CREATE TABLE tmp.tmp_a_supp_achievement_an_mom_001 AS
  SELECT a1.dim_day_txdate,
         a.a_pin,
         Sum(Coalesce(b.amount, 0)) AS total_amount
         , Sum(Coalesce(c.refund_amt, 0)) AS refund_amt
         , Sum(os_prcp_amt) os_prcp_amt
  FROM (SELECT dim_day_txdate 
        FROM dmv.dim_day
        WHERE dim_day_txdate>=concat(cast(Year('2018-05-15')-1 AS string),'-', substring('2018-05-15', 6, 2), '-01')
          AND dim_day_txdate<='2018-05-15' )a1
  JOIN (SELECT DISTINCT a_pin, product_type
        FROM dwd.dwd_as_qy_cust_account_s_d
        WHERE dt ='2018-05-15' AND product_type='20288' )a
  LEFT OUTER JOIN (SELECT substring(tx_time, 1, 10) AS time, sum(order_amt) AS amount, a_pin
                    FROM dwd.dwd_actv_as_qy_iou_receipt_s_d
                    WHERE a_order_type='20096' AND a_pin NOT IN ('vep_test', 'VOPVSP测试')
                      AND dt='2018-05-15'
                    GROUP BY substring(tx_time, 1, 10), a_pin )b
              ON cast(a.a_pin AS string)=cast(b.a_pin AS string) AND a1.dim_day_txdate=b.time
  LEFT OUTER JOIN ( SELECT substring(refund_time, 1, 10) AS refund_time, a_pin, sum(refund_amt)AS refund_amt
                    FROM dwd.dwd_as_qy_iou_refund_s_d
                    WHERE refund_status='20090' AND dt='2018-05-15' AND a_order_no <> '12467657248'
                      AND a_refund_no <> '1610230919767139947'
                    GROUP BY substring(refund_time, 1, 10), a_pin )c
              ON cast(a.a_pin AS string)=cast(c.a_pin AS string) AND a1.dim_day_txdate=c.refund_time
  LEFT OUTER JOIN (SELECT dt, a_pin, sum(os_prcp_amt) AS os_prcp_amt
                    FROM dwd.dwd_as_qy_cycle_detail_s_d
                    WHERE dt>=concat(substr('2018-05-15', 1, 7), '-01') AND dt<='2018-05-15'
                    GROUP BY dt, a_pin)e
              ON cast(a.jd_pin AS string)=cast(e.a_pin AS string) AND a1.dim_day_txdate=e.dt
  GROUP BY a1.dim_day_txdate, a.a_pin;

使用SQLFlow进行分析

  • 进入SQLFlow页面。SQLFlow
  • 选择左侧第一个简单分析SQL菜单,将要分析的SQL脚本粘贴到编辑器内,并选择数据库类型为MySQL。
    在这里插入图片描述
  • 点击分析按钮,分析后得到右侧的data lineage。
    在这里插入图片描述
    从图中可知:
    1,tmp_a_supp_achievement_an_mom_001表由dim_day_txdate,a_pin,total_amount, refund_amt,prcp_amt这五个字段构成。
    2,tmp_a_supp_achievement_an_mom_001的各个字段的数据来源流向,其中dim_day_txdate字段是来源于dim_day_txdate表;a_pin字段是来源于dwd_as_qy_cust_account_s_d表;total_amount字段是来源于dwd_actv_as_qy_iou_receipt_s_d表,经过Sum(Coalesce(b.amount, 0))得到结果;refund_amt字段是来源于dwd_as_qy_iou_refund_s_d表经过Sum(Coalesce(c.refund_amt, 0))得到结果;prcp_amt字段是来源于dwd_as_qy_iou_refund_s_d经过Sum(os_prcp_amt)得到结构结果。
    3,dwd_as_qy_cust_account_s_d表的涉及字段有a_pin,product_type。
    4,dwd_as_qy_cycle_detail_s_d表的涉及字段有a_pin,dt,os_prcp_amt。
    5,dwd_as_qy_iou_refund_s_d表的涉及字段有a_pin,refund_amt,refund_time。
    6,dwd_actv_as_qy_iou_receipt_s_d表的涉及字段有a_pin,tx_time,order_amt。
    7,dim_day表的涉及字段有dim_day。
  • 鼠标可以移动到关系图中具体的字段上面看到其数据流向,和左侧的SQL脚本进行对比。
    在这里插入图片描述
  • 左侧的schema explorer菜单中可以查看到分析后的表,关系,更加直观的可以看出分析结果。

在这里插入图片描述
并且可以进行模糊搜索,使用非常方便。

  • summary菜单中也可以看到分析后的表,关系等数据的统计数据。
    在这里插入图片描述
  • text output菜单中查看分析结果数据。
    在这里插入图片描述
  • error message菜单中可以查看SQL脚本分析异常的case,点击后可查看具体分析错误的SQL。
    在这里插入图片描述
总结

以上就是使用SQLFlow对mysql的SQL继续分析得到表,以及字段间的数据血缘关系data lineage的案例。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值