CN109101651A - 一种元数据全链路分析的方法 - Google Patents
一种元数据全链路分析的方法 Download PDFInfo
- Publication number
- CN109101651A CN109101651A CN201810971665.5A CN201810971665A CN109101651A CN 109101651 A CN109101651 A CN 109101651A CN 201810971665 A CN201810971665 A CN 201810971665A CN 109101651 A CN109101651 A CN 109101651A
- Authority
- CN
- China
- Prior art keywords
- sentence
- sql
- field
- full link
- text
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004458 analytical method Methods 0.000 claims abstract description 38
- 239000000284 extract Substances 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000002224 dissection Methods 0.000 claims description 3
- 238000007418 data mining Methods 0.000 abstract description 2
- 238000007781 pre-processing Methods 0.000 abstract 1
- 238000002360 preparation method Methods 0.000 abstract 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明特别涉及一种元数据全链路分析的方法。该元数据全链路分析的方法,首先处理存储过程,去掉其中的无关信息;然后找出可能影响数据流向的sql,根据类型分别做预处理;最后进行数据流向查找。该元数据全链路分析的方法,通过服务接口的形式,对sql语句、存储过程语句进行分析,获取其中的表与表之间的字段全链路关系,从而实现了对数据流向全自动、彻底的分析,达到了梳理数据仓库中的数据流向的目的,极大地节省了时间和人力,为数据挖掘做好了准备。
Description
技术领域
本发明涉及数据流向分析技术领域,特别涉及一种元数据全链路分析的方法。
背景技术
随着大数据的兴起,数据仓库、数据流向成了非常重要的分析信息。其中,数据流向主要从sql,存储过程,ETL等工具进行分析。ETL可以根据配置信息进行快速分析,而sql和存储过程分析起来比较麻烦,目前的分析都是不彻底或者需要人工干预,不能全自动、彻底的分析其中的流向关系。针对上述问题,本发明提出了一种元数据全链路分析的方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的元数据全链路分析的方法。
本发明是通过如下技术方案实现的:
一种元数据全链路分析的方法,其特征在于,包括以下步骤:
(1)处理存储过程,去掉其中的无关信息;
(2)找出可能影响数据流向的sql,根据类型分别做预处理;
(3)进行数据流向查找。
所述步骤(1)中,首先获取存储过程文本内容,以一行为单位存储;解析文本内容,去掉文本中/**/和//注释的部分;并在行与行之间加空格合并成一行数据,然后去掉数据中包括换行在内的其他无关字符,并将连在一起的多空格合并成一个,进而得到了一个完整、规范、干净的存储过程内容。
所述步骤(2)中,解析获取的存储过程文本内容,采用分号;切割文本,得到单条sql内容;并从中筛选出可能通过表改变另一张表的sql单条语句;
对筛选出的单条sql语句进行逐一分析,如果是execute immediate开头的,则先将其中包含的sql提取出来;如果不是execute immediate开头的,则分别对可能通过表改变另一张表的sql单条语句进行处理。
可能通过表改变另一张表的sql单条语句包括insert语句,create语句,update语句和merge语句。
当可能通过表改变另一张表的sql单条语句为create语句时,解析方法为拆分出其中的insert部分和update部分,分别根据insert语句和update语句进行解析处理。
当可能通过表改变另一张表的sql单条语句为update语句时,解析方法包括以下步骤:
(A)根据文本拆分出set后面的语句,并根据逗号,拆成多条,逐条进行分析;
(B)判断是否存在select语句,如果存在,进入下一步,否则舍弃;
(C)对于存在select语句的sql获取等号=前后内容,等号=前面内容则为目标字段,根据顺序提取目标字段,采用解析insert语句方式解析select语句,获取表间关系。
当可能通过表改变另一张表的sql单条语句为create语句时,解析方法包括以下步骤:
(A)判断是否是根据select创建表,如果是,则进入下一步,否则舍弃;
(B)判断是否命名新表字段名称;
如果没有,则从后边的select语句中获取字段名称,并分析表间的关系;
如果有,则按照顺序提起字段名,分别在后面的select语句中查找分析。
当可能通过表改变另一张表的sql单条语句为insert语句时,解析方法包括以下步骤:
(A)判断是否select语句插入数据,如果是进入下一步,否则舍弃;
(B)判断insert是否是根据字段名插入数据;如果是,则从文本中按顺序提取字段名,如果不是,则获取表的全部字段,并按照顺序排序;
(C)根据上一步获取的字段顺序,从select语句中获取相应顺序的字段的来源;
(D)判断select最外层是否含有union、union all、minus或intersect,如果有union、union all或intersect,则将sql拆成两个sql语句,分别进行分析,然后将两部分的结果值合并;如果是minus,则只取前一部分进行分析;
(E)如果相应位置字段是字段而不是内嵌sql,根据文本获取到其中包含的有用的所有字段,分别查找,然后将结果集合并;
(F)如果相应位置字段是字段是内嵌sql,则递归查找。
所述步骤(E)中,查找规则包括以下步骤:
(i)首先判断是否是根据别名获取的字段名;
(ii)如果是根据别名,则找到相应的别名的表,如果表是内嵌sql,则进行递归获取;否则这张表就是来源表;
(iii)如果不是根据别名,则判断表的个数,如果是一张表,则该表是来源表,该字段是来源字段;如果多张表,则循环查询表的字段,看表是否包含这个字段,直到找到存在这个字段的表;
(iv)如果是*,则查询下面所有表字段,并根据表顺序排序,找到相应的字段及其表。
本发明的有益效果是:该元数据全链路分析的方法,通过服务接口的形式,对sql语句、存储过程语句进行分析,获取其中的表与表之间的字段全链路关系,从而实现了对数据流向全自动、彻底的分析,达到了梳理数据仓库中的数据流向的目的,极大地节省了时间和人力,为数据挖掘做好了准备。
附图说明
附图1为本发明元数据全链路分析的方法示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
该元数据全链路分析的方法,包括以下步骤:
(1)处理存储过程,去掉其中的无关信息;
(2)找出可能影响数据流向的sql,根据类型分别做预处理;
(3)进行数据流向查找。
所述步骤(1)中,首先获取存储过程文本内容,以一行为单位存储;解析文本内容,去掉文本中/**/和//注释的部分;并在行与行之间加空格合并成一行数据,然后去掉数据中包括换行在内的其他无关字符,并将连在一起的多空格合并成一个,进而得到了一个完整、规范、干净的存储过程内容。
所述步骤(2)中,解析获取的存储过程文本内容,采用分号;切割文本,得到单条sql内容;并从中筛选出可能通过表改变另一张表的sql单条语句;
对筛选出的单条sql语句进行逐一分析,如果是execute immediate开头的,则先将其中包含的sql提取出来;如果不是execute immediate开头的,则分别对可能通过表改变另一张表的sql单条语句进行处理。
可能通过表改变另一张表的sql单条语句包括insert语句,create语句,update语句和merge语句。
当可能通过表改变另一张表的sql单条语句为create语句时,解析方法为拆分出其中的insert部分和update部分,分别根据insert语句和update语句进行解析处理。
当可能通过表改变另一张表的sql单条语句为update语句时,解析方法包括以下步骤:
(A)根据文本拆分出set后面的语句,并根据逗号,拆成多条,逐条进行分析;
(B)判断是否存在select语句,如果存在,进入下一步,否则舍弃;
(C)对于存在select语句的sql获取等号=前后内容,等号=前面内容则为目标字段,根据顺序提取目标字段,采用解析insert语句方式解析select语句,获取表间关系。
当可能通过表改变另一张表的sql单条语句为create语句时,解析方法包括以下步骤:
(A)判断是否是根据select创建表,如果是,则进入下一步,否则舍弃;
(B)判断是否命名新表字段名称;
如果没有,则从后边的select语句中获取字段名称,并分析表间的关系;
如果有,则按照顺序提起字段名,分别在后面的select语句中查找分析。
当可能通过表改变另一张表的sql单条语句为insert语句时,解析方法包括以下步骤:
(A)判断是否select语句插入数据,如果是进入下一步,否则舍弃;
(B)判断insert是否是根据字段名插入数据;如果是,则从文本中按顺序提取字段名,如果不是,则获取表的全部字段,并按照顺序排序;
(C)根据上一步获取的字段顺序,从select语句中获取相应顺序的字段的来源;
(D)判断select最外层是否含有union、union all、minus或intersect,如果有union、union all或intersect,则将sql拆成两个sql语句,分别进行分析,然后将两部分的结果值合并;如果是minus,则只取前一部分进行分析;
(E)如果相应位置字段是字段而不是内嵌sql,根据文本获取到其中包含的有用的所有字段,分别查找,然后将结果集合并;
(F)如果相应位置字段是字段是内嵌sql,则递归查找。
所述步骤(E)中,查找规则包括以下步骤:
(i)首先判断是否是根据别名获取的字段名;
(ii)如果是根据别名,则找到相应的别名的表,如果表是内嵌sql,则进行递归获取;否则这张表就是来源表;
(iii)如果不是根据别名,则判断表的个数,如果是一张表,则该表是来源表,该字段是来源字段;如果多张表,则循环查询表的字段,看表是否包含这个字段,直到找到存在这个字段的表;
如果是*,则查询下面所有表字段,并根据表顺序排序,找到相应的字段及其表。
Claims (9)
1.一种元数据全链路分析的方法,其特征在于,包括以下步骤:
(1)处理存储过程,去掉其中的无关信息;
(2)找出可能影响数据流向的sql,根据类型分别做预处理;
(3)进行数据流向查找。
2.根据权利要求1所述的元数据全链路分析的方法,其特征在于:所述步骤(1)中,首先获取存储过程文本内容,以一行为单位存储;解析文本内容,去掉文本中/**/和//注释的部分;并在行与行之间加空格合并成一行数据,然后去掉数据中包括换行在内的其他无关字符,并将连在一起的多空格合并成一个,进而得到了一个完整、规范、干净的存储过程内容。
3.根据权利要求1所述的元数据全链路分析的方法,其特征在于:所述步骤(2)中,解析获取的存储过程文本内容,采用分号;切割文本,得到单条sql内容;并从中筛选出可能通过表改变另一张表的sql单条语句;对筛选出的单条sql语句进行逐一分析,如果是executeimmediate开头的,则先将其中包含的sql提取出来;如果不是execute immediate开头的,则分别对可能通过表改变另一张表的sql单条语句进行处理。
4.根据权利要求3所述的元数据全链路分析的方法,其特征在于:可能通过表改变另一张表的sql单条语句包括insert语句,create语句,update语句和merge语句。
5.根据权利要求4所述的元数据全链路分析的方法,其特征在于:当可能通过表改变另一张表的sql单条语句为create语句时,解析方法为拆分出其中的insert部分和update部分,分别根据insert语句和update语句进行解析处理。
6.根据权利要求4所述的元数据全链路分析的方法,其特征在于,当可能通过表改变另一张表的sql单条语句为update语句时,解析方法包括以下步骤:
根据文本拆分出set后面的语句,并根据逗号,拆成多条,逐条进行分析;
判断是否存在select语句,如果存在,进入下一步,否则舍弃;
对于存在select语句的sql获取等号=前后内容,等号=前面内容则为目标字段,根据顺序提取目标字段,采用解析insert语句方式解析select语句,获取表间关系。
7.根据权利要求4所述的元数据全链路分析的方法,其特征在于,当可能通过表改变另一张表的sql单条语句为create语句时,解析方法包括以下步骤:
判断是否是根据select创建表,如果是,则进入下一步,否则舍弃;
判断是否命名新表字段名称;
如果没有,则从后边的select语句中获取字段名称,并分析表间的关系;
如果有,则按照顺序提起字段名,分别在后面的select语句中查找分析。
8.根据权利要求4-7中任意一项所述的元数据全链路分析的方法,其特征在于,当可能通过表改变另一张表的sql单条语句为insert语句时,解析方法包括以下步骤:
判断是否select语句插入数据,如果是进入下一步,否则舍弃;
判断insert是否是根据字段名插入数据;如果是,则从文本中按顺序提取字段名,如果不是,则获取表的全部字段,并按照顺序排序;
根据上一步获取的字段顺序,从select语句中获取相应顺序的字段的来源;
判断select最外层是否含有union、union all、minus或intersect,如果有union、union all或intersect,则将sql拆成两个sql语句,分别进行分析,然后将两部分的结果值合并;如果是minus,则只取前一部分进行分析;
如果相应位置字段是字段而不是内嵌sql,根据文本获取到其中包含的有用的所有字段,分别查找,然后将结果集合并;
如果相应位置字段是字段是内嵌sql,则递归查找。
9.根据权利要求8所述的元数据全链路分析的方法,其特征在于,所述步骤(E)中,查找规则包括以下步骤:
首先判断是否是根据别名获取的字段名;
如果是根据别名,则找到相应的别名的表,如果表是内嵌sql,则进行递归获取;否则这张表就是来源表;
如果不是根据别名,则判断表的个数,如果是一张表,则该表是来源表,该字段是来源字段;如果多张表,则循环查询表的字段,看表是否包含这个字段,直到找到存在这个字段的表;
如果是*,则查询下面所有表字段,并根据表顺序排序,找到相应的字段及其表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810971665.5A CN109101651A (zh) | 2018-08-24 | 2018-08-24 | 一种元数据全链路分析的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810971665.5A CN109101651A (zh) | 2018-08-24 | 2018-08-24 | 一种元数据全链路分析的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109101651A true CN109101651A (zh) | 2018-12-28 |
Family
ID=64851290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810971665.5A Pending CN109101651A (zh) | 2018-08-24 | 2018-08-24 | 一种元数据全链路分析的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101651A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019252A (zh) * | 2019-04-16 | 2019-07-16 | 成都四方伟业软件股份有限公司 | 信息处理的方法、装置及电子设备 |
CN111611248A (zh) * | 2020-05-25 | 2020-09-01 | 山东浪潮商用系统有限公司 | 一种自动分析指标口径的方法、系统和装置 |
CN112328599A (zh) * | 2020-11-12 | 2021-02-05 | 杭州数梦工场科技有限公司 | 基于元数据的字段血缘分析方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095345A1 (en) * | 2004-10-28 | 2006-05-04 | Microsoft Corporation | System and method for an online catalog system having integrated search and browse capability |
CN102289460A (zh) * | 2011-07-13 | 2011-12-21 | 中国工商银行股份有限公司 | 一种向测试环境进行报表元数据同步的方法及系统 |
CN104866316A (zh) * | 2015-06-02 | 2015-08-26 | 雷虹 | 数据中心中间件系统 |
CN105808413A (zh) * | 2016-03-02 | 2016-07-27 | 上海新炬网络信息技术有限公司 | 基于业务流程可视化的sql性能监控方法 |
-
2018
- 2018-08-24 CN CN201810971665.5A patent/CN109101651A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060095345A1 (en) * | 2004-10-28 | 2006-05-04 | Microsoft Corporation | System and method for an online catalog system having integrated search and browse capability |
CN102289460A (zh) * | 2011-07-13 | 2011-12-21 | 中国工商银行股份有限公司 | 一种向测试环境进行报表元数据同步的方法及系统 |
CN104866316A (zh) * | 2015-06-02 | 2015-08-26 | 雷虹 | 数据中心中间件系统 |
CN105808413A (zh) * | 2016-03-02 | 2016-07-27 | 上海新炬网络信息技术有限公司 | 基于业务流程可视化的sql性能监控方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019252A (zh) * | 2019-04-16 | 2019-07-16 | 成都四方伟业软件股份有限公司 | 信息处理的方法、装置及电子设备 |
CN111611248A (zh) * | 2020-05-25 | 2020-09-01 | 山东浪潮商用系统有限公司 | 一种自动分析指标口径的方法、系统和装置 |
CN111611248B (zh) * | 2020-05-25 | 2023-07-25 | 浪潮软件科技有限公司 | 一种自动分析指标口径的方法、系统和装置 |
CN112328599A (zh) * | 2020-11-12 | 2021-02-05 | 杭州数梦工场科技有限公司 | 基于元数据的字段血缘分析方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109101651A (zh) | 一种元数据全链路分析的方法 | |
CN110909016B (zh) | 基于数据库的重复关联检测方法、装置、设备及存储介质 | |
CN102567530A (zh) | 一种文章类型网页智能抽取系统及其方法 | |
CN101794307A (zh) | 基于互联网分词思想的车载导航poi搜索引擎 | |
CN103440232A (zh) | 一种科技论文标准化自动检测编辑方法 | |
CN106503195A (zh) | 一种基于搜索引擎的翻译词库检索方法及系统 | |
CN103440233A (zh) | 一种科技论文标准化自动检测编辑系统 | |
CN104462268B (zh) | 一种html文档信息抽取表达式的方法及系统 | |
CN101339560B (zh) | 一种搜索系列性数据的方法、装置及一种搜索引擎系统 | |
CN106909609A (zh) | 确定相似字符串的方法、文件查重的方法及系统 | |
CN102467544A (zh) | 基于空间模糊编码的信息智能搜索方法及系统 | |
Biba et al. | Boosting text classification through stemming of composite words | |
CN105808561A (zh) | 一种从网页中提取摘要的方法和装置 | |
US9218336B2 (en) | Efficient implementation of morphology for agglutinative languages | |
CN102799584A (zh) | 一种针对检测仪器输出数据筛选提取的处理方法 | |
CN104636384B (zh) | 一种处理文档的方法及装置 | |
CN105426490A (zh) | 一种基于树形结构的索引方法 | |
CN104715065B (zh) | 一种长查询词的搜索方法和装置 | |
CN106557459B (zh) | 一种从工单中提取新词的方法和装置 | |
CN112183074A (zh) | 一种数据增强方法、装置、设备及介质 | |
CN110543622A (zh) | 文本相似度检测方法、装置、电子设备及可读存储介质 | |
CN106934002B (zh) | 一种搜索关键字数字化解析方法和引擎 | |
CN116662308B (zh) | 基于数仓日志文件的血缘数据提取方法 | |
KR20100086860A (ko) | 통계에 의한 시소러스 데이터베이스 구축 방법 | |
US20090228497A1 (en) | Patent Reference Processor |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181228 |