CN112434046A - 一种数据血缘分析方法、装置、设备及存储介质 - Google Patents
一种数据血缘分析方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112434046A CN112434046A CN202011488477.0A CN202011488477A CN112434046A CN 112434046 A CN112434046 A CN 112434046A CN 202011488477 A CN202011488477 A CN 202011488477A CN 112434046 A CN112434046 A CN 112434046A
- Authority
- CN
- China
- Prior art keywords
- input
- nodes
- fields
- field
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据血缘分析方法、装置、设备及存储介质,方法包括:一种数据血缘分析方法,包括步骤:S1、获取调度任务的脚本;S2、解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;S3、遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;S4、基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。本发明基于任务调度及数据库埋点进行数据血缘分析,能够对使用通配符的SQL语句进行处理,同时自动适应数据库中表结构的变化,无需手动修改ETL脚本中SQL语句字段部分,动态生成数据血缘图。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种数据血缘分析方法、装置、设备及存储介质,尤其涉及一种基于调度任务脚本及数据库埋点的数据血缘分析方法、装置、设备及存储介质。
背景技术
血缘分析是一种技术手段,用于对数据处理过程的全面追踪,从而找到某个数据对象为起点的所有相关元数据对象以及这些元数据对象之间的关系。元数据对象之间的关系特指表示这些元数据对象的数据流输入输出关系。
随着大数据技术的发展与应用,在大数据治理领域出现了数据血缘分析的需求,通过对数据库进行操作的结构化查询语句的分析与处理,可以梳理出数据库之间表、字段的映射关系,形成数据地图,以便在海量、巨大的数据中追踪数据的流向,查看大数据系统中上游数据的来源与下游数据的去向,方便大数据开发人员以及业务分析人员掌握数据的消费与来源,从而更好地管理大数据系统,挖掘出数据血缘关系的价值。
传统血缘分析一般是通过对SQL进行解析到语法树,以获取数据的血缘关系,此种方法可以理解为静态的血缘解析。例如,公开号为CN111538743A的发明专利申请公开了一种基于SQL的数据血缘关系分析方法以及系统,所述方法首先从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗;再对规则化的SQL语句进行词法分析,生成抽象语法树,并遍历抽象语法树对SQL语句进行句法解析;然后根据抽象语法树对SQL语句进行血缘关系分析,得到血缘关系分析结果;最后根据血缘关系分析结果绘制SQL语句的数据血缘关系图,并进行可视化显示。
上述静态的血缘解析方法存在如下缺点:
(1)要求开发者在SQL语句中列出具体字段名称,不能使用通配符写法,对开发者有一定约束;
(2)若ETL脚本中的SQL语句未发生改变,则解析出来的语法树结果保持一致;
(3)若数据库的表结构发生了改变,新增或修改了表字段后,需手动修改ETL脚本中SQL语句的字段部分。
因此,如何针对上述静态血缘分析的缺点,提供一种动态且准确地进行数据血缘分析的方法,是本领域亟待解决的问题。
发明内容
本发明的目的是针对现有技术的缺陷,提供一种数据血缘分析方法、装置、设备及存储介质。本发明基于任务调度及数据库埋点进行数据血缘分析,能够对使用通配符的SQL语句进行处理,同时自动适应数据库中表结构的变化,无需手动修改ETL脚本中SQL语句字段部分,动态生成数据血缘图。
为了实现以上目的,本发明采用以下技术方案:
一种数据血缘分析方法,包括步骤:
S1、获取调度任务的脚本;
S2、解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;
S3、遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;
S4、基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
进一步地,所述脚本包括xml格式的kettle脚本和json格式的datax脚本。
进一步地,当所述脚本为kettle脚本时,步骤S3包括:
S311、对SQL语句进行二次解析,得到抽象语法树;
S312、从所述抽象语法树中获取涉及到的字段信息;
S313、根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点及中间转化节点;
S314、遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
S315、遍历所有输出节点,获取输出节点的SQL语句中的字段形成输出字段集合;
S316、遍历所有中间节点,获取中间节点内部的字段映射信息作为作业节点内部的字段映射信息。
进一步地,当所述脚本为datax脚本时,步骤S3包括:
S321、根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点;
S322、对输入节点中的SQL语句进行二次解析,得到抽象语法树;
S323、从所述抽象语法树中获取涉及到的字段信息;
S324、遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
S325、遍历所有输出节点,判断输出节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输出字段,若否,则获取表输入中该表所有的字段作为输出字段,将所有的输出字段形成输出字段集合;
S326、将作业节点内部的字段映射信息设置为空。
本发明还提出一种数据血缘分析装置,包括:
第一获取单元,用于获取调度任务的脚本;
第一解析单元,用于解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;
第一遍历单元,用于遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;
生成单元,用于基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
进一步地,所述脚本包括xml格式的kettle脚本和json格式的datax脚本。
进一步地,当所述脚本为kettle脚本时,第一遍历单元包括:
第二解析单元,用于对SQL语句进行二次解析,得到抽象语法树;
第二获取单元,用于从所述抽象语法树中获取涉及到的字段信息;
第一划分单元,用于根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点及中间转化节点;
第二遍历单元,用于遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
第三遍历单元,用于遍历所有输出节点,获取输出节点的SQL语句中的字段形成输出字段集合;
第四遍历单元,用于遍历所有中间节点,获取中间节点内部的字段映射信息作为作业节点内部的字段映射信息。
进一步地,当所述脚本为datax脚本时,第一遍历单元包括:
第三解析单元,用于根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点;
第三获取单元,用于对输入节点中的SQL语句进行二次解析,得到抽象语法树;
第二划分单元,用于从所述抽象语法树中获取涉及到的字段信息;
第五遍历单元,用于遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
第六遍历单元,用于遍历所有输出节点,判断输出节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输出字段,若否,则获取表输入中该表所有的字段作为输出字段,将所有的输出字段形成输出字段集合;
设置单元,用于将作业节点内部的字段映射信息设置为空。
本发明还提出一种计算机设备,所述设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的数据血缘分析方法。
本发明还提出一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的数据血缘分析方法。
本发明公开的数据血缘分析方法、装置、设备及存储介质,与现有技术相比,具有如下优点:
(1)本发明对脚本进行分析,当SQL语句中不包括具体的字段名称,只包括通配符时,获取相应操作表的所有字段作为处理字段,避免了要求开发者在SQL语句中列出具体字段名称,不能使用通配符写法,对开发者有一定约束的问题,能够对所有的SQL语句进行分析与处理;
(2)本发明根据数据库连接信息动态获取数据库中的表信息,因此,当数据库中的表结构发生变化时,能够动态获取到最新的数据库中的字段名称和类型,无需修改脚本中SQL语句的相应字段,适应了表结构的动态变化。
(3)本发明对ETL脚本进行动态解析,解析的数据血缘图能够适应数据库表结构等的变化,即使ETL脚本中的SQL语句未发生改变,解析出来的语法树结果也可能发生变化。
(3)若数据库的表结构发生了改变,新增或修改了表字段后,需手动修改ETL脚本中SQL语句的字段部分。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据血缘分析方法流程示意图;
图2为本发明实施例提供的数据血缘分析方法中步骤S3的一种实现流程示意图;
图3为本发明实施例提供的数据血缘分析方法中步骤S3的另一种实现流程示意图;
图4为本发明实施例提供的数据血缘分析装置的各单元的示意性框图;
图5为本发明实施例提供的数据血缘分析装置的第一遍历单元的一种子结构示意性框图;
图6为本发明实施例提供的数据血缘分析装置的第一遍历单元的另一种子结构示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本实施例提出了一种数据血缘分析方法,该分析方法应用于服务器中,例如可以为云端服务器。该服务器获取调度任务的脚本,对调度任务的脚本进行处理,基于调度任务的脚本进行数据血缘分析。
本发明所述的调度任务脚本是通过ETL(Extract-Transform-Load)工具生成,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
本发明基于调度任务脚本及数据库埋点动态地进行数据血缘分析,生成数据血缘关系。如图1所示,数据血缘分析方法包括以下步骤S1至S4:
S1、获取调度任务的脚本;
本发明通过对ETL工具生成的调度任务脚本进行分析,能快速地找到每个ETL脚本中的输入项以及相对应的输出项,以快速生成数据血缘图。本发明所述的数据血缘分析方法适用于各种ETL工具生成的脚本。本发明以当前使用较为广泛的ETL工具kettle和datax为例,对kettle和datax生成的脚本文件进行分析,生成数据血缘图。
具体地,本发明获取调度任务的脚本,把xml格式的kettle脚本和json格式的datax脚本进行批量读入,然后构建树状的数据血缘关系,最终输出为一个完整的数据血缘图。因此,本发明首先获取ETL工具生成的调度任务脚本。
S2、解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;
获取到调度任务的脚本信息后,本发明基于脚本数据获取数据库连接信息。此外,本发明对脚本进行解析,获取调度任务中的任务作业节点之间的流向,形成一个调度任务作业节点间流向的无回路有向图(Directed Acyclic Graph,DAG)。
具体地,对于kettle生成的调度任务xml脚本,为了获取数据库连接信息,本发明首先获取属性文件,判断数据库连接信息是否以变量的方式存储在属性文件中,若是,则从属性文件中不断地动态获取数据库连接信息,并将获取到的数据库连接信息转译得到输入库和输出库相对应的数据库连接信息。如果解析后得到的数据库连接信息中直接包括了输入库和输出库相对应的数据库连接信息,则直接使用xml脚本中的数据库连接信息。
对于datax生成的调度任务xml脚本,由于datax脚本中一般直接包含输入库和输出库相对应的数据库连接信息,一般不存储在变量中,因此,本发明可以直接对xml脚本进行解析,得到输入库与输出库相对应的数据库连接信息。
对于数据库,可能对应多个不同的任务请求,对数据库进行的操作通过SQL语句来实现,将进行操作的SQL语句汇集起来可以形成相应的SQL语句集合。调度任务的脚本中包括SQL代码,但是直接从脚本中获取的SQL代码可能包括无关内容,因此,本发明对调度任务的脚本进行解析,通过对SQL代码标志位的寻找获取相应的SQL语句,同时滤除调度任务脚本中的无关内容。
本发明采用无回路有向图(Directed Acyclic Graph,DAG)表示任务间的关系图。DAG图是由一系列顶点和连接顶点的边组成的数据结构,用图的顶点表示一个任务,图的边表示任务之间的依赖关系。任务之间存在依赖关系是指它的前置任务已经执行成功(或者没有前置任务),它才可以执行。例如,当任务C依赖任务A和任务B时,DAG中存在顶点A、顶点B指向顶点C的有向边,任务C需要在任务A和任务B都已经执行成功后才可以开始执行。因此,本发明对调度任务的脚本进行解析,为各个任务生成相应的顶点,当任务间存在依赖关系时,在任务顶点间生成有向边,由此生成调度任务脚本对应的调度任务作业节点间流向的DAG图。
S3、遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;
获取调度任务作业节点间流向的无回路有向图后,本发明对各个作业节点依次进行处理,分别确定输入字段集合、输出字段集合、各个作业节点内部的字段映射信息。对于kettle脚本,如图2所示,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息具体为:
S311、对SQL语句进行二次解析,得到抽象语法树;
为了确定业务请求对目标数据库进行了何种操作,本发明通过构建抽象语法树(Abstract Syntax Tree,AST)并对抽象语法树进行处理来实现。抽象语法树能够实现对SQL语句的语法分析,将SQL语句中的字符串变换成一个结构体,能够让计算机更容易理解SQL语句中的字符串的具体含义。具体地,本发明对SQL语句进行二次解析,得到抽象语法树。对SQL语句进行解析可以采用SQL语句解析器,本发明不作限定。
S312、从所述抽象语法树中获取涉及到的字段信息;
在对SQL语句进行解析、得到每条SQL语句的抽象语法树之后,本发明对每条SQL语句的抽象语法树进行遍历,得到该条SQL语句中涉及到的字段信息。
S313、根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点及中间转化节点;
本发明针对无回路有向图中不同类型的作业节点分别进行处理。具体地,根据无回路有向图中作业节点的出度及入度,将作业节点划分为输入节点、输出节点及中间转化节点。对于输入节点,其是指出度大于0、入度为0的作业节点。对于输出节点,其是指出度为0、入度大于0的作业节点。对于出度、入度均大于0的作业节点,其为中间转化节点。
S314、遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
生成数据血缘图的核心是进行字段间的映射,因此,本发明分别对输入节点、输出节点及中间转化节点进行处理,以确定相应的输入字段、输出字段及输入字段与输出字段间的映射关系。对于输入节点,本发明获取相应节点的SQL语句,判断该SQL语句中是否包含了字段值。对于输入节点对应的SQL语句中的字段值,直接作为输入字段。当SQL语句中不包含字段值,而是采用全匹配符时,本发明根据SQL语句中的表输入,直接获取该表所有的字段作为输入字段。具体地,本发明基于SQL语句,确定相应的操作表,根据数据库连接信息,动态连接相应的数据库,从数据库中获取当前表的所有字段,作为输入字段。本发明遍历所有输入节点,将针对每个输入节点处理获取的输入字段组成输入字段集合。
S315、遍历所有输出节点,获取输出节点的SQL语句中的字段形成输出字段集合;
对于输出节点,本发明获取相应节点的SQL语句,将输出节点对应的SQL语句中的字段值,直接作为输出字段。本发明遍历所有输出节点,将针对每个输出节点处理获取的输出字段组成输出字段集合。
S316、遍历所有中间节点,获取中间节点内部的字段映射信息作为作业节点内部的字段映射信息;
对于中间节点,其是出度、入度都不为0的节点。因此,本发明结合节点间的有向无环图,得到每个中间节点的输入的字段,根据不同中间节点的功能形成该节点每个输入字段对应的输出字段,形成一个映射表。具体地,本发明获取中间节点的SQL语句,根据SQL语句中的字段值确定输入字段及其对应的输出字段,形成中间节点内部的字段映射信息作为作业节点内部的字段映射信息。
对于json脚本,如图3所示,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息具体为:
S321、根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点;
本发明针对无回路有向图中不同类型的作业节点分别进行处理。具体地,根据无回路有向图中作业节点的出度及入度,将作业节点划分为输入节点、输出节点及中间转化节点。对于输入节点,其是指出度大于0、入度为0的作业节点。对于输出节点,其是指出度为0、入度大于0的作业节点。对于出度、入度均大于0的作业节点,其为中间转化节点。对于datax脚本,其主要包括输入节点、输出节点。因此,对于datax脚本的处理,本发明首先根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点。
S322、对输入节点中的SQL语句进行二次解析,得到抽象语法树;
为了确定业务请求对目标数据库进行了何种操作,本发明通过构建抽象语法树(Abstract Syntax Tree,AST)并对抽象语法树进行处理来实现。抽象语法树能够实现对SQL语句的语法分析,将SQL语句中的字符串变换成一个结构体,能够让计算机更容易理解SQL语句中的字符串的具体含义。具体地,本发明对SQL语句进行二次解析,得到抽象语法树。对SQL语句进行解析可以采用SQL语句解析器,本发明不作限定。对于datax脚本,对于目标数据库的处理操作主要体现在输入节点。因此,本发明进行datax脚本的输入节点中的SQL语句进行二次解析,得到抽象语法树。
S323、从所述抽象语法树中获取涉及到的字段信息;
在对输入节点中的SQL语句进行解析、得到每条SQL语句的抽象语法树之后,本发明对每条SQL语句的抽象语法树进行遍历,得到该条SQL语句中涉及到的字段信息。
S324、遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
生成数据血缘图的核心是进行字段间的映射,因此,对于datax脚本,本发明分别对输入节点、输出节点进行处理,以确定相应的输入字段、输出字段及输入字段与输出字段间的映射关系。对于输入节点,本发明获取输入节点的SQL语句,判断该SQL语句中是否包含了字段值。对于输入节点对应的SQL语句中的字段值,直接作为输入字段。当SQL语句中不包含字段值,而是采用全匹配符时,本发明根据SQL语句中的表输入,直接获取该表所有的字段作为输入字段。具体地,本发明基于SQL语句,确定相应的操作表,根据数据库连接信息,动态连接相应的数据库,从数据库中获取当前表的所有字段,作为输入字段。本发明遍历所有输入节点,将针对每个输入节点处理获取的输入字段组成输入字段集合。
S325、遍历所有输出节点,判断输出节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输出字段,若否,则获取表输入中该表所有的字段作为输出字段,将所有的输出字段形成输出字段集合;
对于输出节点,本发明获取输出节点的SQL语句,判断该SQL语句中是否包含了字段值。对于输出节点对应的SQL语句中的字段值,直接作为输出字段。当SQL语句中不包含字段值,而是采用全匹配符时,本发明根据SQL语句中的表输出,直接获取该表所有的字段作为输出字段。具体地,本发明基于SQL语句,确定相应的操作表,根据数据库连接信息,动态连接相应的数据库,从数据库中获取当前表的所有字段,作为输出字段。本发明遍历所有输出节点,将针对每个输出节点处理获取的输出字段组成输出字段集合。
S326、将作业节点内部的字段映射信息设置为空。
由于datax脚本主要包括输入节点和输出节点,因为,本发明在根据输入节点和输出节点分别确定出输入字段集合和输出字段结合后,将作业节点内部的字段映射信息设置为空。
S4、基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
有向无环图能够有效指示作业节点间的关系,作业节点内部的字段映射信息能够有效指示节点内部字段的映射关系。因此,本发明通过作业节点之间的映射关系和作业节点内部的映射信息,最终能够实现输入字段与输出字段的连线,最终形成一个完整的数据血缘图。对于datax脚本,由于作业节点内部的字段映射信息为空,因此直接通过有向无环图,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
图4是本发明实施例提供的一种数据血缘分析装置的示意性框图。如图4所示,对应于以上数据血缘分析方法,本发明还提供一种数据血缘分析装置。该数据血缘分析装置包括用于执行上述数据血缘分析方法的单元,该装置可以被配置于服务器中。具体地,请参阅图4,该数据血缘分析装置包括第一获取单元、第一解析单元、第一遍历单元、生成单元。
第一获取单元,用于获取调度任务的脚本;
第一解析单元,用于解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;
第一遍历单元,用于遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;
生成单元,用于基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
在一实施例中,所述第一遍历单元包括第二解析单元、第二获取单元、第一划分单元、第二遍历单元、第三遍历单元、第四遍历单元。
第二解析单元,用于对SQL语句进行二次解析,得到抽象语法树;
第二获取单元,用于从所述抽象语法树中获取涉及到的字段信息;
第一划分单元,用于根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点及中间转化节点;
第二遍历单元,用于遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
第三遍历单元,用于遍历所有输出节点,获取输出节点的SQL语句中的字段形成输出字段集合;
第四遍历单元,用于遍历所有中间节点,获取中间节点内部的字段映射信息作为作业节点内部的字段映射信息。
在一实施例中,所述第一遍历单元包括第三解析单元、第三获取单元、第二划分单元、第五遍历单元、第六遍历单元、设置单元。
第三解析单元,用于根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点;
第三获取单元,用于对输入节点中的SQL语句进行二次解析,得到抽象语法树;
第二划分单元,用于从所述抽象语法树中获取涉及到的字段信息;
第五遍历单元,用于遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
第六遍历单元,用于遍历所有输出节点,判断输出节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输出字段,若否,则获取表输入中该表所有的字段作为输出字段,将所有的输出字段形成输出字段集合;
设置单元,用于将作业节点内部的字段映射信息设置为空。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述数据血缘分析装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述数据血缘分析装置可以实现为一种计算机程序的形式,该计算机程序可以在计算机设备上运行。
该计算机设备可以是服务器,其中,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
该非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行一种数据血缘分析方法。
该处理器用于提供计算和控制能力,以支撑整个计算机设备的运行。
该内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行一种数据血缘分析方法。
该网络接口用于与其它设备进行网络通信。本领域技术人员可以理解,上述计算机设备结构仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器用于运行存储在存储器中的计算机程序,该程序实现实施例一所述的一种数据血缘分析方法。
应当理解,在本申请实施例中,处理器可以是中央处理单元 (CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器 (DigitalSignal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行实施例一所述的一种数据血缘分析方法。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例, 而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据血缘分析方法,其特征在于,包括步骤:
S1、获取调度任务的脚本;
S2、解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;
S3、遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;
S4、基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
2.根据权利要求1所述的数据血缘分析方法,其特征在于,所述脚本包括xml格式的kettle脚本和json格式的datax脚本。
3.根据权利要求2所述的数据血缘分析方法,其特征在于,当所述脚本为kettle脚本时,步骤S3包括:
S311、对SQL语句进行二次解析,得到抽象语法树;
S312、从所述抽象语法树中获取涉及到的字段信息;
S313、根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点及中间转化节点;
S314、遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
S315、遍历所有输出节点,获取输出节点的SQL语句中的字段形成输出字段集合;
S316、遍历所有中间节点,获取中间节点内部的字段映射信息作为作业节点内部的字段映射信息。
4.根据权利要求2所述的数据血缘分析方法,其特征在于,当所述脚本为datax脚本时,步骤S3包括:
S321、根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点;
S322、对输入节点中的SQL语句进行二次解析,得到抽象语法树;
S323、从所述抽象语法树中获取涉及到的字段信息;
S324、遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
S325、遍历所有输出节点,判断输出节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输出字段,若否,则获取表输入中该表所有的字段作为输出字段,将所有的输出字段形成输出字段集合;
S326、将作业节点内部的字段映射信息设置为空。
5.一种数据血缘分析装置,其特征在于,包括:
第一获取单元,用于获取调度任务的脚本;
第一解析单元,用于解析所述调度任务的脚本,获取数据库连接信息、SQL语句及所述调度任务作业节点间流向的无回路有向图;
第一遍历单元,用于遍历各作业节点,确定输入字段集合、输出字段集合、作业节点内部的字段映射信息;
生成单元,用于基于所述有向无环图及作业节点内部的字段映射信息,构建所述输入字段集合与输出字段集合间的连线,生成数据血缘图。
6.根据权利要求5所述的数据血缘分析装置,其特征在于,所述脚本包括xml格式的kettle脚本和json格式的datax脚本。
7.根据权利要求6所述的数据血缘分析装置,其特征在于,当所述脚本为kettle脚本时,第一遍历单元包括:
第二解析单元,用于对SQL语句进行二次解析,得到抽象语法树;
第二获取单元,用于从所述抽象语法树中获取涉及到的字段信息;
第一划分单元,用于根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点及中间转化节点;
第二遍历单元,用于遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
第三遍历单元,用于遍历所有输出节点,获取输出节点的SQL语句中的字段形成输出字段集合;
第四遍历单元,用于遍历所有中间节点,获取中间节点内部的字段映射信息作为作业节点内部的字段映射信息。
8.根据权利要求6所述的数据血缘分析装置,其特征在于,当所述脚本为datax脚本时,第一遍历单元包括:
第三解析单元,用于根据出度及入度,将无回路有向图的作业节点划分为输入节点、输出节点;
第三获取单元,用于对输入节点中的SQL语句进行二次解析,得到抽象语法树;
第二划分单元,用于从所述抽象语法树中获取涉及到的字段信息;
第五遍历单元,用于遍历所有输入节点,判断输入节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输入字段,若否,则获取表输入中该表所有的字段作为输入字段,将所有的表输入字段形成输入字段集合;
第六遍历单元,用于遍历所有输出节点,判断输出节点的SQL语句是否包含了字段值,若是,则将SQL语句中的字段作为输出字段,若否,则获取表输入中该表所有的字段作为输出字段,将所有的输出字段形成输出字段集合;
设置单元,用于将作业节点内部的字段映射信息设置为空。
9.一种计算机设备,其特征在于,所述设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011488477.0A CN112434046B (zh) | 2020-12-16 | 2020-12-16 | 一种数据血缘分析方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011488477.0A CN112434046B (zh) | 2020-12-16 | 2020-12-16 | 一种数据血缘分析方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112434046A true CN112434046A (zh) | 2021-03-02 |
CN112434046B CN112434046B (zh) | 2021-09-17 |
Family
ID=74691540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011488477.0A Active CN112434046B (zh) | 2020-12-16 | 2020-12-16 | 一种数据血缘分析方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112434046B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204594A (zh) * | 2021-05-28 | 2021-08-03 | 平安国际智慧城市科技股份有限公司 | 数据血缘关系生成方法、装置、存储介质和计算机设备 |
CN113326401A (zh) * | 2021-06-16 | 2021-08-31 | 上海哔哩哔哩科技有限公司 | 字段血缘生成方法及系统 |
CN113343036A (zh) * | 2021-08-04 | 2021-09-03 | 杭州远眺科技有限公司 | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 |
CN114218250A (zh) * | 2021-12-13 | 2022-03-22 | 天翼爱音乐文化科技有限公司 | 一种数据血缘展示方法、系统、装置及存储介质 |
CN116450908A (zh) * | 2023-06-19 | 2023-07-18 | 北京大数据先进技术研究院 | 基于数据湖的自助式数据分析方法、装置和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545030A (zh) * | 2017-07-17 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 数据血缘关系的处理方法、装置及设备 |
CN109582660A (zh) * | 2018-12-06 | 2019-04-05 | 深圳前海微众银行股份有限公司 | 数据血缘分析方法、装置、设备、系统及可读存储介质 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN111666326A (zh) * | 2020-05-29 | 2020-09-15 | 中国工商银行股份有限公司 | Etl调度方法及装置 |
CN112035508A (zh) * | 2020-08-27 | 2020-12-04 | 深圳天源迪科信息技术股份有限公司 | 基于sql在线元数据解析的方法及系统、设备 |
CN112035416A (zh) * | 2020-08-31 | 2020-12-04 | 北京嘀嘀无限科技发展有限公司 | 数据血缘分析方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-16 CN CN202011488477.0A patent/CN112434046B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545030A (zh) * | 2017-07-17 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 数据血缘关系的处理方法、装置及设备 |
CN109582660A (zh) * | 2018-12-06 | 2019-04-05 | 深圳前海微众银行股份有限公司 | 数据血缘分析方法、装置、设备、系统及可读存储介质 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN111666326A (zh) * | 2020-05-29 | 2020-09-15 | 中国工商银行股份有限公司 | Etl调度方法及装置 |
CN112035508A (zh) * | 2020-08-27 | 2020-12-04 | 深圳天源迪科信息技术股份有限公司 | 基于sql在线元数据解析的方法及系统、设备 |
CN112035416A (zh) * | 2020-08-31 | 2020-12-04 | 北京嘀嘀无限科技发展有限公司 | 数据血缘分析方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
叶天琦 等: "数据血缘可视化分析平台研究与应用", 《信息技术与标准化》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204594A (zh) * | 2021-05-28 | 2021-08-03 | 平安国际智慧城市科技股份有限公司 | 数据血缘关系生成方法、装置、存储介质和计算机设备 |
CN113326401A (zh) * | 2021-06-16 | 2021-08-31 | 上海哔哩哔哩科技有限公司 | 字段血缘生成方法及系统 |
CN113343036A (zh) * | 2021-08-04 | 2021-09-03 | 杭州远眺科技有限公司 | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 |
CN113343036B (zh) * | 2021-08-04 | 2021-11-16 | 杭州远眺科技有限公司 | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 |
CN114218250A (zh) * | 2021-12-13 | 2022-03-22 | 天翼爱音乐文化科技有限公司 | 一种数据血缘展示方法、系统、装置及存储介质 |
CN116450908A (zh) * | 2023-06-19 | 2023-07-18 | 北京大数据先进技术研究院 | 基于数据湖的自助式数据分析方法、装置和电子设备 |
CN116450908B (zh) * | 2023-06-19 | 2023-10-03 | 北京大数据先进技术研究院 | 基于数据湖的自助式数据分析方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112434046B (zh) | 2021-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112434046B (zh) | 一种数据血缘分析方法、装置、设备及存储介质 | |
AU2022203666B2 (en) | Generating and applying data transformations in a data import engine | |
US11188556B2 (en) | Correlated incremental loading of multiple data sets for an interactive data prep application | |
JP6505123B2 (ja) | ビッグ・データ・リポジトリにおけるデータ・セットの処理 | |
US20190050466A1 (en) | User Interface to Prepare and Curate Data for Subsequent Analysis | |
KR102143889B1 (ko) | 메타데이터 관리를 위한 시스템 | |
JP5453273B2 (ja) | グラフベース計算におけるデータフロー管理 | |
US20120317096A1 (en) | Relational Query Planning for Non-Relational Data Sources | |
WO2020238597A1 (zh) | 基于Hadoop的数据更新方法、装置、系统及介质 | |
US11593357B2 (en) | Databases and methods of storing, retrieving, and processing data | |
CN111026779A (zh) | 一种基于Flink SQL的数据处理方法、装置、存储介质 | |
CN115543402B (zh) | 一种基于代码提交的软件知识图谱增量更新方法 | |
AU2019356745B2 (en) | Correlated incremental loading of multiple data sets for an interactive data prep application | |
KR102172255B1 (ko) | 분산형 컴퓨팅 태스크를 실행하기 위한 방법 및 장치 | |
CN112015722A (zh) | 数据库管理方法、数据血缘分析方法以及相关装置 | |
WO2013184952A1 (en) | Method for automatic extraction of designs from standard source code | |
Imran et al. | Fast datalog evaluation for batch and stream graph processing | |
Jalili et al. | Indexing next-generation sequencing data | |
CN111460000A (zh) | 一种基于关系型数据库的回溯数据查询方法及系统 | |
CN110580170A (zh) | 软件性能风险的识别方法及装置 | |
CN114020852A (zh) | 知识图谱的展示方法和装置 | |
CN111190886B (zh) | 面向数据库访问的计算流图构建方法、访问方法及装置 | |
Marotta et al. | Managing source schema evolution in web warehouses | |
US10324927B2 (en) | Data-driven union pruning in a database semantic layer | |
US20220075778A1 (en) | Transforming operations of a computer program for execution at a database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |