[发明专利]一种映射关系生成方法及装置有效
申请号: | 201110445062.X | 申请日: | 2011-12-27 |
公开(公告)号: | CN103186541A | 公开(公告)日: | 2013-07-03 |
发明(设计)人: | 张宗锋;李博源 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭润湘 |
地址: | 英属开曼群岛大开曼*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 映射 关系 生成 方法 装置 | ||
技术领域
本发明涉及计算机及数据库领域,特别涉及一种映射关系生成方法及装置。
背景技术
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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110445062.X/2.html,转载请声明来源钻瓜专利网。