(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210875368.7
(22)申请日 2022.07.25
(71)申请人 成都烽顺科技有限公司
地址 610000 四川省成 都市高新区蜀锦路
88号1栋二单 元1207号
(72)发明人 苏鑫 李明 张乙
(74)专利代理 机构 成都帝鹏知识产权代理事务
所(普通合伙) 5126 5
专利代理师 罗旭
(51)Int.Cl.
G06F 16/25(2019.01)
G06F 16/242(2019.01)
G06F 16/28(2019.01)
(54)发明名称
一种基于ETL转换数据血缘 生成方法
(57)摘要
本发明公开一种基于ETL转换数据血缘生成
方法, 通过转换ID从ET L仓库加载转换元数据; 从
转换元数据中获取表输出相关步骤 元数据, 存入
集合; 判断集合是否为空, 如果为空表示没有目
标表, 则直接 结束; 如果集合不为空, 则获取表输
入相关步骤元数据, 存入变量input; 判断变量是
否为空, 如果为空表示没有 来源表, 则直接 结束;
如过变量不为空, 遍历集合, 单个变量为output,
构建input到output的表血缘对象, 并将血缘关
系对象添加到表血缘集合, 实现单个表输出步骤
血缘解析; 合并表血缘集合中同一目标表的多个
表输出步骤 涉及的字段血缘; 将表血缘集合写入
数据库进行持久化。 本发明能够支持识别复杂
ETL数据处 理过程。
权利要求书3页 说明书9页 附图4页
CN 115221231 A
2022.10.21
CN 115221231 A
1.一种基于 ETL转换数据血缘 生成方法, 其特 征在于, 包括 步骤:
S10,输入转换ID, 通过转换ID从ETL仓库加载转换 元数据trans;
S20,从转换 元数据trans中获取表输出相关步骤元 数据, 存入集合outputs;
S30,判断集合output s是否为空, 如果为空表示没有目标表, 则直接结束; 如果outputs
不为空, 则获取表输入相关步骤元 数据, 存入变量input;
S40,判断变量input是否为空, 如果为空表示没有来源表, 则直接结束; 如 过input不为
空, 遍历集合outputs, 单个变量为output, 构建input到output的表血缘对象
lineageTable, 并将血缘关系对象添加到表血缘集合lineageTables, 实现单个表输出步骤
血缘解析;
S50,合并表血缘集合lineageTables中同一目标表的多个表输出步骤涉及的字段血
缘;
S60,将表血缘 集合lineageTables写入数据库进行持久化。
2.根据权利要求1所述的一种基于ETL转换数据血缘生成方法, 其特征在于, 单个表输
出步骤血缘 解析包括 步骤:
S41,输入参数表输出步骤元数据output、 表输入步骤元数据input、 转换元数据trans;
检查表输入到表输出链路过程, 并将过程写入链表link; 完成表输入到单个表输出步骤链
路构建;
S42,判断表输入到表输出链路是否存在, 如果不存在则结束单个表输出步骤血缘解析
过程;
如果链路存在, 通过trans预加载表输出output之前所有步骤涉及的字段信息, 存储到
键值对ro ws, 键为步骤名称, 值 为行元数据, 完成预加载步骤字段 元数据;
S43,判断预加载步骤涉及的字段信 息是否异常, 如果存在异常则结束单个表输出步骤
血缘解析过程;
如果不存在异常, 从头遍历链表link, 单个变量为step, 通过step获取对应的行元数据
row, 使用步骤step、 步骤 行元数据r ow生成单个步骤字段来源信息, 并将 字段来源信息存储
到键值对fields, 键为 步骤输出字段, 值 为字段来源信息; 完成单个步骤字段来源解析;
S44,通过表输出步骤元 数据output获取目标字段集 合targets;
S45,遍历集合target s, 单个目标字段变量target, 通过递归 从fields获取target的所
有来源字段和来源字段对应的来源步骤, 构建字段血缘对象lineageField, 并加入集合
lineageFields, 完成单个目标字段 血缘解析;
S46,构建表血缘对象l ineageTable。
3.根据权利要求2所述的一种基于ETL转换数据血缘生成方法, 其特征在于, 在所述步
骤S41中表输入到单个表输出步骤链路构建过程包括 步骤:
S411, 先将表输入步骤元 数据input加入链 表link头;
S412, 通过转换 元数据trans获取i nput的下一 步集合;
S413, 判断下一步集合是否为空, 为空则表示表输入到表输出链路过程链路不存在; 如
果下一步集合不为空, 则遍历下一 步集合;
S414, 判断单个下一步是否与输出步骤元数据output相等; 如果相等表示链路存在且
检查结束, 将outp ut添加链路最后; 如果单个下一步与输出步骤元数据output不相等, 则递权 利 要 求 书 1/3 页
2
CN 115221231 A
2归执行S412到S414, 直到下一步等于output或下一步集合集合为空; 下一步等于output时
将递归成功的中间步骤 插入到link相应位置 。
4.根据权利要求2所述的一种基于ETL转换数据血缘生成方法, 其特征在于, 在所述步
骤S42中预加载步骤字段 元数据过程包括 步骤:
S421, 通过t rans获取output上一 步集合;
S422, 遍历上一步集合中所有上一步的步骤元数据; 断单个上一步有没有产生新的字
段; 如果单个上一 步产生新的字段则添加该字段信息 到行元数据row;
S423, 获取单个上一步的输入字段元数据加入row, 并将字段来源步骤名和row添加到
rows;
S424, 递归执 行S421到S423, 直到上一 步集合为空;
其中, 当上一步为表输入步骤时, 表输入将sql发送到数据库中执行, 从返回的结果中
获取字段元数据, 将数据库字段元数据转为ETL中统一的字段元数据后, 添加到行元数据
row, 并将表输入步骤名和ro w添加到ro ws。
5.根据权利要求2所述的一种基于ETL转换数据血缘生成方法, 其特征在于, 在所述步
骤S43中单个步骤字段来源解析 过程包括 步骤:
S431, 输入参数步骤元数据step、 步骤行元数据row、 缓存键值对fields; 从步骤行元数
据row中获取字段元数据集合values, 遍历字段元数据集合values, 使用单个字段元数据
value, 构造 字段来源信息field, 并将field加入fields;
S432, 判断步骤元数据step 是否为表输入, 如果为表输入则解析表输入中sql查询结果
字段的来源字段和来源表; 构造 字段来源信息field, 并将field加入fields;
S433, 判断步骤元数据step是否为表输出相关, 如果为表输出相关则解析step目标表
字段对应的输入字段为 来源字段; 构造 字段来源信息field, 并将field加入fields;
S434, 判断步骤元数据step是否为会产生新字段血缘的步骤; 如果为产生新字段血缘
的步骤则解析step输出字段对应的输入字段为来源字段; 构造字段来源信息field, 并将
field加入fields。
6.根据权利要求2所述的一种基于ETL转换数据血缘生成方法, 其特征在于, 在所述步
骤S45中所述单个目标字段 血缘解析过程包括 步骤:
S451, 开始输入参数目标字段target缓存键值对fields, 判断键值对fields里面是否
包含target;
如果键值对fields里面 不包含target, 直接结束单个目标字段 血缘解析过程;
如果键值对fields里面包含target, 通过target从fields中获取字段血缘关系对象
field;
S452, 判断field中来源字段集合是否为空, 如果为空表示target来自步骤产生的字
段, 根据field构建l ineageField对象, 并加入当前l ineageFields;
如果不为空, 遍历field中来源字段集合, 获取单个来源字段作为target, 递归执行
S451‑S452获取l ineageFields;
S453, 判断递归得到的lineageFields是否为空, 如果为空则表示target来自表, 且已
递归到表输入的来源字段, 根据field构建lineageField对象, 并加入当前lineageFields;
如果不为空, 将递归得到的l ineageFields合并到当前l ineageFields;权 利 要 求 书 2/3 页
3
CN 115221231 A
3
专利 一种基于ETL转换数据血缘生成方法
文档预览
中文文档
17 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共17页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-24 01:01:58上传分享