数据血缘解析方法、装置、电子设备和计算机可读存储介质制造方法及图纸

技术编号:34206800 阅读:46 留言:0更新日期:2022-07-20 12:06
本申请涉及一种数据血缘解析方法、系统、计算机设备和存储介质。所述方法包括:接收数据血缘解析指令,从所述数据血缘解析指令中提取待解析sql;解析所述待解析sql生成抽象语法树;深度优先后序遍历所述抽象语法树的节点,针对每一所述节点,识别所述节点的节点类型,基于所述节点类型对所述节点执行宽度遍历解析,生成血缘关系树;封装所述血缘关系树为字段级血缘数据,存储所述字段级血缘数据。实施本申请实施例具有提高数据血缘追溯效率的作用。用。用。

【技术实现步骤摘要】
数据血缘解析方法、装置、电子设备和计算机可读存储介质


[0001]本申请涉及大数据处理
,特别是涉及一种数据血缘解析方法、装置、电子设备和计算机可读存储介质。

技术介绍

[0002]随着计算机技术的发展,全球正式进入了大数据时代,大数据,也称为巨量数据,一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。
[0003]大数据的价值在于数据分析以及分析基础上的数据挖掘和智能决策,通过对数据的分析,发现数据的变化以及各数据间的相关性、挖掘以往被忽视的规律、获得具有洞察力和新价值的东西,实现对人类行为的预测,从而可以有针对性地做出商业决策。
[0004]为了更有利于提高数据分析的准确度和数据问题的排查,需要清晰的数据血缘,数据血缘能清晰展示数据的来源、数据的加工方式、映射方式以及数据的出口,目前主要通过Atlas生成数据血缘,但是,在Atlas生成数据血缘的过程中,会保留所有血缘关系,当数据量庞大时会生成大量的临时表,占用过多的存储资源,并且临时表导致无效血缘关系膨胀,从而导致对有效血缘的追溯效率低下。

技术实现思路

[0005]本申请实施例提供一种数据血缘解析方法、装置、电子设备和计算机可读存储介质,用于第一方面,本申请实施例提供一种数据血缘解析方法,包括:接收数据血缘解析指令,从所述数据血缘解析指令中提取待解析sql;解析所述待解析sql生成抽象语法树;深度优先后序遍历所述抽象语法树的节点,针对每一所述节点,识别所述节点的节点类型,基于所述节点类型对所述节点执行宽度遍历解析,生成血缘关系树;封装所述血缘关系树为字段级血缘数据,存储所述字段级血缘数据。
[0006]在其中一个实施例中,所述识别所述节点的节点类型,包括:依次判断所述节点的节点类型是否为TOK_TABREF、TOK_INSERT、TOK_SUBQUERY、TOK_CREATETABLE、TOK_QUERY。
[0007]在其中一个实施例中,所述基于所述节点类型对所述节点执行宽度遍历解析,包括:若所述节点类型为所述TOK_INSERT,基于所述待解析sql确定待插入字段数组;通过子节点TOK_DESTINATION确定所述待插入字段数组对应的待插入表;若所述待插入表为临时表,获取所述临时表的临时表类型;若所述临时表为所述物理源表,宽度遍历解析所述待插入字段数组,针对所述待插入字段数组的每一所述待插入字段,确定所述待插入字段对应的源字段数组,遍历所述源字段数组,将所述源字段数组中每一源字段添加到currentTable的columns集合和所述待插入字段对应的from集合中,将所述待插入字段添加到currentColumns集合中,标记所述currentColumns集合为待分配状态。
[0008]在其中一个实施例中,所述基于所述节点类型对所述节点执行宽度遍历解析,还包括:若所述临时表为子查询的临时查询表,对所述待插入字段数组执行字段来源解析,确定所述待插入字段数组中每一待插入字段对应的源字段数组;针对每一所述待插入字段,遍历添加所述源字段数组至所述待插入字段对应的from集合中,将所述待插入字段添加至所述currentColumns集合中,标记所述currentColumns集合为待分配状态。
[0009]在其中一个实施例中,所述基于所述节点类型对所述节点执行宽度遍历解析,还包括:若所述待插入表为目标表,获取所述目标表的库名和表名;创建结果表targetTable,对所述待插入字段数组执行字段来源解析,确定所述待插入字段数组中每一待插入字段对应的源字段数组;针对每一所述待插入字段,遍历添加所述待插入字段对应的源字段数组至所述待插入字段对应的from集合,将所述待插入字段添加至所述结果表targetTable的columns集合。
[0010]在其中一个实施例中,所述对所述待插入字段数组执行字段来源解析,包括:针对所述待插入字段数组的每一所述待插入字段,获取所述待插入字段对应的字段别名和字段类型;若所述字段类型为预设第一类型,基于所述子查询名确定所述待插入字段对应的待插入字段子树节点,基于预设的映射关系查询待插入字段子树节点得到所述源字段数组;若所述字段类型为预设第二类型,基于所述待插入字段新建常量名字段;若所述字段类型为预设第三类型,宽度遍历所述待插入字段子树,判断所述待插入字段子树是否存在表别名,若存在,基于所述表别名和所述字段别名查询得到所述源字段数组。
[0011]在其中一个实施例中,所述判断所述待插入字段子树是否存在表别名,还包括:若所述待插入字段子树不存在表别名,获取所述待插入字段的字段名,基于所述字段名在所述待插入字段对应的上层子查询或对应的物理源表的columns集合中查找所述源字段数组;若所述column集合存在所述源字段数组,返回所述源字段数组;若所述column集合不存在所述源字段数组,获取与所述待插入字段对应的物理源表的元数据,提取所述元数据对应的物理表字段信息,基于所述物理表字段信息确定所述源字段数组。
[0012]第二方面,本申请实施例提供一种数据血缘解析装置,其特征在于,包括:接收单元,接收数据血缘解析指令,从所述数据血缘解析指令中提取待解析sql;解析单元,解析所述待解析sql生成抽象语法树;血缘生成单元,深度优先后序遍历所述抽象语法树的节点,针对每一所述节点,识别所述节点的节点类型,基于所述节点类型对所述节点执行宽度遍历解析,生成血缘关系树;封装单元,封装所述血缘关系树为字段级血缘数据,存储所述字段级血缘数据。
[0013]第三方面,本申请实施例提供一种电子设备,该电子设备包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤的指令。
[0014]第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质用于存储计算机程序,其中,上述计算机程序被处理器执行,以实现如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。
[0015]可以看出,在本申请实施例中,接收数据血缘解析指令,从所述数据血缘解析指令
中提取待解析sql;解析所述待解析sql生成抽象语法树;深度优先后序遍历所述抽象语法树的节点,针对每一所述节点,识别所述节点的节点类型,基于所述节点类型对所述节点执行宽度遍历解析,生成血缘关系树;封装所述血缘关系树为字段级血缘数据,存储所述字段级血缘数据。如此,可以通过深度优先后序遍历和宽度遍历组合的混合遍历方式推断数据的血缘关系,简化血缘关系的收集和推理流程,减少临时表的产生,减少无效血缘的产生和存储,从而有利于释放存储资源,有利于提高血缘追溯效率。
附图说明
[0016]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据血缘解析方法,其特征在于,包括:接收数据血缘解析指令,从所述数据血缘解析指令中提取待解析sql;解析所述待解析sql生成抽象语法树;深度优先后序遍历所述抽象语法树的节点,针对每一所述节点,识别所述节点的节点类型,基于所述节点类型对所述节点执行宽度遍历解析,生成血缘关系树;封装所述血缘关系树为字段级血缘数据,存储所述字段级血缘数据。2.根据权利要求1所述的方法,其特征在于,所述识别所述节点的节点类型,包括:依次判断所述节点的节点类型是否为TOK_TABREF、TOK_INSERT、TOK_SUBQUERY、TOK_CREATETABLE、TOK_QUERY。3.根据权利要求1

2任一项所述的方法,其特征在于,所述基于所述节点类型对所述节点执行宽度遍历解析,包括:若所述节点类型为所述TOK_INSERT,基于所述待解析sql确定待插入字段数组;通过子节点TOK_DESTINATION确定所述待插入字段数组对应的待插入表;若所述待插入表为临时表,获取所述临时表的临时表类型;若所述临时表为所述物理源表,宽度遍历解析所述待插入字段数组,针对所述待插入字段数组的每一所述待插入字段,确定所述待插入字段对应的源字段数组,遍历所述源字段数组,将所述源字段数组中每一源字段添加到currentTable的columns集合和所述待插入字段对应的from集合中,将所述待插入字段添加到currentColumns集合中,标记所述currentColumns集合为待分配状态。4.根据权利要求3所述的方法,其特征在于,所述基于所述节点类型对所述节点执行宽度遍历解析,还包括:若所述临时表为子查询的临时查询表,对所述待插入字段数组执行字段来源解析,确定所述待插入字段数组中每一待插入字段对应的源字段数组;针对每一所述待插入字段,遍历添加所述源字段数组至所述待插入字段对应的from集合中,将所述待插入字段添加至所述currentColumns集合中,标记所述currentColumns集合为待分配状态。5.根据权利要求3所述的方法,其特征在于,所述基于所述节点类型对所述节点执行宽度遍历解析,还包括:若所述待插入表为目标表,获取所述目标表的库名和表名;创建结果表targetTable,对所述待插入字段数组执行字段来源解析,确定所述待插入字段数组中每一待插入字段对应的源字段数组;针对每...

【专利技术属性】
技术研发人员:郭子轩陈凯
申请(专利权)人:深圳市珍爱捷云信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1