CN114416848A - 基于数据仓库的数据血缘关系处理方法及装置 - Google Patents
基于数据仓库的数据血缘关系处理方法及装置 Download PDFInfo
- Publication number
- CN114416848A CN114416848A CN202210085894.3A CN202210085894A CN114416848A CN 114416848 A CN114416848 A CN 114416848A CN 202210085894 A CN202210085894 A CN 202210085894A CN 114416848 A CN114416848 A CN 114416848A
- Authority
- CN
- China
- Prior art keywords
- contained
- information
- logic
- character string
- acquiring
- 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.)
- Pending
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/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/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Abstract
本申请公开了一种基于数据仓库的数据血缘关系处理方法及装置,利用预设的正则表达式,从工作集的字符信息中获取得到各个工作集之间的包含关系,以及工作集和ETL任务之间的包含关系。对工作集的字符信息进行解析,得到各个ETL任务之间的依赖关系。对ETL任务进行解析,得到ETL任务所包含的各个组件。对每个组件进行解析,得到每个组件中所包含的各个库表之间的依赖关系、各个字段之间的依赖关系。基于每个组件所包含的各个库表之间的依赖关系,构建数据仓库中各个库表之间的依赖关系。相较于现有技术,本申请所示方案无需人工参与数据血缘关系的解析过程,节省了大量的人力成本,且解析得到的数据血缘关系准确性更高、实时性更高。
Description
技术领域
本申请涉及数据仓库技术领域,尤其涉及一种基于数据仓库的数据血缘关系处理方法及装置。
背景技术
随着企业的业务产品线不断增多,底层数据记录越来越复杂,企业级的数据仓库建设变得更加重要。在数据仓库的建设过程中,多人参与开发已成为常态,抽取-转换-加载(Extraction-Transformation-Loading,ETL)任务也逐渐增长到数百个,维护起来会遇到很多难题,尤其是ETL任务和数据仓库表(简称库表)之间的数据血缘关系尤为复杂。
目前,数据仓库的数据血缘关系一般都是由人工维护,即人工查询ETL任务和库表之间的血缘关系。明显的,受限于人为因素,数据仓库的数据血缘关系的查询过程将会花费大量时间,其查询效率较低、且较为容易出错。
发明内容
本申请提供了一种基于数据仓库的数据血缘关系处理方法及装置,目的在于帮助用户快速有效地获悉数据仓库中所包含的数据血缘关系。
为了实现上述目的,本申请提供了以下技术方案:
一种基于数据仓库的数据血缘关系处理方法,包括:
获取数据仓库中所包含的工作集以及ETL任务;
利用预设的正则表达式,从所述工作集的字符信息中获取得到各个所述工作集之间的包含关系,以及所述工作集和所述ETL任务之间的包含关系;
对所述工作集的字符信息进行解析,得到各个所述ETL任务之间的依赖关系;
对所述ETL任务进行解析,得到所述ETL任务所包含的各个组件;
对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系;
基于每个所述组件所包含的各个所述库表之间的依赖关系,构建所述数据仓库中各个所述库表之间的依赖关系;
基于每个所述组件所包含的各个所述字段之间的依赖关系,构建所述数据仓库中各个所述字段之间的依赖关系;
基于所述ETL任务中所包含的各个所述库表,生成所述ETL任务和所述库表之间的包含关系;
获取每个所述库表所包含的字段,并基于每个所述库表所包含的字段,生成所述库表和所述字段之间的包含关系;
获取各个所述库表的有效词语集合,并基于各个所述库表的有效词语集合,确定各个所述库表之间的语义近似关系。
可选的,所述获取数据仓库中所包含的工作集以及ETL任务,包括:
从预先构建的第三信息表中获取数据仓库中所包含的工作集以及ETL任务;
其中,所述第三信息表的构建过程包括:获取所述数据仓库的各个项目文件;将各个所述项目文件中文件后缀名为.kjb的项目文件,标识为所述工作集,以及将文件后缀名为.ktr的项目文件,标识为所述ETL任务;基于各个所述工作集以及所述ETL任务,构建所述第三信息表。
可选的,所述利用预设的正则表达式,从所述工作集的字符信息中获取得到各个所述工作集之间的包含关系,以及所述工作集和所述ETL任务之间的包含关系,包括:
从所述工作集的字符信息中,获取与第一正则表达式匹配的字符串;
从与所述第一正则表达式匹配的字符串中,获取与第二正则表达式匹配的字符串;
从工作集的字符信息中,获取与第三正则表达式匹配的字符串;
从与所述第二正则表达式匹配的字符串中,获取与第四正则表达式匹配的字符串,并从与所述第四正则表达式匹配的字符串中,解析得到所述工作集所包含的其他工作集;
从与所述第三正则表达式匹配的字符串中,获取与第五正则表达式匹配的字符串,并从与所述第五正则表达式匹配的字符串中,解析得到所述工作集所包含的ETL任务;
基于每个所述工作集所包含的其他工作集,生成各个所述工作集之间的包含关系;
基于每个所述工作集所包含的ETL任务,生成所述工作集和所述ETL任务之间的包含关系。
可选的,所述对所述工作集的字符信息进行解析,得到各个所述ETL任务之间的依赖关系,包括:
从所述工作集的字符信息中,获取与第一关键字匹配的字符串;
从与所述第一关键字匹配的字符串中,获取与第二关键字匹配的字符串;
从与所述第二关键字匹配的字符串中,解析得到源任务的名称,以及依赖于所述源任务的目标任务的名称;
从所述工作集的字符信息中,获取与第三关键字匹配的字符串;
从与所述第三关键字匹配的字符串中,解析得到各个文件路径;
从各个所述文件路径中获取包含有所述源任务的名称的文件路径,以及包含有所述目标任务的名称的文件路径;
根据包含有所述源任务的名称的文件路径,查询得到与所述源任务对应的ETL任务;
根据包含有所述目标任务的名称的文件路径,查询得到与所述目标任务对应的ETL任务;
基于所述源任务和所述目标任务之间的依赖关系、与所述源任务对应的ETL任务、与所述目标任务对应的ETL任务,生成各个ETL任务之间的依赖关系。
可选的,所述组件的类型包括存储过程;
所述对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系,包括:
对于所述ETL任务所包含的每个存储过程,从预先构建的第四信息表中获取所述存储过程的有效实现逻辑,并将所述有效实现逻辑,标识为待解析逻辑;
其中,所述第四信息表的构建过程包括:预先获取数据仓库的各个项目逻辑,以及每个所述项目逻辑的配置文件;对于每个所述项目逻辑,对所述项目逻辑的配置文件进行解析,得到所述项目逻辑的纲要;调用预设的SQL查询语句,从所述纲要中查询得到所述项目逻辑所包含的各个存储过程的实现逻辑;对各个所述存储过程的实现逻辑进行数据清洗,得到各个所述存储过程的有效实现逻辑;对各个所述存储过程的有效实现逻辑进行数据格式转换,使得各个所述有效存储过程的有效实现逻辑的数据格式相同;基于经由数据格式转换后的各个所述存储过程的有效实现逻辑,构建所述第四信息表;
对所述待解析逻辑进行解析,得到所述存储过程中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系。
可选的,所述对所述待解析逻辑进行解析,得到所述存储过程中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系,包括:
从所述待解析逻辑中获取与第四关键字匹配的各个字符串;
从与所述第四关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个输出表;
从所述待解析逻辑中获取与第五关键字匹配的各个字符串;
从与所述第五关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个库表;
将各个所述库表中表名与所述输出表的表名不同的库表,作为所述待解析逻辑中所包含的输入表;
将所述待解析逻辑中所包含的每个输出表,分别与所述待解析逻辑中所包含的每个输入表进行配对,得到所述存储过程中所包含的各个库表之间的依赖关系;
从所述待解析逻辑中获取与第六关键字匹配的各个字符串;
从与所述第六关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个输出字段;
从所述待解析逻辑中获取与所述第七关键字匹配的各个字符串;
从与所述第七关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个候选字段;
对于每个所述候选字段,在确定预先构建的第一信息表中记录有所述候选字段的情况下,将所述候选字段作为所述待解析逻辑中所包含的输入字段;
其中,所述第一信息表的构建过程包括:获取数据仓库的各个项目逻辑,以及每个所述项目逻辑的配置文件;对于每个所述项目逻辑,对所述项目逻辑的配置文件进行解析,得到所述项目逻辑的数据仓库信息;调用预设的SQL查询语句,从所述数据仓库信息中查询得到所述项目逻辑的元数据信息表;所述元数据信息表包括各个元信息;各个所述元信息包括库表、所述库表的表名和描述信息、所述库表所包含的字段、所述字段的字段名和描述信息;对各个所述元信息进行数据清洗,得到各个有效元信息;对各个所述有效元信息进行数据格式转换,使得各个所述有效元信息的数据格式相同;基于经由数据格式转换后的各个所述有效元信息,构建所述第一信息表;
将所述输入字段的字段名作为搜索依据,对每个所述输出字段进行字段名搜索,得到每个所述输出字段所依赖的输入字段;
基于每个所述输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
可选的,所述组件的类型包括表输出组件;
所述对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系,包括:
对于所述ETL任务所包含的每个表输出组件,从所述表输出组件中获取与第八关键字匹配的各个字符串;
从与所述第八关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个输出表;
从所述表输出组件中获取与第九关键字匹配的各个字符串;
从与所述第九关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个输入表;
将所述表输出组件中所包含的每个输出表,分别与所述表输出组件中所包含的每个输入表进行配对,得到各个库表之间的依赖关系;
从所述表输出组件中获取与第六关键字匹配的各个字符串;
从与所述第六关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个输出字段;
从所述表输出组件中获取与第七关键字匹配的各个字符串;
从与所述第七关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个候选字段;
对于每个所述候选字段,在确定预先构建的第一信息表中记录有所述候选字段的情况下,将所述候选字段作为所述表输出组件中所包含的输入字段;
将所述输入字段的字段名作为搜索依据,对每个所述输出字段进行字段名搜索,得到每个所述输出字段所依赖的输入字段;
基于每个所述输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
可选的,所述获取各个所述库表的有效词语集合,并基于各个所述库表的有效词语集合,确定各个所述库表之间的语义近似关系,包括:
对于所述ETL任务所包含的每个所述库表,从预先构建的第一信息表中获取所述库表的表名和描述信息;
分别对所述库表的表名和描述信息进行分词,得到所述库表的候选词语集合;所述候选词语集合包括多个候选词语;
从预先构建的第二信息表中获取与每个所述候选词语对应的近义词集合;所述近义词集合包括多个近义词;
其中,所述第二信息表的构建过程包括:获取数据仓库的各个项目逻辑,以及每个所述项目逻辑的配置文件;对于每个所述项目逻辑,对所述项目逻辑的配置文件进行解析,得到所述项目逻辑的数据仓库信息;调用预设的SQL查询语句,从所述数据仓库信息中查询得到所述项目逻辑的元数据信息表;所述元数据信息表包括各个元信息;各个所述元信息包括库表、所述库表所包含的字段、所述字段的字段名和描述信息;对各个所述元信息进行数据清洗,得到各个有效元信息;对各个所述有效元信息进行语义识别,得到各个业务名词,并配置与每个所述业务名词对应的近义词集合;基于各个所述业务名词、与每个所述业务名词对应的近义词集合,构建所述第二信息表;
从各个所述候选词语中,选取词语类型为名词的候选词语,标识为有效词语;
从与每个所述候选词语对应的各个近义词中,选取词语类型为动词的近义词,标识为有效词语;
基于各个所述有效词语,构建所述库表的有效词语集合;
将第一有效词语集合中的有效词语,以及第二有效词语集合中的有效词语,输入至预设的词语相似度模型中,得到所述词语相似度模型输出的各个三元对;所述第一有效词语集合为第一库表的有效词语集合;所述第二有效词语集合为第二库表的有效词语集合;所述第一库表和所述第二库表均为所述ETL任务所包含的库表;所述三元对包括原词、与所述原词对应的最近似词、与所述原词相关的相似度;
对各个所述相似度进行均值计算,得到所述第一库表和所述第二库表之间的库表相似度;
在所述库表相似度大于预设阈值的情况下,确定所述第一库表和所述第二库表之间存在语义近似关系。
可选的,还包括:
将各个所述工作集之间的包含关系、所述工作集和所述ETL任务之间的包含关系、各个所述ETL任务之间的依赖关系、各个所述库表之间的依赖关系、各个所述字段之间的依赖关系、所述ETL任务和所述库表之间的包含关系、所述库表和所述字段之间的包含关系、各个所述库表之间的语义近似关系,作为所述数据仓库的数据血缘关系,保存到预设库表中;
对所述预设库表中所记录的数据血缘关系进行图谱转换,得到关系图谱,并通过预设界面向用户展示所述关系图谱。
一种基于数据仓库的数据血缘关系处理装置,包括:
任务获取单元,用于获取数据仓库中所包含的工作集以及ETL任务;
正则分析单元,用于利用预设的正则表达式,从所述工作集的字符信息中获取得到各个所述工作集之间的包含关系,以及所述工作集和所述ETL任务之间的包含关系;
工作集解析单元,用于对所述工作集的字符信息进行解析,得到各个所述ETL任务之间的依赖关系;
任务解析单元,用于对所述ETL任务进行解析,得到所述ETL任务所包含的各个组件;
组件解析单元,用于对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系;
第一构建单元,用于基于每个所述组件所包含的各个所述库表之间的依赖关系,构建所述数据仓库中各个所述库表之间的依赖关系;
第二构建单元,用于基于每个所述组件所包含的各个所述字段之间的依赖关系,构建所述数据仓库中各个所述字段之间的依赖关系;
第一生成单元,用于基于所述ETL任务中所包含的各个所述库表,生成所述ETL任务和所述库表之间的包含关系;
第二生成单元,用于获取每个所述库表所包含的字段,并基于每个所述库表所包含的字段,生成所述库表和所述字段之间的包含关系;
确定单元,用于获取各个所述库表的有效词语集合,并基于各个所述库表的有效词语集合,确定各个所述库表之间的语义近似关系。
本申请提供的技术方案,获取数据仓库中所包含的工作集以及ETL任务。利用预设的正则表达式,从工作集的字符信息中获取得到各个工作集之间的包含关系,以及工作集和ETL任务之间的包含关系。对工作集的字符信息进行解析,得到各个ETL任务之间的依赖关系。对ETL任务进行解析,得到ETL任务所包含的各个组件。对每个组件进行解析,得到每个组件中所包含的各个库表、各个库表之间的依赖关系、各个字段、各个字段之间的依赖关系。基于每个组件所包含的各个库表之间的依赖关系,构建数据仓库中各个库表之间的依赖关系。基于每个组件所包含的各个字段之间的依赖关系,构建数据仓库中各个字段之间的依赖关系。基于ETL任务中所包含的各个库表,生成ETL任务和库表之间的包含关系。获取每个库表所包含的字段,并基于每个库表所包含的字段,生成库表和字段之间的包含关系。获取各个库表的有效词语集合,并基于各个库表的有效词语集合,确定各个库表之间的语义近似关系。利用本申请所示方案,能够帮助用户快速有效地获悉数据仓库中所包含的数据血缘关系,相较于现有技术,无需人工参与数据血缘关系的解析过程,节省了大量的人力成本,且解析得到的数据血缘关系准确性更高、实时性更高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例提供的一种基于数据仓库的数据血缘关系处理方法的流程示意图;
图1b为本申请实施例提供的一种基于数据仓库的数据血缘关系处理方法的流程示意图;
图1c为本申请实施例提供的一种基于数据仓库的数据血缘关系处理方法的流程示意图;
图1d为本申请实施例提供的一种基于数据仓库的数据血缘关系处理方法的流程示意图;
图2为本申请实施例提供的另一种基于数据仓库的数据血缘关系处理方法的流程示意图;
图3为本申请实施例提供的一种基于数据仓库的数据血缘关系处理装置的架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1a、图1b、图1c和图1d所示,为本申请实施例提供的一种基于数据仓库的数据血缘关系处理方法的流程示意图,包括如下步骤:
S101:预先获取数据仓库的各个项目逻辑和项目文件,以及每个项目逻辑的配置文件。
其中,可以从数据仓库的代码仓库中,直接拉取得到数据仓库的各个项目逻辑和项目文件,以及每个项目逻辑的配置文件。
S102:对于每个项目逻辑,对项目逻辑的配置文件进行解析,得到项目逻辑的数据仓库信息和纲要(schema)。
S103:调用预设的SQL查询语句,从数据仓库信息中查询得到项目逻辑的元数据信息表。
其中,元数据信息表包括各个元信息,各个元信息包括但不限于为:服务器IP、环境名、数据仓库名、库表、库表的表名和描述信息、库表所包含的字段、字段的字段名和描述信息、字段的类型、字段的归属模块等。
S104:对各个元信息进行数据清洗,得到各个有效元信息。
其中,数据清洗的具体实现过程,为本领域技术人员所熟悉的公知常识,这里不再赘述。
S105:对各个有效元信息进行数据格式转换,使得各个有效元信息的数据格式相同。
其中,数据格式转换的具体实现过程,为本领域技术人员所熟悉的公知常识,这里不再赘述。
S106:基于经由数据格式转换后的各个有效元信息,构建第一信息表。
S107:对各个有效元信息进行语义识别,得到各个业务名词,并配置与每个业务名词对应的近义词集合。
其中,近义词集合包括多个近义词,与业务名词对应的近义词,可从互联网中获取得到,也可由技术人员根据实际情况进行设置。
需要说明的是,语义识别的具体实现过程,为本领域技术人员所熟悉的公知常识,这里不再赘述。
S108:基于各个业务名词、与每个业务名词对应的近义词集合,构建第二信息表。
其中,第二信息表的具体表现形式,可参见表1所示。
表1
业务名词 | 近义词集合 |
白条 | [融信、E信通、反向保理] |
订单融资 | [流贷、E销通、抵押贷款] |
融资金额 | [投放金额、未扣息放款额] |
白条到期日 | [承诺付款日、待付款日期] |
核心企业 | [额度来源方、签发方] |
链条企业 | [融资方、供应商] |
需要说明的是,上述表1所示的内容仅仅用于举例说明。
S109:将各个项目文件中文件后缀名为.kjb的项目文件,标识为工作集,以及将文件后缀名为.ktr的项目文件,标识为ETL任务。
其中,文件后缀名为.kjb的项目文件,通常封装有多个文件后缀名为.ktr的项目文件,或者封装有其他文件后缀名为.kjb的项目文件。文件后缀名为.ktr的项目文件,实质就是Kettle代码文件,即用于开发数据仓库表的ETL任务,ETL任务的实现逻辑则是:文件后缀名为.ktr的项目文件中所包含的字符信息。
一般来讲,本申请实施例所述的数据仓库,为使用Kettle开源工具作为开发工具的数据仓库,因此,数据仓库中所包含的各个ETL任务,均运用了Kettle开源工具所提供的各类型组件(包括表输入组件、表输出组件、存储过程、SQL组件)。在本申请实施例中,所谓的组件,可以简单理解为预先封装的逻辑。
需要强调的是,Kettle代码文件的作用(即ETL任务的作用)为:通过多个输入表的字段进行开发逻辑编写,生成对应的输出表中的字段。所谓的输入表和输出表,均为数据仓库表。
S110:基于各个工作集以及ETL任务,构建第三信息表。
S111:调用预设的SQL查询语句,从纲要中查询得到项目逻辑所包含的各个存储过程的实现逻辑。
可选的,还可以调用预设的SQL查询语句,从纲要中查询得到项目逻辑的各个视图所包含的实现逻辑。
S112:对各个存储过程的实现逻辑进行数据清洗,得到各个存储过程的有效实现逻辑。
其中,实现逻辑所涉及的信息包括但不限于为:服务器IP、环境名、数据仓库名、任务名称、代码等。
S113:对各个存储过程的有效实现逻辑进行数据格式转换,使得各个有效存储过程的有效实现逻辑的数据格式相同。
S114:基于经由数据格式转换后的各个存储过程的有效实现逻辑,构建第四信息表。
S115:对于第三信息表中所记录的每个工作集,利用预设的正则表达式,从工作集的字符信息中获取得到各个工作集之间的包含关系,以及工作集和ETL任务之间的包含关系。
其中,利用预设的正则表达式,从工作集的字符信息中获取得到各个工作集之间的包含关系,以及工作集和ETL任务之间的包含关系的具体实现过程为:
1、从工作集的字符信息中,获取与第一正则表达式匹配的字符串。
具体的,第一正则表达式可以设为:<entry>…</entry>。
2、从与第一正则表达式匹配的字符串中,获取与第二正则表达式匹配的字符串。
具体的,第二正则表达式可以设为:<type>JOB</type>。
3、从工作集的字符信息中。获取与第三正则表达式匹配的字符串。
具体的,第三正则表达式可以设为:<type>TRANS</type>。
4、从与第二正则表达式匹配的字符串中,获取与第四正则表达式匹配的字符串,并从与第四正则表达式匹配的字符串中,解析得到工作集所包含的其他工作集。
具体的,第四正则表达式可以设为:<jobname>…</jobname>。
5、从与第三正则表达式匹配的字符串中,获取与第五正则表达式匹配的字符串,并从与第五正则表达式匹配的字符串中,解析得到工作集所包含的ETL任务。
具体的,第五正则表达式可以设为:<transname>…</transname>。
6、基于每个工作集所包含的其他工作集,生成各个工作集之间的包含关系。
7、基于每个工作集所包含的ETL任务,生成工作集和ETL任务之间的包含关系。
S116:对工作集的字符信息进行解析,得到各个ETL任务之间的依赖关系。
其中,对工作集的字符信息进行解析的具体实现过程为:
1、从工作集的字符信息中,获取与第一关键字匹配的字符串。
具体的,第一关键字可以设为:<hops>。
2、从与第一关键字匹配的字符串中,获取与第二关键字匹配的字符串。
具体的,第二关键字可以设为:<hop>。
3、从与第二关键字匹配的字符串中,解析得到源任务的名称,以及依赖于源任务的目标任务的名称。
4、从工作集的字符信息中,获取与第三关键字匹配的字符串。
具体的,第三关键字可以设为:<entry>。
5、从与第三关键字匹配的字符串中,解析得到各个文件路径。
6、从各个文件路径中获取包含有源任务的名称的文件路径,以及包含有目标任务的名称的文件路径。
7、根据包含有源任务的名称的文件路径,查询得到与源任务对应的ETL任务。
8、根据包含有目标任务的名称的文件路径,查询得到与目标任务对应的ETL任务。
9、基于源任务和目标任务之间的依赖关系、与源任务对应的ETL任务、与目标任务对应的ETL任务,生成各个ETL任务之间的依赖关系。
S117:对于第三信息表中所记录的每个ETL任务,对ETL任务进行解析,得到ETL任务所包含的存储过程、SQL组件、表输出组件和表输入组件。
S118:从第四信息表中获取ETL任务所包含的存储过程的有效实现逻辑,并将ETL任务所包含的存储过程的有效实现逻辑,标识为待解析逻辑。
S119:对待解析逻辑进行解析,得到存储过程中所包含的各个库表、各个库表之间的依赖关系、各个字段、各个字段之间的依赖关系。
其中,库表的类型包括输出表和输入表,字段的类型包括输出字段和输入字段。
需要说明的是,对待解析逻辑进行解析的具体实现过程为:
1、从待解析逻辑中获取与第四关键字匹配的各个字符串。
具体的,第四关键字可以设为:INTO|UPDATE+<Schema列表>+.+<表名>。
2、从与第四关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个输出表。
可选的,为了确保待解析逻辑中所包含的各个输出表均是唯一的,为此,还可以删除各个输出表中的冗余输出表。
3、从待解析逻辑中获取与第五关键字匹配的各个字符串。
具体的,第五关键字可以设为:<Schema列表>+.+<表名>。
4、从与第五关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个库表。
5、将各个库表中表名与输出表的表名不同的库表,作为待解析逻辑中所包含的输入表。
可选的,为了确保待解析逻辑中所包含的各个输入表均是唯一的,为此,还可以删除各个输入表中的冗余输入表。
6、将待解析逻辑中所包含的每个输出表,分别与待解析逻辑中所包含的每个输入表进行配对,得到存储过程中所包含的各个库表之间的依赖关系。
7、从待解析逻辑中获取与第六关键字匹配的各个字符串。
具体的,第六关键字可以设为:INTO+<Schema列表>+.+<表名>+<字段名列表>。
8、从与第六关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个输出字段。
具体的,在与第六关键字匹配的字符串中,包含有一个或多个预设字符(具体为“,”),处于两个预设字符之间的字符串,即所谓的输出字段。
9、从待解析逻辑中获取与第七关键字匹配的各个字符串。
具体的,第七关键字可以设为:SELECT+<字段名列表>+FROM+<Schema列表>+.+<表名列表>。
10、从与第七关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个候选字段。
11、对于每个候选字段,在第一信息表中记录有候选字段的情况下,将候选字段作为待解析逻辑中所包含的输入字段。
需要说明的是,在第一信息表中未记录有候选字段的情况下,将候选字段标识为虚拟字段,并对虚拟字段进行删除。
12、将输入字段的字段名作为搜索依据,对每个输出字段进行字段名搜索,得到每个输出字段所依赖的输入字段。
需要说明的是,所谓的字段名搜索,包括但不限于为:根据SQL结构从外到内的顺序,在输出字段中递归搜索输入字段的字段名,一直找到输出字段最内层结构中所包含的依赖字段名,就是该输出字段所依赖的输入字段。
13、基于每个输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
S120:对SQL组件进行解析,得到SQL组件中所包含的各个库表、各个库表之间的依赖关系,各个字段、各个字段之间的依赖关系。
其中,对SQL组件进行解析的具体执行过程和实现原理,与S119所示的对待解析逻辑进行解析的具体实现过程和实现原理一致,这里不再赘述。
S121:对表输出组件进行解析,得到表输出组件中所包含的各个库表、各个库表之间的依赖关系,各个字段、各个字段之间的依赖关系。
其中,对表输出组件进行解析的具体实现过程为:
1、从表输出组件中获取与第八关键字匹配的各个字符串。
具体的,第八关键字可以设为:<TableOutput>。
2、从与第八关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个输出表。
3、从表输出组件中获取与第九关键字匹配的各个字符串。
具体的,第九关键字可以设为:<Schema列表>+.+<表名>。
4、从与第九关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个输入表。
5、将表输出组件中所包含的每个输出表,分别与表输出组件中所包含的每个输入表进行配对,得到各个库表之间的依赖关系。
6、从表输出组件中获取与第六关键字匹配的各个字符串。
7、从与第六关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个输出字段。
8、从表输出组件中获取与第七关键字匹配的各个字符串。
9、从与第七关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个候选字段。
10、对于每个候选字段,在第一信息表中记录有候选字段的情况下,将候选字段作为表输出组件中所包含的输入字段。
11、将输入字段的字段名作为搜索依据,对每个输出字段进行字段名搜索,得到每个输出字段所依赖的输入字段。
12、基于每个输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
S122:对表输入组件进行解析,得到表输入组件中所包含的各个库表、各个库表之间的依赖关系、各个字段、各个字段之间的依赖关系。
其中,对表输入组件进行解析的具体执行过程和实现原理,与上述S121所示的对表输出组件进行解析的具体实现过程和实现原理一致,这里不再赘述。
S123:基于待解析逻辑中所包含的各个库表之间的依赖关系、SQL组件中所包含的各个库表之间的依赖关系、表输出组件中所包含的各个库表之间的依赖关系、表输入组件中所包含的各个库表之间的依赖关系,构建数据仓库中各个库表之间的依赖关系。
S124:基于待解析逻辑中所包含的各个字段之间的依赖关系、SQL组件中所包含的各个字段之间的依赖关系、表输出组件中所包含的各个字段之间的依赖关系、表输入组件中所包含的各个字段之间的依赖关系,构建数据仓库中各个字段之间的依赖关系。
S125:基于待解析逻辑中所包含的各个库表、SQL组件中所包含的各个库表、表输出组件中所包含的各个库表、表输入组件中所包含的各个库表,构建ETL任务中所包含的各个库表。
S126:基于ETL任务中所包含的各个库表,生成ETL任务和库表之间的包含关系。
S127:对于ETL任务中所包含的每个库表,从第一信息表中查询库表所包含的字段。
S128:基于库表所包含的字段,生成库表和字段之间的包含关系。
S129:从第一信息表中获取库表的表名和描述信息。
S130:分别对库表的表名和描述信息进行分词,得到库表的候选词语集合。
其中,分词的具体实现过程为本领域技术人员所熟悉的公知常识,这里不再赘述。在本申请实施例中,候选词语集合包括多个候选词语。
S131:从第二信息表中获取与每个候选词语对应的近义词集合。
其中,近义词集合包括多个近义词。
S132:从各个候选词语中,选取词语类型为名词的候选词语,标识为有效词语。
S133:从与每个候选词语对应的各个近义词中,选取词语类型为动词的近义词,标识为有效词语。
S134:基于各个有效词语,构建库表的有效词语集合。
S135:基于各个库表的有效词语集合,确定各个库表之间的语义近似关系,以及每个库表的相似度标签。
其中,基于各个库表的有效词语集合,确定各个库表之间的语义近似关系,以及每个库表的相似度标签的具体实现过程为:
1、将第一有效词语集合中的有效词语,以及第二有效词语集合中的有效词语,输入至预设的词语相似度模型中,得到词语相似度模型输出的各个三元对。
需要说明的是,第一有效词语集合为第一库表的有效词语集合,第二有效词语集合为第二库表的有效词语集合,第一库表和第二库表均为ETL任务所包含的库表。
此外,词语相似度模型用于计算每个有效词语与其他有效词语之间的相似度。所谓的词语相似度模型,为本领域技术人员所熟悉的公知常识,具体的,包括但不限于为:逻辑回归(Logistic Regression,LR)模型、随机森林(Random Forest,RF)模型、非负矩阵分解(Non-negative Matrix Factorization,NMF)模型以及主题(Latent DirichletAllocation,LDA)模型等。
在本申请实施例中,三元对包括原词、与原词对应的最近似词、原词和最近似词之间的相似度(即与原词相关的相似度)。
2、对各个相似度进行均值计算,得到第一库表和第二库表之间的库表相似度。
3、在库表相似度大于预设阈值的情况下,确定第一库表和第二库表之间存在语义近似关系。
当然,在库表相似度不大于预设阈值的情况下,确定第一库表和第二库表之间不存在语义近似关系。
4、按照与原词相关的相似度由高到低的顺序,对各个原词进行排序的,得到原词序列。
5、选取原词序列中序位排在前n位的原词,作为第一库表和第二库表的相似度标签。
需要说明的是,n为正整数。
S136:将各个工作集之间的包含关系、工作集和ETL任务之间的包含关系、各个ETL任务之间的依赖关系、各个库表之间的依赖关系、各个字段之间的依赖关系、ETL任务和库表之间的包含关系、库表和字段之间的包含关系、各个库表之间的语义近似关系,作为数据仓库的数据血缘关系,保存到预设库表中。
其中,预设库表具体可以为关系型库表,具体的,关系型库表的字段可以设计为[对象,对象的类型,对象的来源],所谓的对象的类型包括工作集、ETL任务、库表、字段,所谓对象的来源即用于记录对象的数据血缘关系。
需要说明的是,关系型库表还可以记录对象的基础属性,基础属性包括但不限于为:环境名、更新时间、维护人等信息。对象的基础属性,一般可从数据仓库的代码仓库中查询获得。
另外,关系型库表还可以记录各个库表的相似度标签,以便于为聚合展示分析提供有效依据。
S137:对预设库表中所记录的数据血缘关系进行图谱转换,得到关系图谱,并通过预设界面向用户展示关系图谱。
其中,图谱转换的具体的实现过程,为本领域技术人员所熟悉的公知常识,具体的,可以采用图数据仓库(例如neo4j)来实现。在本申请实施例中,关系图谱中的每个节点,即为预设库表中的每个对象,关系图谱中各个节点之间的关系,即为预设库表中对象的数据血缘关系。
基于上述S101-S137所示流程,本实施例可以实现以下有益效果:
1、实现了数据血缘关系的自动化解析,避免人工参与数据血缘关系的解析过程,节省了大量人力维护成本、且解析得到数据血缘关系准确性更高、实时性更高。
2、实现基于Kettle的组件解析器算法,解决了Kettle这个开源ETL工具缺乏任务内容的元数据管理功能的问题,能够在其他基于Kettle的数据仓库建设场景使用,而不局限于某个具体项目。
3、实现了灵活的数据血缘关系存储,将血缘关系信息以关系型库表、关系图谱两种形式进行存储,同时支持了表格类分析和路径展示两种不同查询场景,无需为展示场景再单独进行开发。
综上所述,利用本实施例所示方案,能够帮助用户快速有效地获悉数据仓库中所包含的数据血缘关系,相较于现有技术,无需人工参与数据血缘关系的解析过程,节省了大量的人力成本,且解析得到的数据血缘关系准确性更高、实时性更高。
需要说明的是,上述实施例提及的S101,为本申请实施例所示基于数据仓库的数据血缘关系处理方法的一种可选的实现方式。此外,上述实施例提及的S130,也为本申请实施例所示基于数据仓库的数据血缘关系处理方法的一种可选的实现方式。为此,上述实施例所示的流程,可以概括为图2所示的方法。
如图2所示,为本申请实施例提供的另一种基于数据仓库的数据血缘关系处理方法的流程示意图,包括如下步骤:
S201:获取数据仓库中所包含的工作集以及ETL任务。
S202:利用预设的正则表达式,从工作集的字符信息中获取得到各个工作集之间的包含关系,以及工作集和ETL任务之间的包含关系。
S203:对工作集的字符信息进行解析,得到各个ETL任务之间的依赖关系。
S204:对ETL任务进行解析,得到ETL任务所包含的各个组件。
S205:对每个组件进行解析,得到每个组件中所包含的各个库表、各个库表之间的依赖关系、各个字段、各个字段之间的依赖关系。
S206:基于每个组件所包含的各个库表之间的依赖关系,构建数据仓库中各个库表之间的依赖关系。
S207:基于每个组件所包含的各个字段之间的依赖关系,构建数据仓库中各个字段之间的依赖关系。
S208:基于ETL任务中所包含的各个库表,生成ETL任务和库表之间的包含关系。
S209:获取每个库表所包含的字段,并基于每个库表所包含的字段,生成库表和字段之间的包含关系。
S210:获取各个库表的有效词语集合,并基于各个库表的有效词语集合,确定各个库表之间的语义近似关系。
综上所述,利用本实施例所示方案,能够帮助用户快速有效地获悉数据仓库中所包含的数据血缘关系,相较于现有技术,无需人工参与数据血缘关系的解析过程,节省了大量的人力成本,且解析得到的数据血缘关系准确性更高、实时性更高。
与上述本申请实施例提供的基于数据仓库的数据血缘关系处理方法相对应,本申请实施例还提供了一种基于数据仓库的数据血缘关系处理装置。
如图3所示,为本申请实施例提供的一种基于数据仓库的数据血缘关系处理装置的架构示意图,包括:
任务获取单元100,用于获取数据仓库中所包含的工作集以及ETL任务。
其中,任务获取单元100具体用于:从预先构建的第三信息表中获取数据仓库中所包含的工作集以及ETL任务;其中,第三信息表的构建过程包括:获取数据仓库的各个项目文件;将各个项目文件中文件后缀名为.kjb的项目文件,标识为工作集,以及将文件后缀名为.ktr的项目文件,标识为ETL任务;基于各个工作集以及ETL任务,构建第三信息表。
正则分析单元200,用于利用预设的正则表达式,从工作集的字符信息中获取得到各个工作集之间的包含关系,以及工作集和ETL任务之间的包含关系。
其中,正则分析单元200具体用于:从工作集的字符信息中,获取与第一正则表达式匹配的字符串;从与第一正则表达式匹配的字符串中,获取与第二正则表达式匹配的字符串;从工作集的字符信息中,获取与第三正则表达式匹配的字符串;从与第二正则表达式匹配的字符串中,获取与第四正则表达式匹配的字符串,并从与第四正则表达式匹配的字符串中,解析得到工作集所包含的其他工作集;从与第三正则表达式匹配的字符串中,获取与第五正则表达式匹配的字符串,并从与第五正则表达式匹配的字符串中,解析得到工作集所包含的ETL任务;基于每个工作集所包含的其他工作集,生成各个工作集之间的包含关系;基于每个工作集所包含的ETL任务,生成工作集和ETL任务之间的包含关系。
工作集解析单元300,用于对工作集的字符信息进行解析,得到各个ETL任务之间的依赖关系。
其中,工作集解析单元300具体用于:从工作集的字符信息中,获取与第一关键字匹配的字符串;从与第一关键字匹配的字符串中,获取与第二关键字匹配的字符串;从与第二关键字匹配的字符串中,解析得到源任务的名称,以及依赖于源任务的目标任务的名称;从工作集的字符信息中,获取与第三关键字匹配的字符串;从与第三关键字匹配的字符串中,解析得到各个文件路径;从各个文件路径中获取包含有源任务的名称的文件路径,以及包含有目标任务的名称的文件路径;根据包含有源任务的名称的文件路径,查询得到与源任务对应的ETL任务;根据包含有目标任务的名称的文件路径,查询得到与目标任务对应的ETL任务;基于源任务和目标任务之间的依赖关系、与源任务对应的ETL任务、与目标任务对应的ETL任务,生成各个ETL任务之间的依赖关系。
任务解析单元400,用于对ETL任务进行解析,得到ETL任务所包含的各个组件。
组件的类型包括存储过程和表输出组件。
组件解析单元500,用于对每个组件进行解析,得到每个组件中所包含的各个库表、各个库表之间的依赖关系、各个字段、各个字段之间的依赖关系。
其中,组件解析单元500具体用于:对于ETL任务所包含的每个存储过程,从预先构建的第四信息表中获取存储过程的有效实现逻辑,并将有效实现逻辑,标识为待解析逻辑;其中,第四信息表的构建过程包括:预先获取数据仓库的各个项目逻辑,以及每个项目逻辑的配置文件;对于每个项目逻辑,对项目逻辑的配置文件进行解析,得到项目逻辑的纲要;调用预设的SQL查询语句,从纲要中查询得到项目逻辑所包含的各个存储过程的实现逻辑;对各个存储过程的实现逻辑进行数据清洗,得到各个存储过程的有效实现逻辑;对各个存储过程的有效实现逻辑进行数据格式转换,使得各个有效存储过程的有效实现逻辑的数据格式相同;基于经由数据格式转换后的各个存储过程的有效实现逻辑,构建第四信息表;对待解析逻辑进行解析,得到存储过程中所包含的各个库表、各个库表之间的依赖关系、各个字段、各个字段之间的依赖关系。
组件解析单元500具体用于:从待解析逻辑中获取与第四关键字匹配的各个字符串;从与第四关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个输出表;从待解析逻辑中获取与第五关键字匹配的各个字符串;从与第五关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个库表;将各个库表中表名与输出表的表名不同的库表,作为待解析逻辑中所包含的输入表;将待解析逻辑中所包含的每个输出表,分别与待解析逻辑中所包含的每个输入表进行配对,得到存储过程中所包含的各个库表之间的依赖关系;从待解析逻辑中获取与第六关键字匹配的各个字符串;从与第六关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个输出字段;从待解析逻辑中获取与第七关键字匹配的各个字符串;从与第七关键字匹配的各个字符串中,解析得到待解析逻辑中所包含的各个候选字段;对于每个候选字段,在确定预先构建的第一信息表中记录有候选字段的情况下,将候选字段作为待解析逻辑中所包含的输入字段;其中,第一信息表的构建过程包括:获取数据仓库的各个项目逻辑,以及每个项目逻辑的配置文件;对于每个项目逻辑,对项目逻辑的配置文件进行解析,得到项目逻辑的数据仓库信息;调用预设的SQL查询语句,从数据仓库信息中查询得到项目逻辑的元数据信息表;元数据信息表包括各个元信息;各个元信息包括库表、库表的表名和描述信息、库表所包含的字段、字段的字段名和描述信息;对各个元信息进行数据清洗,得到各个有效元信息;对各个有效元信息进行数据格式转换,使得各个有效元信息的数据格式相同;基于经由数据格式转换后的各个有效元信息,构建第一信息表;将输入字段的字段名作为搜索依据,对每个输出字段进行字段名搜索,得到每个输出字段所依赖的输入字段;基于每个输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
组件解析单元500具体用于:对于ETL任务所包含的每个表输出组件,从表输出组件中获取与第八关键字匹配的各个字符串;从与第八关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个输出表;从表输出组件中获取与第九关键字匹配的各个字符串;从与第九关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个输入表;将表输出组件中所包含的每个输出表,分别与表输出组件中所包含的每个输入表进行配对,得到各个库表之间的依赖关系;从表输出组件中获取与第六关键字匹配的各个字符串;从与第六关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个输出字段;从表输出组件中获取与第七关键字匹配的各个字符串;从与第七关键字匹配的各个字符串中,解析得到表输出组件中所包含的各个候选字段;对于每个候选字段,在确定预先构建的第一信息表中记录有候选字段的情况下,将候选字段作为表输出组件中所包含的输入字段;将输入字段的字段名作为搜索依据,对每个输出字段进行字段名搜索,得到每个输出字段所依赖的输入字段;基于每个输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
第一构建单元600,用于基于每个组件所包含的各个库表之间的依赖关系,构建数据仓库中各个库表之间的依赖关系。
第二构建单元700,用于基于每个组件所包含的各个字段之间的依赖关系,构建数据仓库中各个字段之间的依赖关系。
第一生成单元800,用于基于ETL任务中所包含的各个库表,生成ETL任务和库表之间的包含关系。
第二生成单元900,用于获取每个库表所包含的字段,并基于每个库表所包含的字段,生成库表和字段之间的包含关系。
确定单元1000,用于获取各个库表的有效词语集合,并基于各个库表的有效词语集合,确定各个库表之间的语义近似关系。
其中,确定单元1000具体用于:对于ETL任务所包含的每个库表,从预先构建的第一信息表中获取库表的表名和描述信息;分别对库表的表名和描述信息进行分词,得到库表的候选词语集合;候选词语集合包括多个候选词语;从预先构建的第二信息表中获取与每个候选词语对应的近义词集合;近义词集合包括多个近义词;其中,第二信息表的构建过程包括:获取数据仓库的各个项目逻辑,以及每个项目逻辑的配置文件;对于每个项目逻辑,对项目逻辑的配置文件进行解析,得到项目逻辑的数据仓库信息;调用预设的SQL查询语句,从数据仓库信息中查询得到项目逻辑的元数据信息表;元数据信息表包括各个元信息;各个元信息包括库表、库表所包含的字段、字段的字段名和描述信息;对各个元信息进行数据清洗,得到各个有效元信息;对各个有效元信息进行语义识别,得到各个业务名词,并配置与每个业务名词对应的近义词集合;基于各个业务名词、与每个业务名词对应的近义词集合,构建第二信息表;从各个候选词语中,选取词语类型为名词的候选词语,标识为有效词语;从与每个候选词语对应的各个近义词中,选取词语类型为动词的近义词,标识为有效词语;基于各个有效词语,构建库表的有效词语集合;将第一有效词语集合中的有效词语,以及第二有效词语集合中的有效词语,输入至预设的词语相似度模型中,得到词语相似度模型输出的各个三元对;第一有效词语集合为第一库表的有效词语集合;第二有效词语集合为第二库表的有效词语集合;第一库表和第二库表均为ETL任务所包含的库表;三元对包括原词、与原词对应的最近似词、与原词相关的相似度;对各个相似度进行均值计算,得到第一库表和第二库表之间的库表相似度;在库表相似度大于预设阈值的情况下,确定第一库表和第二库表之间存在语义近似关系。
保存单元1100,用于将各个工作集之间的包含关系、工作集和ETL任务之间的包含关系、各个ETL任务之间的依赖关系、各个库表之间的依赖关系、各个字段之间的依赖关系、ETL任务和库表之间的包含关系、库表和字段之间的包含关系、各个库表之间的语义近似关系,作为数据仓库的数据血缘关系,保存到预设库表中。
展示单元1200,用于对预设库表中所记录的数据血缘关系进行图谱转换,得到关系图谱,并通过预设界面向用户展示关系图谱。
综上所述,利用本实施例所示方案,能够帮助用户快速有效地获悉数据仓库中所包含的数据血缘关系,相较于现有技术,无需人工参与数据血缘关系的解析过程,节省了大量的人力成本,且解析得到的数据血缘关系准确性更高、实时性更高。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于数据仓库的数据血缘关系处理方法,其特征在于,包括:
获取数据仓库中所包含的工作集以及ETL任务;
利用预设的正则表达式,从所述工作集的字符信息中获取得到各个所述工作集之间的包含关系,以及所述工作集和所述ETL任务之间的包含关系;
对所述工作集的字符信息进行解析,得到各个所述ETL任务之间的依赖关系;
对所述ETL任务进行解析,得到所述ETL任务所包含的各个组件;
对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系;
基于每个所述组件所包含的各个所述库表之间的依赖关系,构建所述数据仓库中各个所述库表之间的依赖关系;
基于每个所述组件所包含的各个所述字段之间的依赖关系,构建所述数据仓库中各个所述字段之间的依赖关系;
基于所述ETL任务中所包含的各个所述库表,生成所述ETL任务和所述库表之间的包含关系;
获取每个所述库表所包含的字段,并基于每个所述库表所包含的字段,生成所述库表和所述字段之间的包含关系;
获取各个所述库表的有效词语集合,并基于各个所述库表的有效词语集合,确定各个所述库表之间的语义近似关系。
2.根据权利要求1所述的方法,其特征在于,所述获取数据仓库中所包含的工作集以及ETL任务,包括:
从预先构建的第三信息表中获取数据仓库中所包含的工作集以及ETL任务;
其中,所述第三信息表的构建过程包括:获取所述数据仓库的各个项目文件;将各个所述项目文件中文件后缀名为.kjb的项目文件,标识为所述工作集,以及将文件后缀名为.ktr的项目文件,标识为所述ETL任务;基于各个所述工作集以及所述ETL任务,构建所述第三信息表。
3.根据权利要求1所述的方法,其特征在于,所述利用预设的正则表达式,从所述工作集的字符信息中获取得到各个所述工作集之间的包含关系,以及所述工作集和所述ETL任务之间的包含关系,包括:
从所述工作集的字符信息中,获取与第一正则表达式匹配的字符串;
从与所述第一正则表达式匹配的字符串中,获取与第二正则表达式匹配的字符串;
从工作集的字符信息中,获取与第三正则表达式匹配的字符串;
从与所述第二正则表达式匹配的字符串中,获取与第四正则表达式匹配的字符串,并从与所述第四正则表达式匹配的字符串中,解析得到所述工作集所包含的其他工作集;
从与所述第三正则表达式匹配的字符串中,获取与第五正则表达式匹配的字符串,并从与所述第五正则表达式匹配的字符串中,解析得到所述工作集所包含的ETL任务;
基于每个所述工作集所包含的其他工作集,生成各个所述工作集之间的包含关系;
基于每个所述工作集所包含的ETL任务,生成所述工作集和所述ETL任务之间的包含关系。
4.根据权利要求1所述的方法,其特征在于,所述对所述工作集的字符信息进行解析,得到各个所述ETL任务之间的依赖关系,包括:
从所述工作集的字符信息中,获取与第一关键字匹配的字符串;
从与所述第一关键字匹配的字符串中,获取与第二关键字匹配的字符串;
从与所述第二关键字匹配的字符串中,解析得到源任务的名称,以及依赖于所述源任务的目标任务的名称;
从所述工作集的字符信息中,获取与第三关键字匹配的字符串;
从与所述第三关键字匹配的字符串中,解析得到各个文件路径;
从各个所述文件路径中获取包含有所述源任务的名称的文件路径,以及包含有所述目标任务的名称的文件路径;
根据包含有所述源任务的名称的文件路径,查询得到与所述源任务对应的ETL任务;
根据包含有所述目标任务的名称的文件路径,查询得到与所述目标任务对应的ETL任务;
基于所述源任务和所述目标任务之间的依赖关系、与所述源任务对应的ETL任务、与所述目标任务对应的ETL任务,生成各个ETL任务之间的依赖关系。
5.根据权利要求1所述的方法,其特征在于,所述组件的类型包括存储过程;
所述对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系,包括:
对于所述ETL任务所包含的每个存储过程,从预先构建的第四信息表中获取所述存储过程的有效实现逻辑,并将所述有效实现逻辑,标识为待解析逻辑;
其中,所述第四信息表的构建过程包括:预先获取数据仓库的各个项目逻辑,以及每个所述项目逻辑的配置文件;对于每个所述项目逻辑,对所述项目逻辑的配置文件进行解析,得到所述项目逻辑的纲要;调用预设的SQL查询语句,从所述纲要中查询得到所述项目逻辑所包含的各个存储过程的实现逻辑;对各个所述存储过程的实现逻辑进行数据清洗,得到各个所述存储过程的有效实现逻辑;对各个所述存储过程的有效实现逻辑进行数据格式转换,使得各个所述有效存储过程的有效实现逻辑的数据格式相同;基于经由数据格式转换后的各个所述存储过程的有效实现逻辑,构建所述第四信息表;
对所述待解析逻辑进行解析,得到所述存储过程中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系。
6.根据权利要求5所述的方法,其特征在于,所述对所述待解析逻辑进行解析,得到所述存储过程中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系,包括:
从所述待解析逻辑中获取与第四关键字匹配的各个字符串;
从与所述第四关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个输出表;
从所述待解析逻辑中获取与第五关键字匹配的各个字符串;
从与所述第五关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个库表;
将各个所述库表中表名与所述输出表的表名不同的库表,作为所述待解析逻辑中所包含的输入表;
将所述待解析逻辑中所包含的每个输出表,分别与所述待解析逻辑中所包含的每个输入表进行配对,得到所述存储过程中所包含的各个库表之间的依赖关系;
从所述待解析逻辑中获取与第六关键字匹配的各个字符串;
从与所述第六关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个输出字段;
从所述待解析逻辑中获取与所述第七关键字匹配的各个字符串;
从与所述第七关键字匹配的各个字符串中,解析得到所述待解析逻辑中所包含的各个候选字段;
对于每个所述候选字段,在确定预先构建的第一信息表中记录有所述候选字段的情况下,将所述候选字段作为所述待解析逻辑中所包含的输入字段;
其中,所述第一信息表的构建过程包括:获取数据仓库的各个项目逻辑,以及每个所述项目逻辑的配置文件;对于每个所述项目逻辑,对所述项目逻辑的配置文件进行解析,得到所述项目逻辑的数据仓库信息;调用预设的SQL查询语句,从所述数据仓库信息中查询得到所述项目逻辑的元数据信息表;所述元数据信息表包括各个元信息;各个所述元信息包括库表、所述库表的表名和描述信息、所述库表所包含的字段、所述字段的字段名和描述信息;对各个所述元信息进行数据清洗,得到各个有效元信息;对各个所述有效元信息进行数据格式转换,使得各个所述有效元信息的数据格式相同;基于经由数据格式转换后的各个所述有效元信息,构建所述第一信息表;
将所述输入字段的字段名作为搜索依据,对每个所述输出字段进行字段名搜索,得到每个所述输出字段所依赖的输入字段;
基于每个所述输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
7.根据权利要求1所述的方法,其特征在于,所述组件的类型包括表输出组件;
所述对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系,包括:
对于所述ETL任务所包含的每个表输出组件,从所述表输出组件中获取与第八关键字匹配的各个字符串;
从与所述第八关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个输出表;
从所述表输出组件中获取与第九关键字匹配的各个字符串;
从与所述第九关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个输入表;
将所述表输出组件中所包含的每个输出表,分别与所述表输出组件中所包含的每个输入表进行配对,得到各个库表之间的依赖关系;
从所述表输出组件中获取与第六关键字匹配的各个字符串;
从与所述第六关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个输出字段;
从所述表输出组件中获取与第七关键字匹配的各个字符串;
从与所述第七关键字匹配的各个字符串中,解析得到所述表输出组件中所包含的各个候选字段;
对于每个所述候选字段,在确定预先构建的第一信息表中记录有所述候选字段的情况下,将所述候选字段作为所述表输出组件中所包含的输入字段;
将所述输入字段的字段名作为搜索依据,对每个所述输出字段进行字段名搜索,得到每个所述输出字段所依赖的输入字段;
基于每个所述输出字段所依赖的输入字段,生成各个字段之间的依赖关系。
8.根据权利要求1所述的方法,其特征在于,所述获取各个所述库表的有效词语集合,并基于各个所述库表的有效词语集合,确定各个所述库表之间的语义近似关系,包括:
对于所述ETL任务所包含的每个所述库表,从预先构建的第一信息表中获取所述库表的表名和描述信息;
分别对所述库表的表名和描述信息进行分词,得到所述库表的候选词语集合;所述候选词语集合包括多个候选词语;
从预先构建的第二信息表中获取与每个所述候选词语对应的近义词集合;所述近义词集合包括多个近义词;
其中,所述第二信息表的构建过程包括:获取数据仓库的各个项目逻辑,以及每个所述项目逻辑的配置文件;对于每个所述项目逻辑,对所述项目逻辑的配置文件进行解析,得到所述项目逻辑的数据仓库信息;调用预设的SQL查询语句,从所述数据仓库信息中查询得到所述项目逻辑的元数据信息表;所述元数据信息表包括各个元信息;各个所述元信息包括库表、所述库表所包含的字段、所述字段的字段名和描述信息;对各个所述元信息进行数据清洗,得到各个有效元信息;对各个所述有效元信息进行语义识别,得到各个业务名词,并配置与每个所述业务名词对应的近义词集合;基于各个所述业务名词、与每个所述业务名词对应的近义词集合,构建所述第二信息表;
从各个所述候选词语中,选取词语类型为名词的候选词语,标识为有效词语;
从与每个所述候选词语对应的各个近义词中,选取词语类型为动词的近义词,标识为有效词语;
基于各个所述有效词语,构建所述库表的有效词语集合;
将第一有效词语集合中的有效词语,以及第二有效词语集合中的有效词语,输入至预设的词语相似度模型中,得到所述词语相似度模型输出的各个三元对;所述第一有效词语集合为第一库表的有效词语集合;所述第二有效词语集合为第二库表的有效词语集合;所述第一库表和所述第二库表均为所述ETL任务所包含的库表;所述三元对包括原词、与所述原词对应的最近似词、与所述原词相关的相似度;
对各个所述相似度进行均值计算,得到所述第一库表和所述第二库表之间的库表相似度;
在所述库表相似度大于预设阈值的情况下,确定所述第一库表和所述第二库表之间存在语义近似关系。
9.根据权利要求1所述的方法,其特征在于,还包括:
将各个所述工作集之间的包含关系、所述工作集和所述ETL任务之间的包含关系、各个所述ETL任务之间的依赖关系、各个所述库表之间的依赖关系、各个所述字段之间的依赖关系、所述ETL任务和所述库表之间的包含关系、所述库表和所述字段之间的包含关系、各个所述库表之间的语义近似关系,作为所述数据仓库的数据血缘关系,保存到预设库表中;
对所述预设库表中所记录的数据血缘关系进行图谱转换,得到关系图谱,并通过预设界面向用户展示所述关系图谱。
10.一种基于数据仓库的数据血缘关系处理装置,其特征在于,包括:
任务获取单元,用于获取数据仓库中所包含的工作集以及ETL任务;
正则分析单元,用于利用预设的正则表达式,从所述工作集的字符信息中获取得到各个所述工作集之间的包含关系,以及所述工作集和所述ETL任务之间的包含关系;
工作集解析单元,用于对所述工作集的字符信息进行解析,得到各个所述ETL任务之间的依赖关系;
任务解析单元,用于对所述ETL任务进行解析,得到所述ETL任务所包含的各个组件;
组件解析单元,用于对每个所述组件进行解析,得到每个所述组件中所包含的各个库表、各个所述库表之间的依赖关系、各个字段、各个所述字段之间的依赖关系;
第一构建单元,用于基于每个所述组件所包含的各个所述库表之间的依赖关系,构建所述数据仓库中各个所述库表之间的依赖关系;
第二构建单元,用于基于每个所述组件所包含的各个所述字段之间的依赖关系,构建所述数据仓库中各个所述字段之间的依赖关系;
第一生成单元,用于基于所述ETL任务中所包含的各个所述库表,生成所述ETL任务和所述库表之间的包含关系;
第二生成单元,用于获取每个所述库表所包含的字段,并基于每个所述库表所包含的字段,生成所述库表和所述字段之间的包含关系;
确定单元,用于获取各个所述库表的有效词语集合,并基于各个所述库表的有效词语集合,确定各个所述库表之间的语义近似关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210085894.3A CN114416848A (zh) | 2022-01-25 | 2022-01-25 | 基于数据仓库的数据血缘关系处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210085894.3A CN114416848A (zh) | 2022-01-25 | 2022-01-25 | 基于数据仓库的数据血缘关系处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416848A true CN114416848A (zh) | 2022-04-29 |
Family
ID=81277956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210085894.3A Pending CN114416848A (zh) | 2022-01-25 | 2022-01-25 | 基于数据仓库的数据血缘关系处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416848A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555950A (zh) * | 2024-01-12 | 2024-02-13 | 山东再起数据科技有限公司 | 基于数据中台的数据血缘关系构建方法 |
-
2022
- 2022-01-25 CN CN202210085894.3A patent/CN114416848A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555950A (zh) * | 2024-01-12 | 2024-02-13 | 山东再起数据科技有限公司 | 基于数据中台的数据血缘关系构建方法 |
CN117555950B (zh) * | 2024-01-12 | 2024-04-02 | 山东再起数据科技有限公司 | 基于数据中台的数据血缘关系构建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180232443A1 (en) | Intelligent matching system with ontology-aided relation extraction | |
US8630989B2 (en) | Systems and methods for information extraction using contextual pattern discovery | |
Chakaravarthy et al. | Efficiently linking text documents with relevant structured information | |
US20170103439A1 (en) | Searching Evidence to Recommend Organizations | |
US20170116307A1 (en) | Automated Refinement and Validation of Data Warehouse Star Schemas | |
US20080162455A1 (en) | Determination of document similarity | |
US20080235271A1 (en) | Classification Dictionary Updating Apparatus, Computer Program Product Therefor and Method of Updating Classification Dictionary | |
CN111008265A (zh) | 企业信息搜索方法及装置 | |
Agarwal et al. | Approximate incremental big-data harmonization | |
US10599678B2 (en) | Input gathering system and method for defining, refining or validating star schema for a source database | |
KR101505858B1 (ko) | 대용량 데이터를 용이하게 분석하기 위하여 테이블 관계 및 참조의 템플릿을 검색하여 제공하는 템플릿 기반 온라인 분석보고서 작성 지원 시스템 | |
US10146881B2 (en) | Scalable processing of heterogeneous user-generated content | |
CN111310032A (zh) | 资源推荐方法、装置、计算机设备及可读存储介质 | |
CN112035757A (zh) | 医疗瀑布流推送方法、装置、设备及存储介质 | |
CN110795613A (zh) | 商品搜索方法、装置、系统及电子设备 | |
US20180096061A1 (en) | System and method for quote-based search summaries | |
CN114416848A (zh) | 基于数据仓库的数据血缘关系处理方法及装置 | |
US10360239B2 (en) | Automated definition of data warehouse star schemas | |
CN111159230A (zh) | 数据资源地图的构建方法及装置、存储介质、终端 | |
US10877998B2 (en) | Highly atomized segmented and interrogatable data systems (HASIDS) | |
CN108052522B (zh) | 一种对olap预计算模型进行动态优化的方法及系统 | |
JP2017010376A (ja) | マートレス検証支援システムおよびマートレス検証支援方法 | |
TWI419071B (zh) | Active knowledge management system, method and computer program product for problem solving | |
KR20170044408A (ko) | 프로젝트의 추천 시스템 및 방법 | |
CN110956035B (zh) | 一种问卷优化方法、系统和存储介质 |
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 |