CN102053972A - Etl模块间父任务关系的获取方法和装置 - Google Patents
Etl模块间父任务关系的获取方法和装置 Download PDFInfo
- Publication number
- CN102053972A CN102053972A CN2009102071388A CN200910207138A CN102053972A CN 102053972 A CN102053972 A CN 102053972A CN 2009102071388 A CN2009102071388 A CN 2009102071388A CN 200910207138 A CN200910207138 A CN 200910207138A CN 102053972 A CN102053972 A CN 102053972A
- Authority
- CN
- China
- Prior art keywords
- etl
- etl module
- module
- father
- matching
- 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
Abstract
本申请的实施例公开了一种ETL模块间父任务关系的获取方法和装置。该方法包括:对各ETL模块中的关键字进行匹配;根据所述匹配结果,获取各ETL模块的输入表和输出表;根据所述各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。通过使用本申请的实施例,对ETL模块中SQL语句进行关键字匹配,根据匹配结果获取各ETL模块的输入表和输出表,根据各ETL模块的输入表和输出表自动获取各ETL模块之间的父任务关系,整个流程不需要人工参与,可以极大的提高ETL模块间父任务分析的准确性和分析效率。
Description
技术领域
本申请涉及通讯技术领域,尤其涉及一种ETL模块间父任务关系的获取方法和装置。
背景技术
ETL(Extract/Transform/Load,抽取/转换/装载)是指对数据库的数据进行抽取、转换、装载操作,从而将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成后,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
具有对数据库的数据进行抽取、转换、装载的操作功能的程序可以封装为一个功能模块,用于完成固定的数据操作,这个功能模块可以称为ETL模块。
ETL模块的操作对象基本为数据库中的表,比如ETL模块1的操作是抽取表A的数据,对抽取的数据进行筛选过滤后生成表B,则ETL模块1中可能包括以下SQL(Structured Query Language,结构化查询语言)语句:
SQL(insert into B select*from A where type=1)
其语义为从表A中选择类型(type)为1的值插入到表B中。
假设表A是在ETL模块2中生成的。那么在ETL模块1和ELT模块2的执行序列上,必须是ETL模块2运行生成表A成功后,才能执行ETL模块1的功能。否则,ETL模块1在执行时,将因为无法获取表A中的数据而报错。该情况下一般,将ETL模块2称为ETL模块1的父任务,而ETL模块1称为ETL模块2的子任务。
现有技术中,在系统中每添加上一个新的ETL模块时,需要手工把该ETL模块中涉及到的输入表整理出来,再手工整理出这些输入表是由哪些ETL模块生成的。根据整理出的输入表和输出表,记录新的ETL模块与其他已存在的ETL模块之间的父子关系,进而设置个ETL模块的调度顺序。
现有技术中存在的问题在于:
对ETL模块之间父子关系的分析通过手工操作完成,一方面浪费时间、效率低下,另一方面由于一个ETL模块常常会有近10个数据源,因此很容易会有遗漏。一旦发生遗漏,在ETL模块做相应计算时就会发生数据错误。
发明内容
本申请的实施例提供一种ETL模块间父任务关系的获取方法和装置,用于根据ETL模块中SQL语句对各ETL模块之间的父任务关系进行自动分析,提高分析准确性和分析效率。
为了达到上述目的,本申请的实施例提供了一种ETL模块间父任务关系的获取方法,包括:
对各ETL模块中的关键字进行匹配;
根据所述匹配结果,获取各ETL模块的输入表和输出表;
根据所述各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。
其中,所述对各ETL模块中的关键字进行匹配包括:
所述各ETL模块中包括的为结构化查询语言SQL语句时,使用lex、yacc和/或antlr工具对各ETL模块中SQL语句的关键字进行匹配。
其中,所述关键字至少包括:insert into、merge into、update、from和using中的一种或多种。
其中,所述根据所述匹配结果,获取各ETL模块的输入表和输出表,包括:
对于一ETL模块,
匹配到insert into时,判断insert into后的字符串是所述ETL模块的输出表;
匹配到merge into时,判断merge into后的字符串是所述ETL模块的输出表;
匹配到update时,判断update后的字符串是所述ETL模块的输出表;
匹配到from时,判断from后的字符串是所述ETL模块的输入表;
匹配到using时,判断using后的字符串是所述ETL模块的输入表。
其中,所述根据所述各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系,包括:
对各ETL模块的输入表和输出表进行匹配,当第一ETL模块的输入表为第二ETL模块的输出表时,判断第二ETL模块为第一ETL模块的父任务,并对第一ETL模块的父任务进行记录。
本申请的实施例还提供了一种ETL模块间父任务关系的获取装置,包括:
关键字匹配单元,用于对各ETL模块中的关键字进行匹配;
输入输出表获取单元,用于根据所述关键字匹配单元的关键字匹配结果,获取各ETL模块的输入表和输出表;
父任务关系获取单元,用于根据所述输入输出表获取单元获取的各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。
其中,所述关键字匹配单元具体用于:
所述各ETL模块中包括的为结构化查询语言SQL语句时,使用lex、yacc和/或antlr工具对各ETL模块中SQL语句的关键字进行匹配。
其中,所述关键字匹配单元匹配的关键字至少包括:insert into、merge into、update、from和using中的一种或多种。
其中,所述输入输出表获取单元具体用于:
对于一ETL模块,
匹配到insert into时,判断insert into后的字符串是所述ETL模块的输出表;
匹配到merge into时,判断merge into后的字符串是所述ETL模块的输出表;
匹配到update时,判断update后的字符串是所述ETL模块的输出表;
匹配到from时,判断from后的字符串是所述ETL模块的输入表;
匹配到using时,判断using后的字符串是所述ETL模块的输入表。
其中,所述父任务关系获取单元具体用于:
对各ETL模块的输入表和输出表进行匹配,当第一ETL模块的输入表为第二ETL模块的输出表时,判断第二ETL模块为第一ETL模块的父任务,并对第一ETL模块的父任务进行记录。
与现有技术相比,本申请的实施例具有以下优点:
本申请的实施例中,对ETL模块中SQL语句进行关键字匹配,根据匹配结果获取各ETL模块的输入表和输出表,根据各ETL模块的输入表和输出表自动获取各ETL模块之间的父任务关系,整个流程不需要人工参与,可以极大的提高ETL模块间父任务分析的准确性和分析效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例中提供的ETL模块间父任务关系的获取方法流程图;
图2是本申请实施例中对关键字from进行匹配的一实例示意图;
图3是本申请实施例中对关键字insert进行匹配的一实例示意图;
图4是本申请实施例中提供的ETL模块间父任务关系的获取方法示意图;
图5是本申请实施例中提供的ETL模块间父任务关系的获取装置的结构示意图;
图6是本申请实施例中提供的ETL模块间父任务关系的获取装置的应用示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供的ETL模块间父任务关系的获取方法和装置的核心思想在于:对于各待分析的ETL模块,自动对各ETL模块中的SQL语句进行关键字匹配,根据匹配结果获取各ETL模块的输入表和输出表,根据各ETL模块的输入表和输出表自动获取各ETL模块之间的父任务关系,使得整个流程不需要人工参与,提高ETL模块间父任务分析的准确性和分析效率。
具体的,本申请的实施例提供了一种ETL模块间父任务关系的获取方法,如图1所示,包括:
步骤s101、对各ETL模块中的关键字进行匹配。
具体的,该步骤中,各ETL模块中包括的为SQL语句时,可以使用lex、yacc、antlr等工具对各ETL模块中SQL语句的关键字进行匹配;匹配的关键字至少包括insert into、merge into、update、from和using中的一种或多种。
步骤s102、根据匹配结果,获取各ETL模块的输入表和输出表。
具体的,根据步骤s101中的匹配结果,对于一ETL模块,
匹配到insert into时,判断insert into后的字符串是所述ETL模块的输出表;
匹配到merge into时,判断merge into后的字符串是所述ETL模块的输出表;
匹配到update时,判断update后的字符串是所述ETL模块的输出表;
匹配到from时,判断from后的字符串是所述ETL模块的输入表;
匹配到using时,判断using后的字符串是所述ETL模块的输入表。
步骤s103、根据各ETL模块的输入表和输出表,获取各ETL模块间存在的父任务关系。
以下对本申请实施例中使用lex、yacc和/或antlr工具对各ETL模块中SQL语句的关键字进行匹配的具体实施方式进行说明。其中匹配的关键字至少可以包括:insert into、merge into、update、from和using。为了更清楚的说明本申请实施例的实施原理,首先对insert into、merge into、update的语法结构进行简单的介绍。
(一)关于insert into
对于insert into语句,insert into语句的基本格式如下:
insert into″表格名″(″栏位1″,″栏位2″,...)VALUES (″值1″,″值2″,...)
假设有一个如表1所示的Company_Information表格:
表1.Company_Information表格
Column Name | Data Type |
Company_name | char(50) |
Sales | float |
Date | datetime |
如果存在以下数据需要添加到表1所示的Company_Information表格:在January,2009,Company_A有900的营业额,则需要输入的insert into语句如下:
insert into Company_Information(Company_name,Sales,Date)VALUES(′Company_A′,900,′Jan-2009′)
执行该语句后,对于如表1所示的Company_Information表格,其内容如下表2所示:
表2.Company_Information表格
Company_name | Sales | Date |
Company_A | 900 | Jan-2009 |
如果ETL模块需要从已经存在的表格2中提取内容插入到表格1,则除了使用insert into语句外,还需要使用select....from语句指明需要输入表格的资料的来源。
对应的语句格式如下:
insert into″表格1″(″栏位1″,″栏位2″,...)
select″栏位3″,″栏位4″,...
from″表格2″
其含义为:将表格2中的栏位3和栏位4中的内容,插入到表格1的栏位1和栏位2中。
例如,ELT模块2的功能中,需要将2008年的公司资料放入Company_Information表格,而且知道2008年的公司资料可以从Company_History_Information表格取得的话,则需要使用的insert into语句如下:
假设Company_History_Information表格的内容如下表3所示:
表3.Company_History_Information表格
Company_name | Sales | Date |
Company_A | 1200 | Jan-2008 |
Company_A | 1000 | Jan-2007 |
则对于如表1所示的Company_Information表格,执行上述insertinto/select/from语句后,其内容如下表4所示:
表4.Company_Information表格
Company_name | Sales | Date |
Company_A | 900 | Jan-2009 |
Company_A | 1200 | Jan-2008 |
因此,对于insert into语句,可以发现,如果一个ETL模块的SQL语句中包括insert into,则在insert into后面的字符串为该ETL模块的输出表,而from后面的字符串为该ETL模块的输入表。如果该输入表是由另外一个ETL模块生成的,则另外一个ETL模块为该ETL模块的父任务。
(二)关于update
对于update语句,用于对表格中已经存在的内容进行修改,update语句的基本格式如下:
update″表格名″
set″栏位1″=[新值],″栏位2″=[新值]
where{条件}
假设有一个如表5所示的Company_Information表格:
表5.Company_Information表格
Company_name | Sales | Date |
Company_A | 900 | Jan-2009 |
Company_B | 750 | Jan-2009 |
Company_C | 800 | Jan-2009 |
假设Company_B在Jan-2009的Sales实际上应该是500,而不是表5中所存储的750,则可以用以下的update语句对表5中的内容进行修改:
则对于如表5所示的Company_Information表格,执行上述update语句后,其内容如下表6所示:
表6.Company_Information表格
Company_name | Sales | Date |
Company_A | 900 | Jan-2009 |
Company_B | 500 | Jan-2009 |
Company_C | 800 | Jan-2009 |
在上述表5所示的Company_Information表格中,只有一条记录符合where中的条件。如果有多条记录符合条件的话,每一条符合条件的记录都会被修改。
与insert into语句相似,如果ETL模块需要从已经存在的表格2中提取内容更新表格1中已经存在的内容,则除了使用update语句外,还需要使用select....from语句指明需要输入表格的资料的来源。
对应的语句格式如下:
update″表格1″
set″栏位1″=[select″栏位2″from″表格2″]
where{条件}
其含义为:使用表格2中的栏位2的内容,替换表格1的栏位1的内容。
例如,ELT模块2的功能中,需要使用已存在的Company_History_Information表格中的内容替换Company_Information表格中的内容,则需要使用的update语句如下:
update Company_Information
set Sales=(select Sales from Company_History_Information);
where Year(Date)=2008
假设Company_Information表格的内容如下表7所示:
表7.Company_Information表格
Company_name | Sales | Date |
Company_A | 900 | Jan-2009 |
Company_B | 500 | Jan-2009 |
Company_C | 800 | Jan-2009 |
Company_A | 900 | Jan-2008 |
Company_B | 500 | Jan-2008 |
Company_C | 800 | Jan-2008 |
假设Company_History_Information表格的内容如下表8所示:
表8.Company_History_Information表格
Company_name | Sales | Date |
Company_A | 800 | Jan-2008 |
Company_B | 400 | Jan-2008 |
Company_C | 700 | Jan-2008 |
则对于如表7所示的Company_Information表格,执行上述update/select/from语句后,其内容如下表9所示:
表9.Company_Information表格
Company_name | Sales | Date |
Company_A | 900 | Jan-2009 |
Company_B | 500 | Jan-2009 |
Company_C | 800 | Jan-2009 |
Company_A | 800 | Jan-2008 |
Company_B | 400 | Jan-2008 |
Company_C | 700 | Jan-2008 |
因此,对于update语句,可以发现,如果一个ETL模块的SQL语句中包括update,则在update后面的字符串为该ETL模块的输出表,而from后面的字符串为该ETL模块的输入表。如果该输入表是由另外一个ETL模块生成的,则另外一个ETL模块为该ETL模块的父任务。
(三)关于merge
merge语句的作用在于,可以在一条语句中连接两个表。对于需要使用update更新的两个表中都存在的记录,或者用insert添加两个合并表中不存在的记录,必须通过两个SQL语句操作实现。但是基于merge语句,上述两种操作都只需要通过一条SQL merge语句即可实现。例如以下实例:
create table inventory(part_no integer,part_count integer);
insert into inventory values(1,5);
insert into inventory values(3,6);
上述指令执行后的inventory表的内容如表10所示:
表10.inventory表
part_no | part_count |
1 | 5 |
3 | 6 |
create table shipment(part_no integer,part_count integer);
insert into shipment values(1,2);
insert into shipment values(2,2);
上述指令执行后的shipment表的内容如表11所示:
表11.shipment表
part_no | part_count |
1 | 2 |
2 | 2 |
则执行merge语句操作如下:
上述指令执行后的inventory表的内容如表12所示:
表12.inventory表
part_no | part_count |
1 | 4 |
3 | 6 |
2 | 2 |
即执行结果为将shipment表中的数据合并到inventory表中,与inventory表中某些数据相匹配的shipment表数据都会被添加到part_count中,而没有得到的匹配的shipment表数据不会添加到inventory表中。
需要说明的是,在merge语句中必须指定一个when matched和一个whennot matched语句。如果除这两种情况之外还有别的情况,需要使用一个常规的insert或者update语句。merge语句的输出表(在本例中是inventory表)必须是一个可以使用insert语句进行插入或者update语句进行更新的表;输入表(在本例中是shipment表)可以是任何的查询表。
因此,对于merge into语句,可以发现,如果一个ETL模块的SQL语句中包括merge into,则在merge into后面的字符串为该ETL模块的输出表,而using后面的字符串为该ETL模块的输入表。如果该输入表是由另外一个ETL模块生成的,则另外一个ETL模块为该ETL模块的父任务。
基于上述描述可以发现,如果对ETL模块中的SQL语句进行关键字匹配,其中匹配的关键字至少可以包括:insert into、merge into、update、from和using;则根据匹配结果即可以获知ETL模块的输入表和输出表。
本申请的实施例中,提供了使用lex、yacc、antlr等工具对各ETL模块中SQL语句的关键字进行匹配的方式。以下对进行匹配所采用的具体实施方式进行说明。
以下以通过lex和yacc对ETL模块中的SQL语句的关键字进行说明。
lex(Lexical Analyzer)是一种生成扫描器的工具,扫描器是一种识别文本中的词汇模式的程序。这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义。一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。当lex接收到文件或文本形式的输入时,试图将文本与常规表达式进行匹配。lex程序一次读入一个输入字符,直到找到一个匹配的模式。如果能够找到一个匹配的模式,1ex就执行相关的动作(可能包括返回一个标记)。另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,Lex将显示一个错误消息。
Yacc(Yet Another Compiler Compiler),用于将任何一种编程语言的所有语法翻译成针对此种语言的Yacc语法解析器。
本申请的实施例中,分别以一个具体的基于lex的语法扫描程序、和一个具体的基于yacc的语法解析程序为例,说明其具体实施方式。
其中,基于lex的语法扫描程序的一实例如下:
通过上述语法扫描程序,可以对ETL功能模块的SQL语句中出现的insert into、merge into、update、from和using语句进行扫描,得到扫描结果。
其中,基于yacc的语法解析程序的一实例如下:
通过使用上述语法解析程序,可以对ETL功能模块的SQL语句中扫描到的insert into、merge into、update、from和using语句所涉及到功能模块之间的输入表和输出表关系进行获取。
使用上述语法扫描和解析功能所能实现的结果请参考下列示例:
例如:对于ETL模块ake_auction,其中存在以下SQL语句:
...from tbods.auction_auctions where...
则以from为关键字进行匹配时,通过对ETL模块ake_auction的解析可以发现,它的输入表是auction_auction,该解析后输出的结果如图2所示。
再例如:对于ETL模块sync_auction_auctions,其中存在以下SQL语句:
...insert into auction_auctions...
则以insert into为关键字进行匹配时,通过对ETL模块sync_auction_auctions的解析可以发现,它的输出表是auction_auction。
可以发现,对于ETL模块ake_auction的输入表auction_auction,是由ETL模块sync_auction_auctions输出的,因此可以判断模块sync_auction_auctions就是模块ake_auction的父任务。
本申请实施例的一个应用场景中,以对ETL模块1至ETL模块4进行分析为例,流程示意图如图4所示,包括以下步骤:
对于待分析ETL模块1至ETL模块4,首先通过语法解析获得各ETL模块的输入表和输出表;例如,对于ETL模块1至ETL模块4,通过对各ETL模块中SQL语句的关键字进行匹配,得到ETL模块1至ETL模块4的输入表和输出表如下表13所示:
表13.ETL模块的输入表和输出表
ETL模块 | 输入表 | 输出表 |
ETL模块1 | ---- | 表1 |
ETL模块2 | 表1 | 表2 |
ETL模块3 | 表2 | 表3 |
ETL模块4 | 表3 | 表4 |
... | ... | ... |
根据所述各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。具体的根据得到的各ETL模块的输入表和输出表,可以对输入表和输出表进行关联,得到各ETL模块间的父任务关系。即当一个ETL模块的输出表是其他一个或多个ETL模块的输入表时,可以判断该ETL模块是其他一个或多个ETL模块的父任务。
例如,对于上述表13所示的ETL模块1~ETL模块4的输入表和输出表,可以获得ETL模块1~ETL模块4之间的父任务关系,并对获得的父任务关系进行记录存储。对父任务关系进行记录存储的格式可以如下表14所示:
表14.ETL模块的输入表和输出表
ETL模块 | 父任务 |
ETL模块1 | ---- |
ETL模块2 | ETL模块1 |
ETL模块3 | ETL模块2 |
ETL模块4 | ETL模块3 |
... | ... |
上述表13和表14所描述的ETL模块的输入表、输出表以及父任务的实例只是为了说明本申请所举的一个简单实例。在实际应用中可能存在更为复杂的情况,一个ETL模块可以存在多个输入表和多个输出表,对应的,该ETL模块可能是其他多个ETL模块的父任务,也可能将其他多个ETL模块作为父任务。对于上述复杂情况下的具体实施方式,可以理解的是,与本申请的实施例中所示的实施方式的原理相同,仍属于本申请实施例的保护范围,本申请的实施例在此不进行重复介绍。
本申请实施例提供的上述方法中,对ETL模块中SQL语句进行关键字匹配,根据匹配结果获取各ETL模块的输入表和输出表,根据各ETL模块的输入表和输出表自动获取各ETL模块之间的父任务关系,整个流程不需要人工参与,可以极大的提高ETL模块间父任务分析的准确性和分析效率。
本申请的实施例还提供一种ETL模块间父任务关系的获取装置,如图5所示,包括:
关键字匹配单元10,用于对各ETL模块中的关键字进行匹配;
输入输出表获取单元20,用于根据关键字匹配单元10的关键字匹配结果,获取各ETL模块的输入表和输出表;
父任务关系获取单元30,用于根据输入输出表获取单元20获取的各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。
本申请的一个具体实施例中,对于该装置:
关键字匹配单元10,具体用于当各ETL模块中包括的为SQL语句时,使用lex、yacc和/或antlr工具对各ETL模块中SQL语句的关键字进行匹配。其中匹配使用的关键字至少包括:insert into、merge into、update、from和using中的一种或多种。
输入输出表获取单元20,具体用于对于一ETL模块:
匹配到insert into时,判断insert into后的字符串是所述ETL模块的输出表;
匹配到merge into时,判断merge into后的字符串是所述ETL模块的输出表;
匹配到update时,判断update后的字符串是所述ETL模块的输出表;
匹配到from时,判断from后的字符串是所述ETL模块的输入表;
匹配到using时,判断using后的字符串是所述ETL模块的输入表。
父任务关系获取单元30,具体用于:对各ETL模块的输入表和输出表进行匹配,当第一ETL模块的输入表为第二ETL模块的输出表时,判断第二ETL模块为第一ETL模块的父任务,并对第一ETL模块的父任务进行记录。基于相同的原理,最终获得各ETL模块间存在的父任务关系。
该ETL模块间父任务关系的获取装置的应用示意图如图6所示,获取装置根据获取的各ETL模块中的SQL语句,对各ETL模块中的SQL语句进行关键字匹配,根据匹配结果获取各ETL模块的输入表和输出表,根据各ETL模块的输入表和输出表自动获取各ETL模块之间的父任务关系并输出。该获取装置实施的整个流程不需要人工参与,可以极大的提高ETL模块间父任务分析的准确性和分析效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的单元或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施例中的装置中的单元可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的单元可以合并为一个单元,也可以进一步拆分成多个子单元。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
Claims (10)
1.一种ETL模块间父任务关系的获取方法,其特征在于,包括:
对各ETL模块中的关键字进行匹配;
根据所述匹配结果,获取各ETL模块的输入表和输出表;
根据所述各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。
2.如权利要求1所述的方法,其特征在于,所述对各ETL模块中的关键字进行匹配包括:
所述各ETL模块中包括的为结构化查询语言SQL语句时,使用lex、yacc和/或antlr工具对各ETL模块中SQL语句的关键字进行匹配。
3.如权利要求1或2所述的方法,其特征在于,所述关键字至少包括:insert into、merge into、update、from和using中的一种或多种。
4.如权利要求3所述的方法,其特征在于,所述根据所述匹配结果,获取各ETL模块的输入表和输出表,包括:
对于一ETL模块,
匹配到insert into时,判断insert into后的字符串是所述ETL模块的输出表;
匹配到merge into时,判断merge into后的字符串是所述ETL模块的输出表;
匹配到update时,判断update后的字符串是所述ETL模块的输出表;
匹配到from时,判断from后的字符串是所述ETL模块的输入表;
匹配到using时,判断using后的字符串是所述ETL模块的输入表。
5.如权利要求3所述的方法,其特征在于,所述根据所述各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系,包括:
对各ETL模块的输入表和输出表进行匹配,当第一ETL模块的输入表为第二ETL模块的输出表时,判断第二ETL模块为第一ETL模块的父任务,并对第一ETL模块的父任务进行记录。
6.一种ETL模块间父任务关系的获取装置,其特征在于,包括:
关键字匹配单元,用于对各ETL模块中的关键字进行匹配;
输入输出表获取单元,用于根据所述关键字匹配单元的关键字匹配结果,获取各ETL模块的输入表和输出表;
父任务关系获取单元,用于根据所述输入输出表获取单元获取的各ETL模块的输入表和输出表,获取所述各ETL模块间存在的父任务关系。
7.如权利要求6所述的装置,其特征在于,所述关键字匹配单元具体用于:
所述各ETL模块中包括的为结构化查询语言SQL语句时,使用lex、yacc和/或antlr工具对各ETL模块中SQL语句的关键字进行匹配。
8.如权利要求6或7所述的装置,其特征在于,所述关键字匹配单元匹配的关键字至少包括:insert into、merge into、update、from和using中的一种或多种。
9.如权利要求8所述的装置,其特征在于,所述输入输出表获取单元具体用于:
对于一ETL模块,
匹配到insert into时,判断insert into后的字符串是所述ETL模块的输出表;
匹配到merge into时,判断merge into后的字符串是所述ETL模块的输出表;
匹配到update时,判断update后的字符串是所述ETL模块的输出表;
匹配到from时,判断from后的字符串是所述ETL模块的输入表;
匹配到using时,判断using后的字符串是所述ETL模块的输入表。
10.如权利要求8所述的装置,其特征在于,所述父任务关系获取单元具体用于:
对各ETL模块的输入表和输出表进行匹配,当第一ETL模块的输入表为第二ETL模块的输出表时,判断第二ETL模块为第一ETL模块的父任务,并对第一ETL模块的父任务进行记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102071388A CN102053972A (zh) | 2009-10-27 | 2009-10-27 | Etl模块间父任务关系的获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102071388A CN102053972A (zh) | 2009-10-27 | 2009-10-27 | Etl模块间父任务关系的获取方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102053972A true CN102053972A (zh) | 2011-05-11 |
Family
ID=43958311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102071388A Pending CN102053972A (zh) | 2009-10-27 | 2009-10-27 | Etl模块间父任务关系的获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102053972A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180053A (zh) * | 2016-03-11 | 2017-09-19 | 中国移动通信集团河北有限公司 | 一种数据仓库优化方法和装置 |
CN107870949A (zh) * | 2016-09-28 | 2018-04-03 | 腾讯科技(深圳)有限公司 | 数据分析作业依赖关系生成方法和系统 |
CN108038248A (zh) * | 2017-12-28 | 2018-05-15 | 携程计算机技术(上海)有限公司 | Etl依赖自动识别方法与系统 |
CN112650657A (zh) * | 2019-10-10 | 2021-04-13 | 浙江大搜车软件技术有限公司 | 基于流计算的业务系统的分析方法及装置 |
-
2009
- 2009-10-27 CN CN2009102071388A patent/CN102053972A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107180053A (zh) * | 2016-03-11 | 2017-09-19 | 中国移动通信集团河北有限公司 | 一种数据仓库优化方法和装置 |
CN107180053B (zh) * | 2016-03-11 | 2020-10-20 | 中国移动通信集团河北有限公司 | 一种数据仓库优化方法和装置 |
CN107870949A (zh) * | 2016-09-28 | 2018-04-03 | 腾讯科技(深圳)有限公司 | 数据分析作业依赖关系生成方法和系统 |
CN107870949B (zh) * | 2016-09-28 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据分析作业依赖关系生成方法和系统 |
CN108038248A (zh) * | 2017-12-28 | 2018-05-15 | 携程计算机技术(上海)有限公司 | Etl依赖自动识别方法与系统 |
CN108038248B (zh) * | 2017-12-28 | 2021-11-26 | 携程计算机技术(上海)有限公司 | Etl依赖自动识别方法与系统 |
CN112650657A (zh) * | 2019-10-10 | 2021-04-13 | 浙江大搜车软件技术有限公司 | 基于流计算的业务系统的分析方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169337B2 (en) | Converting data into natural language form | |
CN100462962C (zh) | 文本的标号系统-翻译和在运行时间的多语言支持以及设计 | |
Oberbichler et al. | Integrated interdisciplinary workflows for research on historical newspapers: Perspectives from humanities scholars, computer scientists, and librarians | |
US20090077531A1 (en) | Systems and Methods to Generate a Software Framework Based on Semantic Modeling and Business Rules | |
CN103744891A (zh) | 一种数据查询方法和系统 | |
CN102792298A (zh) | 使用特征化匹配的规则来匹配元数据源 | |
CN104252533A (zh) | 搜索方法和搜索装置 | |
Mendling et al. | 25 challenges of semantic process modeling | |
Pruski et al. | Tiqi: answering unstructured natural language trace queries | |
CN103177039A (zh) | 一种数据处理方法及装置 | |
CN111914066B (zh) | 多源数据库全局搜索方法及系统 | |
CN102053972A (zh) | Etl模块间父任务关系的获取方法和装置 | |
Meixner et al. | Towards a domain-specific language for product-process-resource constraints | |
Vahdati et al. | Mapping large scale research metadata to linked data: A performance comparison of HBase, CSV and XML | |
CN111221852A (zh) | 基于大数据的混合查询处理方法及装置 | |
CN1740969A (zh) | 具有合并的检验信息的数据类型 | |
Zhou et al. | Assisting in requirements goal modeling: a hybrid approach based on machine learning and logical reasoning | |
Nuzzolese et al. | Fine-tuning triplification with Semion | |
Steghöfer et al. | Design decisions in the construction of traceability information models for safe automotive systems | |
Vardigan et al. | Creating Rich, Structured metadata: lessons learned in the metadata portal project | |
Zoghlami et al. | Using a SKOS engine to create, share and transfer terminology data sets | |
CN102591859A (zh) | 一种重用行业标准格式文件的方法及相关装置 | |
CN115617773A (zh) | 数据迁移的方法、装置和系统 | |
Falkenstine et al. | Natural Language Processing for Autonomous Identification of Impactful Changes to Specification Documents | |
US7953714B2 (en) | Method for maintaining parallelism in database processing using record identifier substitution assignment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1155247 Country of ref document: HK |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110511 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1155247 Country of ref document: HK |