当前位置:   article > 正文

马哈鱼SQLFLow数据血缘分析器分析SQL中的函数

马哈鱼sqlflow

马哈鱼数据血缘分析器是一个分析数据血缘关系的平台,支持20多种数据库的分析,满足数据血缘95%的分析场景,对表级,字段级的血缘关系有强大的分析能力,支持对大量复杂的数据快速准确的分析,并通过操作便捷的UI界面展示分析后的血缘。

关于马哈鱼的强大能力后续会陆续介绍,本文主要介绍如何利用马哈鱼分析SQL中的函数。

一个简单的Case,利用SQLFLow分析聚合函数

SQL:

insert into  vsal (
	deptno,
	sal_sum
)
  SELECT emp.deptno, 
         SUM(emp.sal) sal_sum 
  FROM   scott.emp emp
  WHERE  city = 'NYC' 
  group by emp.deptno;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

SQLFLow分析后的结果:
在这里插入图片描述

可以直观的看出 scott.emp.deptno->vsal.deptno,scott.emp.sal->vsal.sal_num两个直接关系,而对于其中的sal_num实际上是来自于SUM(scott.emp.sal)的聚合,在SQLFLow中默认是不显示这些function的关系,查看需要打开show function功能后就能看到聚合函数的血缘。如下:

在这里插入图片描述

结果:

在这里插入图片描述

可以看出vasl.sal_sum来自SUM聚合之后的结果,打开settings中show transform功能,可以看到具体的聚合函数code,从而得到完整的血缘:scott.emp.sal->SUM(scott.emp.sql)->vsal.sal_num

在这里插入图片描述

复杂一些的Case,多个函数并结合嵌套结构

SQL:

insert into lineage_fact
        (
            fact_guid
            ,first_execution_datetime
            ,last_execution_datetime
            ,mio_delta_hash
            ,mio_create_date_time
            ,mio_created_by
            ,mio_update_date_time
            ,mio_updated_by
            ,mio_source_system_cde
            ,user_id
          	,record_type
            ,predicates
            ,database_instance
      )
    select
           md5(nvl(record_type,'-')     ||
                        nvl(user_id,'-')     ||       
                        nvl(database_instance,'-')   
                               ) as fact_guid
            ,first_execution_datetime
            ,last_execution_datetime      
            ,md5(nvl(to_char(last_execution_datetime , 'MM-DD-YYYY') , '-' )) as mio_delta_hash         
            ,getdate()           as mio_create_date_time
            ,'mio_glue_system-mio099_t_lineage_fact_load_prod'  as mio_created_by
            ,getdate()           as mio_update_date_time
            ,'mio_glue_system-mio099_t_lineage_fact_load_prod'  as mio_updated_by
            ,'sqlflow'       as mio_source_system_cde
            ,user_id
          	,record_type
            ,predicates
            ,database_instance
        from (
                select
                       (nullif(record_type,'nan'))                      as record_type
                        ,(nullif(user_id,'nan'))                    as user_id
                        ,(nullif(database_instance,'nan'))                    as database_instance
                        ,listagg(distinct nullif(predicates,'nan'))              as predicates       
                        ,min(TO_timestamp(timestamp_min, 'YYYY-MM-DD HH:MI:SS') )      as first_execution_datetime
                        ,max(TO_timestamp(timestamp_max, 'YYYY-MM-DD HH:MI:SS') )      as last_execution_datetime   
                    from spectrum.stg099
                    group by 1,2,3
            );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

这是一个redshift数据库的SQL,功能就是收集spectrum.stg099根据record_type,user_id,database_instance分组,predicates,first_execution_datetime,last_execution_datetime聚合之后的数据,并且根据这些数据再聚合生成fact_guid,mio_delta_hash和其他字段写入lineage_fact表。这样一个相对复杂的SQL,通过人工去核对血缘会是一件比较耗时的工作,但是通过SQLFLow解析之后再看就能很直观快速的找到其中的血缘,如下:

在这里插入图片描述

从分析后的UI可以直观的看出,lineage_fact表的各个字段都来自于spectrum.stg099表的哪些字段,而对于其中具体的细节来源,例如:

md5(nvl(record_type,'-')     ||
    nvl(user_id,'-')     ||       
    nvl(database_instance,'-')   
   ) as fact_guid
  • 1
  • 2
  • 3
  • 4

fact_guid字段来源于record_type,user_id,database_instance三个字段的聚合,如下:

在这里插入图片描述

从图中可以看出,fact_guid是来自于对record_type,user_id,database_instance三个字段的MD5聚合,然后继续回溯,可以看出这三个字段最终是来源于nullif(record_type,'nan'),nullif(user_id,'nan'),nullif(database_instance,'nan')处理之后的结果:

在这里插入图片描述

并且如果想要查看节点在整个解析的SQL中的代码,SQLFLow也能强大的支持,如下:

在这里插入图片描述

整个SQL中直接关系所有涉及到的函数都成功被分析出来,可以直观的看出相应的数据流。

以上就是对马哈鱼SQLFLow分析分析SQL中的聚合函数,关于马哈鱼的等多功能,请参考下面链接:

参考

马哈鱼数据血缘关系分析工具中文网站: https://www.sqlflow.cn

马哈鱼数据血缘关系分析工具英文网站: https://docs.gudusoft.com

马哈鱼数据血缘关系分析工具在线使用: https://sqlflow.gudusoft.com

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号