一种跨系统元数据血缘自动解析方法与流程

未命名 10-19 阅读:107 评论:0
1.本发明属于数据血缘解析领域,针对跨系统间的血缘自动化的解析方法。
背景技术
::2.随着大数据时代来临,信息技术的普及,以及数字化转型的不断推进,以银行业、互联网行业为例,着手进行数据治理来保管企业、银行业的数据资产和数据资源,而数据血缘又是数据治理中的重中之重。3.数据血缘是指数据从源头到目的地的完整路径。在企业级数据管理中,跟踪数据血缘是非常重要的。因为数据血缘用于记录数据是如何被处理的,确保数据在整个数据生命周期中的合规性和正确性,进而提高数据质量和决策的可靠性。此外,数据血缘也可以帮助企业管理者分析和优化数据处理流程,提高效率和降低成本。数据血缘可以追踪数据从源头到目的地的路径,以及数据在这个路径上被哪些系统、应用程序和过程所使用。这对于数据审计、合规性和安全性都是至关重要的。数据血缘还可以帮助企业了解数据的来源、用途和价值。通过血缘分析,企业可以了解哪些数据是最重要的,哪些数据不再需要保留,以及哪些数据可以用于新的业务场景或数据科学项目,以及当数据发生变化时快速地查找出与变化数据相关联的数据库,进而能够做出同样的改变。4.在一个企业内,通常存在多个系统,这些系统之间的数据交互和集成比较复杂,数据可能被多个系统处理和转换。在这种情况下,跟踪数据血缘需要涵盖多个系统和环节,需要跨越多个系统才能确定完整的数据路径。不同系统之间的数据格式和表示方式也可能存在差异,需要进行数据映射和转换。跨系统的血缘构建比单系统内的血缘构建更加困难,因为在不同系统之间传递数据时,需要跨越不同的技术和协议。不同的系统可能使用不同的数据格式、标准和语言,这增加了跨系统数据血缘的复杂性和挑战性。然而,跨系统数据血缘的构建是至关重要的,因为只有了解整个数据流程,才能确保数据的质量和完整性,并提高数据治理的效率和可靠性。5.作为一种可视化的数据集成工具datastage已被广泛应用于各种数据库系统之间的数据抽取、转换、加载操作,在此过程中通常会产生大量的数据引用关系即数据血缘,从元数据角度来看其具体包括各种元数据对象之间的层级引用关系,如:系统与系统、数据库与数据库、表与表、字段与字段以及血缘与血缘来源文件之间的相互引用关系。6.目前关于数据血缘解析的研究主要集中在同一系统内数据库下sql内容的准确性解析,而关于跨系统间基于datastage数据集成工具的血缘解析工作研究甚少,同时关于datastage数据集成工具下的数据血缘分析目前依旧停留在特定技术人员的人工分析或以线下手工台账记录为依据来进行系统间血缘关系的分析,暂无明确的体系化的技术手段以实现数据集成工具内部血缘关系的自动解析,并且人工方式的血缘分析难度大、周期长且分析结果往往不准确,导致生产变更问题频发的同时,严重影响了银行系统业务的开展;与此同时,银行基于datastage数据集成工具现已形成海量的抽数作业,为减少在线实时血缘解析时对datastage数据集成工具服务器频繁查询带来的对抽数作业性能的影响,本发明基于离线解析方式实现抽数作业文件的自动解析,保证解析准确性、时效性的同时,减少了对系统作业运行效率的影响,同时基于解析的血缘关系本发明同步实现了血缘关系与相应抽数作业文件之间关系的建立,解决了血缘关系实际来源的分析问题。如何实现跨系统间数据血缘关系的自动、准确解析,构建企业全系统完整的血缘链路,减少开发人员对于跨系统数据问题的分析难度,保障银行数据治理工作的高效开展,已成为数据血缘分析及应用领域急需解决的问题。技术实现要素:7.本发明针对现有技术中对于跨系统间的血缘关系无法自动查找的技术问题,提出了一种跨系统元数据血缘自动解析方法,可以解决上述问题。8.为实现上述发明目的,本发明采用下述技术方案予以实现:9.一种跨系统元数据血缘自动解析方法,包括:10.(1)、跨系统间血缘文件及配置文件获取步骤,包括:11.获取跨系统数据集成工具datastage下的所有工程;12.获取所述工程下的所有抽数作业,抽数作业的文件中至少记录有组件的数据流向信息;13.(2)、跨系统间血缘文件的组件识别以及关系构建步骤,包括:14.(21)、识别所述抽取作业中的所有组件,获取组件的数据流向信息和组件之间的关系;15.(22)、根据组件的数据流向信息,将各组件的类型进行定义,分别为源端组件、中间组件以及目标组件,并将三种类型的组件构建端点-线-端点的数据结构,所述源端组件为只有数据流出的组件,所述目标组件为只有数据流入的组件,所述中间组件为既有数据流出又有数据流入的组件,构建的端点-线-端点的数据结构中,所述端点为具有数据流入或者流出的组件,所述线中记录有数据流向信息以及所流经的数据内容;16.(3)、数据信息解析步骤,包括:对组件之间传输的具体数据进行解析,包括分别对各组件所承载的元数据信息及元数据信息之间的对应关系进行解析,所述元数据信息包括库信息、表信息以及字段信息;17.(4)、构建数据血缘关系步骤,包括:根据解析的数据信息,梳理出元数据之间关联关系,以及根据数据流向信息,结合所述元数据信息对应生成相应的数据血缘关系对,完成构建数据血缘关系。18.(5)、数据血缘关系的可视化展示步骤,包括:将所构建的数据血缘关系生成线框图并进行展示。19.在有的实施例中,步骤(21)识别所述抽取作业中的所有组件,获取组件的数据流向信息和组件之间的关系的方法包括:20.(211)、分别对各抽数作业进行循环遍历,读取所述抽数作业中的所有端点;21.(212)、识别端点信息,包括识别端点所涉及的组件的名称及类型,查找作业名;22.(213)、识别端点与线之间的关系,完成组件识别后,进行组件与线关系的识别,具体定义结构组成为:作业名.组件名.线名。23.在有的实施例中,步骤(22)中构建端点-线-端点的数据结构的方法包括:24.根据线名获取该线的数据流向信息,所述数据流向信息至少包括该线的两端所连接的组件,并据此建立端点-线-端点的数据结构。25.在有的实施例中,步骤(3)中对组件之间传输的具体数据进行解析的方法包括:26.(31)、根据组件的名称定位组件的位置;27.(32)、根据组件的类型分别定位源端组件、目标组件、中间组件的数据信息位置,其中,源端组件数据信息存于connector、xmlproperties标签内,目标组件数据信息存于target、connector、xmlproperties标签内,中间组件的数据加工信息记录在其所对应的输出线的信息中;28.(33)、分别对源端组件、目标组件、中间组件的数据信息及数据加工信息进行解析;29.(34)、至此便实现源端组件和目标组件中数据库、表、字段信息的解析,中间组件数据加工对应关系的解析,并将该信息存放于源端组件以及中间组件所对应的输出线中。在有的实施例中,步骤(33)中对源端组件的数据信息进行解析的方法包括:30.(3311)、解析源端组件所读取的表所属的数据库的信息,包括:确定所述数据库的连接方式,确定数据库类型,根据数据库的连接方式解析确定所述数据库的schema信息;31.(3312)、解析源端组件所读取的表信息;32.(3313)、解析源端组件所读取的表的字段信息;33.步骤(3311)中,当数据库的连接方式为jdbc连接时,对datasource标签和username标签的内容解析,且当所述标签下的内容不是参数值时,直接进行标签值的读取即解析出相应的schema信息;34.当所述标签下的内容为参数时,则通过参数集查询具体参数值,从具体参数值中获取数据库的schema信息,所述参数集可通过识别isx工程文件下的pst文件进行获取,所述pst文件的文件名为所述参数集的名称,当参数对应的具体值为引用环境变量的标记时,则通过工程获取对应的环境变量进行具体参数值的解析;35.当数据库的连接方式为odbc连接时,解析datasource标签的标签值,获取odbc的数据源名称,通过odbc配置文件获取数据源所对应的url信息以及连接用户的信息,实现所述数据库的schema信息的获取。36.在有的实施例中,步骤(3312)中解析源端组件所读取的表信息包括:37.通过xmlproperties标签下的selectstatement标签的内容进行解析,其记录有所述源端组件所查询的具体库、表、字段信息,若selectstatement标签为空,则通过xmlproperties标签下的table标签内容进行获取,若table标签为空,则通过sql解析程序实现selectstatement标签下sql内容中源端组件中的表信息的解析;38.当解析的schema名称与步骤(3311)解析的schema名称不一致时,则通过selectstatement标签下sql内容解析出相应的表前缀,并将所述schema名称更新为所述表前缀;39.步骤(3313)中解析源端组件所读取的表的字段信息包括:40.通过xmlproperties标签下selectstatement标签的sql内容来解析,主要解析内容包括三部分:字段、字段所属表信息以及字段之间的相对顺序信息;当selectstatement标签中sql内容为空或sql中字段信息为星号时,则基于步骤(3312)解析的表信息或源端组件所读取的表信息,查询元数据表下字段信息,并作为源端组件所读取的表的字段信息。41.在有的实施例中,步骤(33)中对目标组件的数据信息进行解析的方法包括:42.(3321)、解析目标组件所写入的表所属的数据库信息,包括:确定所述数据库的连接方式,确定数据库类型,根据数据库的连接方式解析确定所述数据库的schema信息;43.(3322)、解析目标组件所写入的表信息,即目标表;44.(3323)、解析目标组件所写入的表的字段信息;45.步骤(3322)中,目标组件的xmlproperties标签下的tablename标签记录了目标表的名称,首先,解析tablename标签得到目标表的名称以及目标组件所写入的表所属的数据库的schema信息,若存在schema信息,则以此作为目标组件的写入库信息;若tablename标签的内容为空,则通过所述目标组件中sql标签内容,解析目标组件所写入的目标表名称或目标表名称与所属schema信息,完成目标组件所写入的表信息的解析;46.步骤(3323)中,解析目标组件所写入的表的字段信息,通过目标组件内target标签的dsschema属性值进行解析,其记录有所要写入数据的字段及顺序,解析字段名称及字段相对顺序。47.在有的实施例中,步骤(33)中对中间组件的数据信息进行解析的方法包括:48.(3331)、确定中间组件的输出线所传递的字段信息;49.(3332)、确定中间组件的输入线所传递的字段信息;50.(3333)、确定中间组件的输入线和输出线所传递的字段信息的对应关系。51.解析字段信息加工前后的对应关系,中间组件的输出线记录了其数据加工前后的对应信息,根据输出线的名称读取其所对应的属性值的内容,若f41属性值均为字段信息,则该中间组件的数据操作不涉及字段的转化,中间组件所对应输入线及输出线中的数据信息一致,且为中间组件所有输入线所对应的输入端点组件中所解析的数据信息;若属性值f41中包含线信息,则该中间组件的数据操作涉及字段的转化,中间组件所输出的字段来自不同的输入线,且中间组件所输出字段的顺序与f41属性值中不同输入线所输入字段的顺序保持一致。52.在有的实施例中,步骤(4)构建数据血缘关系步骤中,根据解析的数据库、表、字段对应生成相应的数据血缘关系对,包括:53.(41)、获取任意源端组件所读取的数据信息;54.(42)、根据数据流向,读取其对应的端点,若所述端点为目标组件,则直接根据源端组件与目标组件的字段顺序关系生成库与库、表与表、字段与字段的关联关系,并判断库、表、字段所对应的元数据是否存在,若存在则建立关联关系,并标记其所属作业的名称;若其为中间组件,首先,根据数据流向,读取其输出线中的数据对应关系,其次,更新中间组件的输出线所保存的输入端的数据信息,直至输出线中输入数据为具体的库、表、字段,并以此递归查询直至下一端点组件为目标组件,并判断目标组件及输入目标组件线中的库、表、字段信息是否存在,若存在则建立关联关系,并将关联关系记录于数据库血缘关系表下。55.在有的实施例中,步骤(1)中还包括周期性离线导出datastage工具下的所有内容,从所导出的内容中获取跨系统数据集成工具datastage下的所有工程。56.与现有技术相比,本发明的优点和积极效果是:57.本发明的跨系统元数据血缘自动解析方法,通过对所有工程下的跨系统间血缘文件的自动读取,实现了对抽数作业中四类关键组件的准确解析,并就关键组件间数据流向的关系完成端点-线-端点结构的构建,解决抽数作业中不同组件之间灵活组合的自动适配识别问题。58.其次,基于银行各系统采集存储的元数据信息,结合解析的不同组件之间的数据流向及各组件中所涉及的数据库、表、字段信息,完成各系统之间、数据库与数据库之间、表与表之间、字段与字段之间数据血缘的构建以及存储。59.基于存储的数据血缘关系,进行数据血缘的图形化展示,以展示不同元数据之间数据血缘关系以及数据血缘与相应血缘文件之间的关系,满足数据血缘快速分析的同时实现了对于数据血缘文件的精准定位,便于变更问题的同步修改。60.结合附图阅读本发明的具体实施方式后,本发明的其他特点和优点将变得更加清楚。附图说明61.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。62.图1是本发明提出的跨系统元数据血缘自动解析方法的一种实施例的流程图;63.图2是本发明提出的跨系统元数据血缘自动解析方法的一种实施例中组件数据血缘解析的流程图;64.图3是本发明提出的跨系统元数据血缘自动解析方法的一种实施例中对源端组件的数据信息进行解析流程图;65.图4是本发明提出的跨系统元数据血缘自动解析方法的一种实施例中对目标组件的数据信息进行解析流程图;66.图5是本发明提出的跨系统元数据血缘自动解析方法的一种实施例中对中间组件的数据信息进行解析流程图;67.图6是本发明提出的跨系统元数据血缘自动解析方法的一种实施例中抽数作业的示意图;68.图7是本发明提出的跨系统元数据血缘自动解析方法的一种实施例中数据血缘关系的可视化展示图。具体实施方式69.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。70.需要说明的是,在本发明的描述中,术语“上”、“下”、“左”、“右”、“竖”、“横”、“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示所述装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。71.在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。72.实施例一73.本实施例提出了一种跨系统元数据血缘自动解析方法,如图1所示,包括:74.(1)、跨系统间血缘文件及配置文件获取步骤,包括:75.获取跨系统数据集成工具datastage下的所有工程;76.获取工程下的所有抽数作业,抽数作业的文件中至少记录有组件的数据流向信息;77.(2)、跨系统间血缘文件的组件识别以及关系构建步骤,包括:78.(21)、识别抽取作业中的所有组件,获取组件的数据流向信息和组件之间的关系;79.(22)、根据组件的数据流向信息,将各组件的类型进行定义,分别为源端组件、中间组件以及目标组件,并将三种类型的组件构建端点-线-端点的数据结构,所述源端组件为只有数据流出的组件,所述目标组件为只有数据流入的组件,所述中间组件为既有数据流出又有数据流入的组件,构建的端点-线-端点的数据结构中,所述端点为具有数据流入或者流出的组件,所述线中记录有数据流向信息以及所流经的数据内容;80.(3)、数据信息解析步骤,包括:对组件之间传输的具体数据进行解析,包括分别对各组件所承载的元数据信息及元数据信息之间的对应关系进行解析,所述元数据信息包括库信息、表信息以及字段信息;81.(4)、构建数据血缘关系步骤,包括:根据解析的数据信息,梳理出元数据之间关联关系,以及根据数据流向信息,结合元数据信息解析的元数据信息对应生成相应的数据血缘关系对,完成构建数据血缘关系。82.(5)、数据血缘关系的可视化展示步骤,包括:将所构建的数据血缘关系生成线框图并进行展示。83.本实施例的跨系统元数据血缘自动解析方法,通过对所有工程下的跨系统间血缘文件的自动读取,实现了对抽数作业中四类关键组件的准确解析,并就关键组件间数据流向的关系完成端点-线-端点结构的构建,解决抽数作业中不同组件之间灵活组合的自动适配识别问题。84.其次,基于银行各系统采集存储的元数据信息,结合解析的不同组件之间的数据流向及各组件中所涉及的数据库、表、字段信息,完成各系统之间、数据库与数据库之间、表与表之间、字段与字段之间数据血缘的构建以及存储。85.基于存储的数据血缘关系,进行数据血缘的图形化展示,以展示不同元数据之间数据血缘关系以及数据血缘与相应血缘文件之间的关系,满足数据血缘快速分析的同时实现了对于数据血缘文件的精准定位,便于变更问题的同步修改。86.步骤(2)中为解决不同组件灵活组合情况下的抽数作业统一适配解析,在所有跨系统间血缘文件及配置信息获取完成后,本实施例对所有跨系统文件即isx格式文件进行了解压操作,同时对解压后的跨系统文件遍历读取,构建了一种端点-线-端点的数据结构,实现了抽数作业内的关键组件信息进行了识别、关系构建和存储,具体步骤包括:87.定义抽数作业下的组件信息。88.本实施例获取的抽数作业内容为一种文件格式为bin文件的复合格式,为实现不同组件相互组合的抽数作业的解析,本发明就不同组件进行了抽象定义,首先,将抽数作业的内容抽象定义为由一个或多个端点-线-端点结构组成;其次,对于端点组件进一步细分定义为:源端组件、中间组件、目标组件;再次,对于源端组件即只有输出线数据流向其实为不同端点到不同端点之间数据传递,数据的传递通过不同的线进行连接,实现不同端点-线-端点结构的识别和顺序串联,便实现数据流向的总体描述。89.在有的实施例中,步骤(21)识别所述抽取作业中的所有组件,获取组件的数据流向信息和组件之间的关系的方法包括:90.(211)、分别对各抽数作业进行循环遍历,读取所述抽数作业中的所有端点。91.具体为读取begindsrecord代码段与enddsrecord代码段之间的内容,该代码段之间记录了不同组件的定义以及输出、输出信息。92.设置端点组件的识别原则,对于源端组件、中间组件、目标组件三种组件其不同在组件对应的数据输入、输出不同,源端组件只涉及数据的输出,中间组件涉及数据的输入和输出,目标组件只涉及数据的输入。93.(212)、识别端点信息,包括识别端点所涉及的组件的名称及类型,查找作业名。94.具体读取begindsrecord代码段与enddsrecord代码段之间不同属性信息,首先查找identifier属性内容识别组件名称;其次,查找f1属性内容识别作业类型,对于端点信息其值均为“stage”;再次,查找f9、f10组件内容,若只存在f9则说明定义该组件为目标组件,若只存在f10则说明定义该组件为源端组件,若同时存在f9及f10则定义该组件为中间组件。95.(213)、识别端点与线之间的关系,完成组件识别后,进行组件与线关系的识别。96.可通过f9以及f10的定义内容进行端点与线关系的识别,f9定义内容了数据从某个线条将数据传递到某一端点,具体定义结构组成为:作业名.端点名.线条名,f10则记录了数据从某个端点将数据从某线条传递出去,具体结构与f9一致,解析f9以及f10可得到具体端点的数据输入线以及数据输出线。97.至此便获取到端点名称、端点类型以及输入线、输出线信息。98.完成端点及端点与线之间关系识别后,为构建端点-线-端点之间的数据结构,还需识别不同线及线所对应的端点信息。99.在有的实施例中,识别出具体线信息之后,需对线所涉及的端点信息进行识别,具体可读取begindsrecord代码段与enddsrecord代码段之间f16的定义内容,其内容结构为:源端组件/目标组件,解析f16的内容即可获取线与所涉及端点的信息。步骤(22)中构建端点-线-端点的数据结构的方法包括:100.根据线名获取该线的数据流向信息,所述数据流向信息至少包括该线的两端所连接的组件,并据此建立端点-线-端点的数据结构。101.至此已实现抽数作业下所有组件信息及组件之间的前后关系识别,并将组件组名、组件类型、输入、输出信息记录于数据库,以任意的源端组件为入口,首先,根据跟输出信息便可确定下一端点组件信息,其次,判断其是否为中间组件或目标组件,若为目标组件则数据流向构建完成,若为中间组件,则查询其其输入线条及输出线条信息,以此递归查询其来源端点或输出端点信息,直至端点信息为源端组件或目标组件,至此整个抽数作业的数据流向构建完成。102.步骤(3)的数据信息解析步骤中,由于不同组件内所承载的数据信息不同,完成数据流向的整体构建后,需对数据流向中的具体数据进行解析,即对不同组件内容所承载的元数据信息(库、表、字段)及元数据信息之间的对应关系进行解析。103.对于端点组件来说,源端组件主要记录所要读取的数据信息,中间组件主要记录不同数据信息的加工处理,目标组件则主要记录所需写入的数据信息。104.对于源端组件、目标组件及中间组件的数据信息解析,本发明提供了一套完整的数据信息解析方法,以实现源端组件与目标组件中数据库、表、字段信息的解析。105.在有的实施例中,如图2所示,步骤(3)中对组件之间传输的具体数据进行解析的方法包括:106.(31)、根据组件的名称定位组件的位置。107.抽数作业的具体内容为一种复合格式,本发明具体为遍历抽数作业内容,根据组件的名称进行组件位置的定位具体匹配规则为:stage:组件名称。108.(32)、根据组件的类型分别定位源端组件、目标组件、中间组件的数据信息位置,其中,源端组件数据信息存于connector、xmlproperties标签内,目标组件数据信息存于target、connector、xmlproperties标签内,中间组件的数据加工信息记录在其所对应的输出线的信息中。109.对于源端组件数据信息主要存在于connector标签、xmlproperties标签内,对于目标组件数据信息主要存在于target标签、connector标签、xmlproperties标签内,而对于中间组件的数据加工信息主要记录在其所对应的输出线条信息中,即读取begindsrecord代码段与enddsrecord代码段之间f41中的数据信息及对应加工信息。110.(33)、分别对源端组件、目标组件、中间组件的数据信息及数据加工信息进行解析。111.(34)、至此便实现源端组件和目标组件中数据库、表、字段信息的解析,中间组件数据加工对应关系的解析,并将该信息存放于源端组件以及中间组件所对应的输出线中。112.为实现数据血缘关系构建,首先需准确解析出源端组件所读取表来自的数据库信息,即表所属模式(schema)信息。113.解析确定schema信息,不同数据库类型下schema信息所对应的内容含义不同,应根据不同数据库类型对应获取schema信息,xmlproperties标签下《datasource》、《username》标签记录了数据库配置的url以及连接用户的基本信息,并且通用数据库类型与schema信息的对应关系如表1所示:[0114][0115][0116]表1[0117]在有的实施例中,如图3、图6所示,步骤(33)中对源端组件的数据信息进行解析的方法包括:[0118](3311)、解析源端组件所读取的表所属的数据库的信息,包括:确定数据库的连接方式,确定数据库类型,根据数据库的连接方式解析确定所述数据库的schema信息。[0119]解析确定数据库连接方式后,需严格按照不同数据库连接方式进行schema解析。datastage工具支持多源数据库,不同数据库类型下表所属schema含义不同,必须严格按数据库类型进行对应schema信息的解析,本发明对于数据库类型的判断通过对connector标签下name属性值进行解析判断,name属性值的组成规则为数据库类型connector,如:oracleconnector,代表源端数据库为oracle数据库,解析name属性值即可判断数据库类型。[0120](3312)、解析源端组件所读取的表信息。[0121](3313)、解析源端组件所读取的表的字段信息。[0122]数据库的连接方式具体包括odbc连接或者jdbc连接,可通过解析connector标签内name属性值进行区分,值为odbcconnector代表以odbc方式进行数据库连接,其余值代表为jdbc方式连接。[0123]步骤(3311)中,当数据库的连接方式为jdbc连接时,对datasource标签和username标签的内容解析,通常会存在两种情况,其一,当所述标签下的内容为所述数据库的连接信息时,直接进行标签值的读取即解析出相应的schema信息。[0124]其二,当所述标签下的内容为参数时,则通过参数集查询具体参数值,从具体参数值中获取数据库的schema信息,所述参数集可通过识别isx工程文件下的pst文件进行获取,所述pst文件的文件名为所述参数集的名称,文件内容下存放了参数集下具体参数对应的具体值,url连接信息以及用户信息均可通过.pst文件下参数对应的defaultvalue值进行获取,当参数对应的具体值为引用环境变量的标记时,则通过工程获取对应的环境变量进行具体参数值的解析,即通过dsparams文件以参数名来解析其对应的具体值。[0125]当数据库的连接方式为odbc连接时,解析datasource标签的标签值,获取odbc的数据源名称,解析方式同上述jdbc连接时datasource对应值解析方式相近,取得数据源名称后,需通过odbc配置文件.odbc.ini以获取数据源所对应的url信息以及连接用户的信息。即通过odbc配置文件获取数据源所对应的url信息以及连接用户的信息,实现所述数据库的schema信息的获取。[0126]odbc连接方式的解析步骤包括:匹配odbc的数据源名称,可通过datasource对应标签值于.odbc.ini文件中进行全词匹配。[0127]匹配至相应数据源名称后,则通过数据源下description的属性值进行数据库类型的判断,以根据具体数据库类型获取对应的数据库信息和用户信息,具体可取.odbc.ini文件下database和logonid属性值以进行获取,至此便实现源端组件中表所属schema信息的初步解析。[0128]在有的实施例中,步骤(3312)中解析源端组件所读取的表信息包括:[0129]通过xmlproperties标签下的selectstatement标签的内容进行解析,其记录有所述源端组件所查询的具体库、表、字段信息,若selectstatement标签为空,则通过xmlproperties标签下的table标签内容进行获取,若table标签为空,则通过sql解析程序实现selectstatement标签下sql内容中源端组件中的表信息的解析。[0130]除此之外,考虑到实际情况下抽数用户通常为只读用户,该情况下通过datasource、username解析的schema名称并非实际表所属schema的信息,当解析的schema名称与实际表所属schema名称不一致时,则通过selectstatement标签下sql内容解析出相应的表前缀,并将所述schema名称更新为所述表前缀。[0131]步骤(3313)中解析源端组件所读取的表的字段信息包括:[0132]对于源端组件信息中字段信息的解析,主要通过xmlproperties标签下selectstatement标签的sql内容来解析,主要解析内容包括三部分:字段、字段所属表信息以及字段之间的相对顺序信息。[0133]为解决selectstatement标签sql内容为空或sql中字段信息为“*”星号等情况下字段信息无法解析的问题,当selectstatement标签中sql内容为空或sql中字段信息为星号时,则基于所述元数据信息和源端组件所读取的表信息,查询元数据表下字段信息,并作为源端组件所读取的表的字段信息。[0134]至此便实现源端组件中库、表、字段信息的解析,并将该信息存放于源端组件所对应的数据线条中。[0135]在有的实施例中,如图4所示,步骤(33)中对目标组件的数据信息进行解析的方法包括:[0136](3321)、解析目标组件所写入的表所属的数据库信息,包括:确定所述数据库的连接方式,确定数据库类型,根据数据库的连接方式解析确定所述数据库的schema信息。[0137](3322)、解析目标组件所写入的表信息,即目标表;[0138](3323)、解析目标组件所写入的表的字段信息;[0139]目标组件中所要写入的表信息的解析,不同于源端组件中表的解析方法,步骤(3322)中,目标组件的xmlproperties标签下的tablename标签记录了目标表的名称,首先,解析tablename标签得到目标表的名称以及目标组件所写入的表所属的数据库的schema信息,若存在schema信息,则以此作为目标组件的写入库信息;其次,若tablename标签的内容为空,则通过所述目标组件中sql标签内容,解析目标组件所写入的目标表名称或目标表名称与所属schema信息,完成目标组件所写入的表信息的解析;[0140]步骤(3323)中,解析目标组件所写入的表的字段信息,通过目标组件内target标签的dsschema属性值进行解析,其记录有所要写入数据的字段及顺序,解析字段名称及字段相对顺序。至此便实现目标组件中所要写入库、表及表下字段信息的解析。[0141]关于中间组件信息的数据信息解析,主要包括2部分信息的解析,其一:数据加工前的库、表、字段信息;其二:所加工数据字段的前后库、表、字段的对应关系。[0142]在有的实施例中,如图5所示,步骤(33)中对中间组件的数据信息进行解析的方法包括:[0143](3331)、确定中间组件的输出线所传递的字段信息;[0144](3332)、确定中间组件的输入线所传递的字段信息;[0145](3333)、确定中间组件的输入线和输出线所传递的字段信息的对应关系。[0146]解析字段信息加工前后的对应关系,中间组件的输出线记录了其数据加工前后的对应信息,中间组件实际所接收的输入端信息具体可根据输出线的名称读取其所对应的begindsrecord代码段与enddsrecord代码段之间f41的属性值的内容。根据输出线的名称读取其所对应的属性值的内容,若属性值均为字段信息,则该中间组件的数据操作不涉及字段的转化,中间组件所对应输入线及输出线中的数据信息一致,且为中间组件所有输入线所对应的输入端点组件中所解析的数据信息;若属性值包含线信息,则该中间组件的数据操作涉及字段的转化,中间组件所输出的字段来自不同的输入线,且与所解析的线对应的输入端点组件的字段信息及顺序保持一致。[0147]至此便完成中间组件的数据信息解析,并将该信息记录与中间组件对应的数据线条中。[0148]本实施例对于数据血缘的构建是基于银行各系统下的真实元数据为数据基础,同时根据解析的数据信息,完成对应元数据之间关联关系及数据血缘的生成和构建。[0149]本发明在实际解析、构建过程中对于各系统数据库下的元数据信息进行了统一采集和存储,采集方式为通过jdbc方式连接数据库以conn.getmetadata方法实现不同数据库类型下元数据信息的获取,具体采集的元数据信息内容包括schema、表、字段信息,并按照schema与表、表与字段的关联关系进行统一存储,并添加相关逻辑系统的信息。[0150]在有的实施例中,步骤(4)构建数据血缘关系步骤中,根据解析的数据库、表、字段对应生成相应的数据血缘关系对,包括:[0151](41)、获取任意源端组件所读取的数据信息。[0152](42)、根据数据流向,读取其对应的端点,若所述端点为目标组件,则直接根据源端组件与目标组件的字段顺序关系生成库与库、表与表、字段与字段的关联关系,并判断库、表、字段所对应的元数据是否存在,若存在则建立关联关系,并标记其所属作业的名称;若其为中间组件,首先,根据数据流向,读取其输出线中的数据对应关系,其次,更新中间组件的输出线所保存的输入端的数据信息,即将原本数据信息中的线信息替换为具体的库、表信息,直至输出线中输入数据为具体的库、表、字段,并以此递归查询直至下一端点组件为目标组件,并判断目标组件及输入目标组件线中的库、表、字段信息是否存在,若存在则建立关联关系,并将关联关系记录与数据库血缘关系表下。[0153]如图7所示,步骤(5)、数据血缘关系的可视化展示步骤中,主要为基于存储于数据库血缘关系表下的关联关系,以进行血缘关系的图形化展示,以便于血缘使用人员对于血缘的理解和上手使用。[0154]本发明具体展示内容包括数据来源方和使用方的信息即:逻辑系统、数据库、表、字段信息,同时还对具体血缘关系所涉及的血缘文件系统进行了展示,具体通过读取数据库下所采集和存储的元数据信息,实现了数据血缘的全面展示,同时解决了实际开发过程中上游业务系统数据库变更,下游系统所被影响范围不明确及具体影响位置定位不清晰的问题。[0155]为解决海量跨系统间血缘文件的自动获取问题,减少血缘解析过程中对于datastage数据集成工具服务器频繁查询带来的抽数性能的影响,本实施例采用周期性离线导出方式以实现datastage工具下所有工程内容的快速获取。在有的实施例中,步骤(1)中还包括周期性离线导出datastage工具下的所有内容,从所导出的内容中获取跨系统数据集成工具datastage下的所有工程。时间周期具体结合企业datastage数据集成工具下抽数作业的变更周期进行对应配置,以实现抽数作业内容的及时更新保证血缘解析结果的时效性,综合对比不同方案,本实施例设计了一种离线导出方式即部署自动化脚本工程实现跨系统间血缘文件的自动获取,而未采用访问跨系统抽数工具datastage服务器的方式实时读取的方式获取工程文件,并以设置的时间区间周期性实现所有工程文件、环境变量配置文件、以及以odbc方式连接的配置文件的自动获取,并存放于指定的服务器路径下,有效解决了实时读取及解析时对于跨系统抽数工具datastage服务器资源频繁访问所造成的资源占用影响。[0156]以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,对于本领域的普通技术人员来说,依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明所要求保护的技术方案的精神和范围。当前第1页12当前第1页12
技术特征:
1.一种跨系统元数据血缘自动解析方法,其特征在于,包括:(1)、跨系统间血缘文件及配置文件获取步骤,包括:获取跨系统数据集成工具datastage下的所有工程;获取所述工程下的所有抽数作业,抽数作业的文件中至少记录有组件的数据流向信息;(2)、跨系统间血缘文件的组件识别以及关系构建步骤,包括:(21)、识别所述抽取作业中的所有组件,获取组件的数据流向信息和组件之间的关系;(22)、根据组件的数据流向信息,将各组件的类型进行定义,分别为源端组件、中间组件以及目标组件,并将三种类型的组件构建端点-线-端点的数据结构,所述源端组件为只有数据流出的组件,所述目标组件为只有数据流入的组件,所述中间组件为既有数据流出又有数据流入的组件,构建的端点-线-端点的数据结构中,所述端点为具有数据流入或者流出的组件,所述线中记录有数据流向信息以及所流经的数据内容;(3)、数据信息解析步骤,包括:对组件之间传输的具体数据进行解析,包括分别对各组件所承载的元数据信息及元数据信息之间的对应关系进行解析,所述元数据信息包括库信息、表信息以及字段信息;(4)、构建数据血缘关系步骤,包括:根据解析的数据信息,梳理出元数据之间关联关系,以及根据数据流向信息,结合所述元数据信息对应生成相应的数据血缘关系对,完成构建数据血缘关系;(5)、数据血缘关系的可视化展示步骤,包括:将所构建的数据血缘关系生成线框图并进行展示。2.根据权利要求1所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(21)识别所述抽取作业中的所有组件,获取组件的数据流向信息和组件之间的关系的方法包括:(211)、分别对各抽数作业进行循环遍历,读取所述抽数作业中的所有端点;(212)、识别端点信息,包括识别端点所涉及的组件的名称及类型,查找作业名;(213)、识别端点与线之间的关系,完成组件识别后,进行组件与线关系的识别,具体定义结构组成为:作业名.组件名.线名。3.根据权利要求2所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(22)中构建端点-线-端点的数据结构的方法包括:根据线名获取该线的数据流向信息,所述数据流向信息至少包括该线的两端所连接的组件,并据此建立端点-线-端点的数据结构。4.根据权利要求1所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(3)中对组件之间传输的具体数据进行解析的方法包括:(31)、根据组件的名称定位组件的位置;(32)、根据组件的类型分别定位源端组件、目标组件、中间组件的数据信息位置,其中,源端组件数据信息存于connector、xmlproperties标签内,目标组件数据信息存于target、connector、xmlproperties标签内,中间组件的数据加工信息记录在其所对应的输出线的信息中;(33)、分别对源端组件、目标组件、中间组件的数据信息进行解析;(34)、至此便实现源端组件和目标组件中数据库、表、字段信息的解析,间组件数据加
工对应关系的解析,并将该信息存放于源端组件以及中间组件所对应的输出线中。5.根据权利要求4所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(33)中对源端组件的数据信息进行解析的方法包括:(3311)、解析源端组件所读取的表所属的数据库的信息,包括:确定所述数据库的连接方式,确定数据库类型,根据数据库的连接方式解析确定所述数据库的schema信息;(3312)、解析源端组件所读取的表信息;(3313)、解析源端组件所读取的表的字段信息;步骤(3311)中,当数据库的连接方式为jdbc连接时,对datasource标签和username标签的内容解析,当所述标签下的内容为所述数据库的连接信息时,直接进行标签值的读取即解析出相应的schema信息;当所述标签下的内容为参数时,则通过参数集查询具体参数值,从具体参数值中获取数据库的schema信息,所述参数集可通过识别isx工程文件下的pst文件进行获取,所述pst文件的文件名为所述参数集的名称,当参数对应的具体值为引用环境变量的标记时,则通过工程获取对应的环境变量进行具体参数值的解析;当数据库的连接方式为odbc连接时,解析datasource标签的标签值,获取odbc的数据源名称,通过odbc配置文件获取数据源所对应的url信息以及连接用户的信息,实现所述数据库的schema信息的获取。6.根据权利要求5所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(3312)中解析源端组件所读取的表信息包括:通过xmlproperties标签下的selectstatement标签的内容进行解析,其记录有所述源端组件所查询的具体库、表、字段信息,若selectstatement标签为空,则通过xmlproperties标签下的table标签内容进行获取,若table标签为空,则通过sql解析程序实现selectstatement标签下sql内容中源端组件中的表信息的解析;当解析的schema名称与实际表所属schema名称不一致时,则通过selectstatement标签下sql内容解析出相应的表前缀,并将所述schema名称更新为所述表前缀;步骤(3313)中解析源端组件所读取的表的字段信息包括:通过xmlproperties标签下selectstatement标签的sql内容来解析,主要解析内容包括三部分:字段、字段所属表信息以及字段之间的相对顺序信息;当selectstatement标签中sql内容为空或sql中字段信息为星号时,则基于所述元数据信息和源端组件所读取的表信息,查询元数据表下字段信息,并作为源端组件所读取的表的字段信息。7.根据权利要求4所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(33)中对目标组件的数据信息进行解析的方法包括:(3321)、解析目标组件所写入的表所属的数据库信息,包括:确定所述数据库的连接方式,确定数据库类型,根据数据库的连接方式解析确定所述数据库的schema信息;(3322)、解析目标组件所写入的表信息,即目标表;(3323)、解析目标组件所写入的表的字段信息;步骤(3322)中,目标组件的xmlproperties标签下的tablename标签记录了目标表的名称,首先,解析tablename标签得到目标表的名称以及目标组件所写入的表所属的数据库的schema信息,若存在schema信息,则以此作为目标组件的写入库信息;若tablename标签的
内容为空,则通过所述目标组件中sql标签内容,解析目标组件所写入的目标表名称或目标表名称与所属schema信息,完成目标组件所写入的表信息的解析;步骤(3323)中,解析目标组件所写入的表的字段信息,通过目标组件内target标签的dsschema属性值进行解析,其记录有所要写入数据的字段及顺序,解析字段名称及字段相对顺序。8.根据权利要求4所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(33)中对中间组件的数据信息进行解析的方法包括:(3331)、确定中间组件的输出线所传递的字段信息;(3332)、确定中间组件的输入线所传递的字段信息;(3333)、确定中间组件的输入线和输出线所传递的字段信息的对应关系。9.根据权利要求8所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(4)构建数据血缘关系步骤中,根据解析的数据库、表、字段对应生成相应的数据血缘关系对,包括:(41)、获取任意源端组件所读取的数据信息;(42)、根据数据流向,读取其对应的端点,若所述端点为目标组件,则直接根据源端组件与目标组件的字段顺序关系生成库与库、表与表、字段与字段的关联关系,并判断库、表、字段所对应的元数据是否存在,若存在则建立关联关系,并标记其所属作业的名称;若其为中间组件,首先,根据数据流向,读取其输出线中的数据对应关系,其次,更新中间组件的输出线所保存的输入端的数据信息,直至输出线中输入数据为具体的库、表、字段,并以此递归查询直至下一端点组件为目标组件,并判断目标组件及输入目标组件线中的库、表、字段信息是否存在,若存在则建立关联关系,并将关联关系记录与数据库血缘关系表下。10.根据权利要求1-9任一项所述的跨系统元数据血缘自动解析方法,其特征在于,步骤(1)中还包括周期性离线导出datastage工具下的所有内容,从所导出的内容中获取跨系统数据集成工具datastage下的所有工程。

技术总结
本发明公开了一种跨系统元数据血缘自动解析方法,包括:(1)、跨系统间血缘文件及配置文件获取步骤;(2)、跨系统间血缘文件的组件识别以及关系构建步骤;(3)、数据信息解析步骤;(4)、构建数据血缘关系步骤;(5)、数据血缘关系的可视化展示步骤,包括:将所构建的数据血缘关系生成线框图并进行展示。本发明的跨系统元数据血缘自动解析方法,通过对所有工程下的跨系统间血缘文件的自动读取,实现了对抽数作业中的关键组件的准确解析,并就关键组件间数据流向的关系完成端点-线-端点结构的构建,解决抽数作业中不同组件之间灵活组合的自动适配识别问题。识别问题。识别问题。


技术研发人员:卫少林 刘俊涛 于宏亮 刘丽丽 吴晓刚
受保护的技术使用者:青岛银行股份有限公司
技术研发日:2023.06.30
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐