一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于SQL生成正向数据血缘的方法与流程

2023-08-09 21:06:22 来源:中国专利 TAG:

一种基于sql生成正向数据血缘的方法
技术领域
1.本发明涉及数据库技术领域,特别涉及一种基于sql生成正向数据血缘的方法。


背景技术:

2.数据血缘是在数据的加工、流转过程产生的数据与数据之间的关系,是数据日常运维、数据治理方面的关键信息。数据血缘可以到数据表级别(源表到目标表)、字段级别(源字段列到目标字段)。
3.当前获取数据血缘的工具比较多,有开源的工具还有商业化产品,但都基于解析数据加工的代码(sql/数据库存储过程等)获取血缘关系。
4.比如在线工具sqlflow,如图1所示,其工作原理:sqlflow从数据库、文件系统、前端获取sql脚本,通过后台sqlflow-analyzer模块解析sql脚本并分析数据结构及数据血缘。sqlflow-analyzer将sql文本作为输入生成json格式的数据血缘,再由flowlayout模块生成数据血缘的可视化元素布局,最后交由前端进行可交互的数据血缘关系可视化展示。sqlflow-analyzer主要利用gsp库实现sql解析。gsp最主要的功能是针对各数据库厂商的sql进行语法校验,通过校验后为其sql提供对应的语法树。具体的解析步骤为:
5.解析sql语句类型,根据识别类型部署不同的解析策略;
6.解析sql中的结果字段,根据前缀(表名/别称)在from子句中寻找来源;
7.若在from子句中发现嵌套子查询、函数等子结果集则进行递归,解析子结果集;
8.记录sql依赖关系调用链,生成对应sql脚本的血缘关系。
9.这种方式问题:
10.解析的准确性没有保障,较为复杂的代码、书写不规范的代码、代码新增引用或者自定义程序时会遇到解析的问题;比如select*from tbl这样的书写就会遇到解析不到准确的字段级别血缘。
11.需要额外搭建解析工程,将代码工程跟解析工具进行有效结合-解析程序需要跟代码变更绑定,不然解析的数据血缘不可用。
12.如图2所示,通过背景技术介绍可以看出当前的数据血缘的生产是逆向的,从后向加工逻辑推导出整个数据链路。本发明提出一个正向加工方式,在数据模型的工程建设中建立血缘数据—正向数据血缘。
13.企业数据模型的建设过程一般分为如下三部分,第一步数据分析人员在整体业务数据视角,选择合适的建模方法,自上而下构建据模型(ldm);第二步建立企业各个系统的数据到数据模型的映射,即数据如何汇入模型(需要取哪些系统的数据进行哪些方面的计算),这个步骤一般会形成一个映射文档,对于简单的场景也存在直接进行沟通不进行文档化;第三步数据开发人员基于映射文档/沟通情况进行开发,输出模型数据/指标。
14.从图3中可以看到,可以看到核心是数据映射,映射即数据源表(企业各个业务系统)到目标表(数据中心的模型)的加工逻辑,是准确的数据加工链路也就是数据血缘关系,数据分析人员将数据背后的业务关系通过映射文档进行了描述或者直接进行沟通描述,这
个信息不是结构化的。


技术实现要素:

15.因此本发明提出了如下解决方案:
16.一种基于sql生成正向数据血缘的方法,包括如下步骤:
17.步骤1,基于数据分析,将数据映射维护到配置表中;
18.步骤2,调用sql生成器,生成查询sql日志的sql语句,以便定位到具体时间点数据生成逻辑;
19.步骤3,根据配置表中的特定表信息和特定字段信息定位目标表对应的源数据中的相应信息。
20.根据本发明的一个优选实施例,在步骤1中,同时进行数据开发。
21.根据本发明的一个优选实施例,所述配置表由数据开发代码读取。
22.根据本发明的一个优选实施例,所述配置表包括如下字段:
23.colid模型/指标(目标)字段名称,colname模型/指标(目标)字段中文名称,coltype模型/指标(目标)字段的数据类型,frmtbl来源表,frmcol来源字段,frm_func加工函数,join_func关联函数,where_func过滤条件,tbl_mapping表名映射,keyname主键信息和class1目标表名。
24.根据本发明的一个优选实施例,keyname记录了class1中表名的主键名称,tbl_mapping记录了在生成可执行sql时表名与别名的映射关系。
25.根据本发明的一个优选实施例,所述sql生成器将所述配置表中的配置以符合sql语法的顺序组合起来,并将表名替换为别名,基础的顺序为:select${frmcol}from${frmtbl}${join_func}${where_func}。
26.根据本发明的一个优选实施例,当需要进行增量计算时,程序也支持将对应源数据的时间戳和软删除标志带入生成语句,使得执行引擎在执行sql的时候能够跳过已经计算过的老数据,并将被软删除的源数据反映到最新的目标表中。
27.根据本发明的一个优选实施例,所述配置表中的一行配置决定了一个目标表列的生成sql,各列之间互不干扰,并行执行。
28.根据本发明的一个优选实施例,在所述步骤1之后,所述步骤2之前还包括步骤1-1,将步骤1生成的结果写入一个key-value格式的中间表中,待所有列数据生成完毕后,利用纵转横将中间表中的数据写入对应名称的表中,以形成目标表。
29.根据本发明的一个优选实施例,在所述步骤2中还包括生成错误日志。
30.通过本发明的技术方案达成了如下的技术效果:
31.100%准确的数据血缘:正向构建,分析过程信息化,数据血缘是代码的组成(正向),而不是通过复杂的代码倒推(逆向)。高质量的数据血缘可放心应用到数据治理、数据日常运维中,提高数据工作效率及准确性。比如前向业务系统某表a要发生变更,对于数据中心的的影响需要分析

影响哪些下游的使用,通过高质量的数据血缘可大大提高预判的准确性,避免失误/业务使用风险。数据(模型)建设跟数据血缘有机融合,而不是如现有技术一样,血缘只能通过额外的工具(外挂式)提供。减少工程建设投入。数据工程领域通用,这个发明也打破了传统数据模型开发模式,对于数据建设、数据血缘价值有很大的促进作
用。
附图说明
32.图1是现有技术中确定数据血缘的方法示意图;
33.图2是现有技术的数据模型建设的流程示意图;
34.图3是现有技术的映射示意图;
35.图4是本发明的方法中映射的流程图;
36.图5是本发明的方法的流程图;
37.图6是本发明的方法的流程图;
38.图7是本发明的方法的流程图;
具体实施方式
39.如图4和5所示,一种基于sql生成正向数据血缘的方法,包括如下步骤:
40.步骤1,基于数据分析,将数据映射维护到配置表中;在图4中可以看到本发明将这个数据映射信息转换为计算机可以直接读取/识别的结构化信息,将数据映射、数据开发两块融为一体。此时,数据映射转为映射配置表,是数据开发代码的输入,自然跟代码联动,正向构建而成,从而是最可信的数据血缘。
41.步骤2,调用sql生成器,生成查询sql日志的sql语句,以便定位到具体时间点数据生成逻辑;
42.步骤3,根据配置表中的特定表信息和特定字段信息定位目标表对应的源数据中的相应信息。
43.如图6给出的优选实施例,场景介绍:目标-构建模型中的“交易单元开通日期”这个字段
44.步骤1,基于数据分析,将数据映射维护到如下配置表
45.步骤2:调用sql生成器,生成sql语句(截图中的stmt字段)
46.通过查询生成sql的日志,可以定位到具体时间点数据生成的逻辑,方便排查错误和定位数据源。
47.步骤3查看模型数据、数据血缘
48.根据配置表中的frmtbl和frmcol列,可以很容易地定位到目标表字段的源数据信息,由于数据是根据配置表正向生成,因此血缘信息准确无误。如图7所示。
49.根据本发明的一个优选实施例,在步骤1中,同时进行数据开发。
50.根据本发明的一个优选实施例,所述配置表由数据开发代码读取。
51.根据本发明的一个优选实施例,所述配置表包括如下字段:
52.colid模型/指标(目标)字段名称,colname模型/指标(目标)字段中文名称,coltype模型/指标(目标)字段的数据类型,frmtbl来源表,frmcol来源字段,frm_func加工函数,join_func关联函数,where_func过滤条件,tbl_mapping表名映射,keyname主键信息和class1目标表名。
53.根据本发明的一个优选实施例,keyname记录了class1中表名的主键名称,tbl_mapping记录了在生成可执行sql时表名与别名的映射关系。
54.根据本发明的一个优选实施例,所述sql生成器将所述配置表中的配置以符合sql语法的顺序组合起来,并将表名替换为别名,基础的顺序为:select${frmcol}from${frmtbl}${join_func}${where_func}。
55.根据本发明的一个优选实施例,当需要进行增量计算时,程序也支持将对应源数据的时间戳和软删除标志带入生成语句,使得执行引擎在执行sql的时候能够跳过已经计算过的老数据,并将被软删除的源数据反映到最新的目标表中。
56.根据本发明的一个优选实施例,所述配置表中的一行配置决定了一个目标表列的生成sql,各列之间互不干扰,并行执行。
57.根据本发明的一个优选实施例,在所述步骤1之后,所述步骤2之前还包括步骤1-1,将步骤1生成的结果写入一个key-value格式的中间表中,待所有列数据生成完毕后,利用纵转横将中间表中的数据写入对应名称的表中,以形成目标表。
58.根据本发明的一个优选实施例,在所述步骤2中还包括生成错误日志。
59.如图5所示,代码生成器将1中的配置以符合sql语法的顺序组合起来,并将表名替换为别名,基础的顺序为:select${frmcol}from${frmtbl}${join_func}${where_func}。
60.当需要进行增量计算时,程序也支持将对应源数据的时间戳和软删除标志带入生成语句,使得执行引擎在执行sql的时候能够跳过已经计算过的老数据,并将被软删除的源数据反映到最新的目标表中。
61.以
62.为例,配置信息生成的sql为select a.id,b.score from schema.student a join schema.course b on a.id=b.id where a.gender=’male’63.配置表中的一行配置决定了一个目标表列的生成sql,各列之间互不干扰,可以并行执行。生成的结果写入一个key,value格式的中间表中.
64.待所有列数据生成完毕后,利用纵转横将中间表中class1为male_course的数据写入对应名称的表中,即可形成一套完整的正向sql数据生成流程。
65.整体流程如下图5所示。
66.以上结合附图仅仅示范性给出了本发明的优选实施例,本发明的保护范围以权利要求书为准,在不超出其范围的情况下,本领域技术人员可以做出增加特征、重新组合相应特定等个改变。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表