本发明专利技术公开了一种映射关系生成方法,用于生成字段级映射关系,便于对ETL中的元数据自动进行维护。所述方法包括:对结构化查询语言SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象;将提取的所述SQL基础元素对象按照出现顺序进行编号并存储;将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储;根据编号后的所述SQL基础元素对象的编号及相应规则生成映射关系。本发明专利技术还公开了用于实现所述方法的装置。
【技术实现步骤摘要】
本专利技术涉及计算机及数据库领域,特别涉及一种映射关系生成方法及装置。
技术介绍
ETL (Extraction-Transformation-Loading,数据抽取、转换和加载)技术负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。在以SQL (Structured Query Language,结构化查询语言)脚本为主的ETL技术中,每当ETL程序在开发前或修改前,都需要人工维护源系统的表、字段与数据仓库中的表、字段之间的关系,这样很容易造成维护信息与实际信息不同步,导致这些表、字段之间的关系信息不准确。本申请专利技术人在实现本申请实施例技术方案的过程中,至少发现现有技术中存在如下技术问题:现有技术中用MAPPING(映射)工具维护字段映射关系,并自动生成ETL所需的SQL脚本。但当SQL被维护人员直接修改时,MAPPING工具中的字段映射关系需要维护人员在修改完程序的同时进行维护修改,增加了人工成本,且操作较为不便。
技术实现思路
本专利技术实施例提供一种映射关系生成方法及装置,用于生成字段级映射关系,便于对ETL中的元数据自动进行维护。一种映射关系生成方法,包括以下步骤:对结构化查询语言SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象;将提取的所述SQL基础元素对象按照出现顺序进行编号并存储;将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储;根据编号后的所述SQL基础元素对象及相应规则生成映射关系。一种映射关系生成装置,包括:分析模块,用于对SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象;第一处理模块,用于将提取的所述SQL基础元素对象按照出现顺序进行编号并存储;第二处理模块,用于将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储;匹配模块,用于根据编号后的所述SQL基础元素对象及相应规则生成映射关系。本专利技术实施例中的映射关系生成方法为对SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象;将提取的所述SQL基础元素对象按照出现顺序进行编号并存储;将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储;根据编号后的所述SQL基础元素对象及相应规则生成映射关系。将SQL语法树中的基础元素对象抽取出来,进行处理后再根据相应规则生成映射关系,生成的映射关系可以覆盖到字段级,这样的映射关系粒度较细,可以满足字段级影响性分析和血缘分析的需求,便于对ETL中的元数据信息自动进行维护。附图说明图1为本专利技术实施例中映射关系生成装置的主要结构图;图2为本专利技术实施例中映射关系生成方法的主要流程图。具体实施例方式本专利技术实施例中的映射关系生成方法为对SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象;将提取的所述SQL基础元素对象按照出现顺序进行编号并存储;将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储;根据编号后的所述SQL基础元素对象及相应规则生成映射关系。将SQL语法树中的基础元素对象抽取出来,进行处理后再根据相应规则生成映射关系,生成的映射关系可以覆盖到字段级,这样的映射关系关系粒度较细,可以满足字段级影响性分析和血缘分析的需求,便于对ETL中的元数据信息自动进行维护。一个复杂的SQL,可能是由多个子SQL组成的。最基础、最原子的SQL可能由SQL关键字、字段、表、函数等基础元素组成。为了尽量完整记录SQL中各基础元素及其之间的关系,从而产生字段级别的映射关系,分别使用原始SQL、子SQL、表、字段、标量、断言和条件这些对象来存储SQL的基础元素。原始SQL:记录ETL中实际运行的SQL,包括源码、运行时间、解析情况等信息。子SQL:将原始SQL逐级拆分为多个子SQL,如子查询中的SQL。表:被当前SQL使用的表,被重复使用多次的表可以记录多次。每个SQL中查询或影响的表都记录在该对象中。该对象的类型可能是物理表、视图或一个子查询ID。字段:被当前SQL使用的表中的字段,未被使用的字段可以不记录,重复使用的字段可以记录多次。标量:SQL中能够返回SQL数据类型的字段、函数、常量或由它们之间的任意组合组成的表达式。由于组合标量表达式会包含标量,从而存在多层递归,为了便于分析,本专利技术实施例中的标量是指最外层的组合标量。断言:由一个或多个标量表达式和匹配关键字组成的逻辑表达式,它返回的结果为真或假。例如:select*from tabIeAwhere coll = 2,其中,coll = 2,即为一个断言。条件:一个或多个断言组成一组过滤条件,是查询语句中行集数据过滤的表达式。参见图1,本专利技术实施例中映射关系生成装置包括分析模块101、第一处理模块102、第二处理模块103及匹配模块104。所述装置还可以包括存储模块105。分析模块101用于对SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象。分析模块101构建ETL中的SQL所使用的语法树,即对SQL进行语法分析,确定SQL无误时,即语法树构建完毕,继续对所述语法树进行重构,即提取出SQL语法树中的SQL基础元素对象,还可以将提取出的所述SQL基础元素对象进行存储,可以存放在存储模块105中。所述SQL基础元素对象是指SQL中的子SQL、表、字段、标量、断言等。第一处理模块102用于将提取的所述SQL基础元素对象按照出现顺序进行编号并存储。在分析模块101提取SQL语法树中的SQL基础元素对象时,会存在提取的先后顺序,第一处理模块102可以按照该先后顺序对所述SQL基础元素对象进行编号,然后将编号后的SQL基础元素对象进行存储,可以存放在存储模块105中。具体的,本专利技术实施例中第一处理模块102在对提取的SQL基础元素对象进行编号后,可以将其分别替换为TMP (临时)元素对象,并将替换后的TMP元素对象按照所述编号进行存储,可以存放在存储模块105中。对于可能出现递归的表达式,可以只记录其外层表达式对象,例如:func_a(func_b(col_l, col_2),则可以记录“:func_a(func_b (col_l, col_2)” 整体作为一个标量,而不再分别记录其内部递归关系。第二处理模块103用于将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储。所述非明确性SQL基础元素对象是指没有确定意义的SQL基础元素对象,明确性SQL基础元素对象是指有确定意义的SQL基础元素对象。例如,所述SQL基础元素对象中的即为非明确性SQL基础元素对象,因为不明确其究竟指代什么内容,则可以根据具体SQL语句,将此类非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照此前对非明确性SQL基础元素对象的编号顺序将替换后的明确性SQL基础元素对象存放在相应位置。例如:SQL运行环境中有表Ta(字段:f本文档来自技高网...
【技术保护点】
一种映射关系生成方法,其特征在于,包括以下步骤:对结构化查询语言SQL程序进行语法分析,提取SQL语法树中的SQL基础元素对象;将提取的所述SQL基础元素对象按照出现顺序进行编号并存储;将所述SQL基础元素对象中的非明确性SQL基础元素对象替换为明确性SQL基础元素对象,并按照所述编号进行存储;根据编号后的所述SQL基础元素对象及相应规则生成映射关系。
【技术特征摘要】
【专利技术属性】
技术研发人员:张宗锋,李博源,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。