CN111782738B - 构建数据仓库表级别血缘关系的方法及装置 - Google Patents

构建数据仓库表级别血缘关系的方法及装置 Download PDF

Info

Publication number
CN111782738B
CN111782738B CN202010819732.9A CN202010819732A CN111782738B CN 111782738 B CN111782738 B CN 111782738B CN 202010819732 A CN202010819732 A CN 202010819732A CN 111782738 B CN111782738 B CN 111782738B
Authority
CN
China
Prior art keywords
sub
data warehouse
data
data processing
statements
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.)
Active
Application number
CN202010819732.9A
Other languages
English (en)
Other versions
CN111782738A (zh
Inventor
刘世超
姚登科
王君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Doumi Youpin Technology Development Co ltd
Original Assignee
Beijing Doumi Youpin Technology Development Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Doumi Youpin Technology Development Co ltd filed Critical Beijing Doumi Youpin Technology Development Co ltd
Priority to CN202010819732.9A priority Critical patent/CN111782738B/zh
Publication of CN111782738A publication Critical patent/CN111782738A/zh
Application granted granted Critical
Publication of CN111782738B publication Critical patent/CN111782738B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24566Recursive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种构建数据仓库表级别血缘关系的方法及装置,该方法包括对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句;解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系,解决了相关技术中构建数据仓库表级别血缘关系慢、构建数据仓库表级别血缘关系不准确、需要人工干预的问题,具有能够以自动化和低耦合的方式进行采集、解析和存储数据仓库HIVE表之间血缘关系,且通过可视化工具进行图文结合的方式检索和展示的有益效果。

Description

构建数据仓库表级别血缘关系的方法及装置
技术领域
本公开属于计算机领域,特别涉及一种构建数据仓库表级别血缘关系的方法、装置、及存储介质。
背景技术
随着企业业务的不断发展和数据需求的不断增加,数据仓库ETL抽取(extract)、转换(transform)、加载(load)任务也随之不断积累,识别海量HIVE表之间依赖关系的难度和复杂度也不断递增。
相关技术中,开发人员人肉识别数据仓库中ETL代码中的HIVE表级别依赖关系;通过手动记录各ETL脚本中HIVE SQL引用的源表名和目标表名至相关文档,持续更新、维护文档内容;文档共享于使用人员。
传统方式虽然简单,但由于都是人肉识别、输入、维护信息,开发人员的能力和工作质量参差不齐,无论从血缘关系的准确性,还是可维护性都难以保持。并且,ETL过程中直接或间接带来的工作量也十分巨大。
发明内容
为了解决上述技术问题至少之一,本公开提供了一种构建数据仓库表级别血缘关系的方法、装置、及存储介质。
根据本公开的第一个方面,提供了一种构建数据仓库表级别血缘关系的方法,包括:对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句;解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
在本公开的一个示例性实施方式中,所述数据处理代码是将数据从数据源经过抽取、转换、加载至所述数据仓库的代码或脚本,并且,用于操作所述数据仓库的语句为SQL语句。
在本公开的一个示例性实施方式中,对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句包括:使用JAVA语言对所述数据处理代码以定时方式或运行时监听方式进行采集识别,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。
在本公开的一个示例性实施方式中,解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:使用HIVE组件的SQL解析工具,解析所述SQL语句中所引用到的源表和目标表,确定所述源表和所述目标表之间的依赖和被依赖关系。
在本公开的一个示例性实施方式中,确定所述表之间的依赖和被依赖关系之后,所述方法还包括:将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组件中;以及通过数据可视化工具连接所述存储组件,以供用户检索所述依赖和被依赖关系。
在本公开的一个示例性实施方式中,基对所述数据仓库的数据处理代码进行采集识别包括:依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。
在本公开的一个示例性实施方式中,采用以下公式进行所述递归式地检查以及分割:
Figure BDA0002634027250000021
其中,a是截断一元码的个数,k是信息取样区域的个数,j是子区域的个数,P是分割的概率。
在本公开的一个示例性实施方式中,解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:基于语法元素结构,预测所述子区域的层间依赖性;基于所预测的层间依赖性,反复解析所述子区域以获取用于操作所述数据仓库的语句。
根据本公开的另一个方面,提供了一种构建数据仓库表级别血缘关系的装置,包括获取模块,被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句;确定模块,被配置为解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
根据本公开的又一个方面,提供了一种计算机设备,包括处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序用于实现如上描述的构建数据仓库表级别血缘关系的方法。
根据本公开的又一个方面,提供了一种计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序被处理器执行时用于实现如上描述的构建数据仓库表级别血缘关系的方法。
在本公开中,通过对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系,解决了相关技术中构建数据仓库表级别血缘关系慢、构建数据仓库表级别血缘关系不准确、需要人工干预的问题,具有能够以自动化和低耦合的方式进行采集、解析和存储数据仓库HIVE表之间血缘关系,且通过可视化工具进行图文结合的方式检索和展示的有益效果。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施方式及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是根据本公开实施方式的构建数据仓库表级别血缘关系的方法的流程图。
图2是根据本公开实施方式的另一种构建数据仓库表级别血缘关系的方法的流程图。
图3是根据本公开实施方式的构建数据仓库表级别血缘关系的装置的结构示意图。
图4是根据本公开实施方式的构建数据仓库表级别血缘关系的系统的结构示意图。
图5为适于用来实现本公开实施方式的服务器的计算机设备的结构示意图。
具体实施方式
为使本公开实施的目的、技术方案和优点更加清楚,下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。基于本公开中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。下面结合附图对本公开的实施方式进行详细说明。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施方式能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本公开首先对所使用的术语进行定义,以使其含义清楚。
数据仓库(Data Warehouse)可简写为DW或DWH,是为企业所有级别的决策制定过程、供所有类型数据支持的战略集合。
HIVE是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
JAVA是一种面向对象编程语言。
SHELL是一种程序设计语言,交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令。
PYTHON是一种跨平台的计算机程序设计语言,具体地说,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
MYSQL是一种关系型数据库管理系统。
NEO4J是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。
截断一元码是一元码的变体,用在已知语法元素的最大值cMax的情况。
SQL是结构化查询语言(Structured Query Language)的简称,其是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
数据可视化工具是一种通过合适的图表将数据描绘出来,使杂乱无章的数据可读性得到提高,便于企业从数据中找到规律的工具。
提取,转换,加载(ETL)工具是负责从多个来源提取数据,清理,自定义,重新格式化,集成并插入到数据仓库中的软件。
下面开始描述本公开的示例性实施方式。
根据本公开一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的方法,如图1所示,该方法包括以下步骤:
步骤S102,自动识别ETL代码中的HIVE SQL。
通过使用JAVA语言对数据仓库ETL(包含SHELL、PYTHON或其他类型)代码或脚本进行定时或运行时监听方式采集识别,获取其涉及的HIVE SQL语句。
步骤S104,通过HIVE LineageInfo解析出血缘关系。
使用HIVE组件自带SQL解析工具LineageInfo,解析ETL脚本中HIVE SQL所引用到的源表和目标表,明确表与表之间依赖和被依赖关系。
步骤S106,将血缘关系按需存储。
将血缘关系信息按自身场景或需要的结构,存储至相关存储组件,例如MYSQL、NEO4J等。
步骤S108,通过可视化工具检索、展示血缘关系。
通过数据可视化工具连接存储组件,供使用人员按需进行查询阅览。
在本公开的示例性实施方式中,血缘关系的采集、解析、存储和展示,完全由程序定时和监听方式自动触发,无需人为干预,极大提升准确性,且ETL开发人员无需关心血缘关系采集,很大程度上减少额外工作,提高人效;其次,过程中与现有数据仓库ETL任务保持隔离,做到整体架构的低耦合,这样就大大的提高整体架构的稳定性和健壮性。
根据本公开的另一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的方法,如图2所示,该方法包括以下步骤:
步骤S202,对数据仓库的数据处理代码进行采集识别,获取数据处理代码所涉及的用于操作数据仓库的语句。
数据仓库是旨在使决策者能够做出更快更好的决策技术的集合。数据仓库体系结构由三层组成:数据源,DSA和主数据仓库。
ETL主要有三个功能:从不同的数据源提取数据;传播到数据暂存区,在此对其进行转换和清理;然后加载到数据仓库。数据处理代码是将数据从数据源经过抽取、转换、加载至数据仓库的代码或脚本,例如,ETL代码或脚本。
Hive提供了SQL查询方式来分析存储在ETL的分布式文件系统中的数据,从而可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能。这种SQL就是HiveSQL,其可以利用SQL语言查询、汇总、分析数据。
在一个示例性实施方式中,使用JAVA语言对ETL代码或脚本以定时方式或运行时监听方式进行采集识别,以获取ETL代码或脚本所涉及的SQL语句或HIVE SQL语句。
具体地,可以依照分割信息将数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割信息取样区域,以至少将信息取样区域分割为不同尺寸的具有截断一元码的子区域。然后,基于截断一元码,检查所分割的各个子区域。如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于预定的区域尺寸。
在一个示例性实施方式中,采用以下公式进行递归式地检查以及分割:
Figure BDA0002634027250000061
其中,a是截断一元码的个数,k是信息取样区域的个数,j是子区域的个数,P是分割的概率。在确定了分割的概率之后,如果分割的概率大于预定的阈值,则表示应该进行分割。之后,通过上下文索引,自适应地抽取子区域中的语法元素,以获取数据处理代码所涉及的用于操作数据仓库的语句。其中,截断一元码是一元码的变体,用在已知语法元素的最大值的情况,上下文索引是基于语法元素以及二值化后的二进制串的索引。
步骤S204,解析用于操作数据仓库的语句中所引用到的表,确定表之间的依赖和被依赖关系,以构建表级别血缘关系。
使用HIve组件的SQL解析工具,解析SQL语句中所引用到的源表和目标表,确定源表和目标表之间的依赖和被依赖关系。
使用Hive的内部解析方法来解析sql,以便可以在hive中执行的所有sql都可以完全解析为字段依赖项。通过分析Hive编译模块的源代码,确定每个模块所处的数据结构。源代码与HIVE的内部结构有关。本公开的实施方式中,没有对源代码进行干扰性的更改,而是利用了Hive挂钩绑定到Hive的内部工作机制,其提供了使用Hive扩展和集成外部功能的能力,并且可用于在查询处理的每个步骤中注入一些代码,而无需重新编译Hive。
Hive挂钩的API中,Hive已经实现了血缘挂钩。可以设计一个mysql表来存储字段依赖关系。还可以有依赖关系的创建时间和更新时间,以便于及时清除过期的依赖关系。使用配置HIVE挂钩具有以下优点:sql执行后自动更新依赖项;编写依赖项模块的执行状态不会影响在线任务,即,如果依赖项由于某种原因而无法写入,则不会影响在线任务的正常运行。
在大量现有的语法规则中,找到条目规则相对简单,因为该条目具有严格的要求,它必须能够处理完整的输入,并且规则匹配条件必须包含特定的令牌EOF,表示文件结尾(文件结尾)。
找到条目规则后,python中的调用语句知道如何编写它,但是由于java是一种强类型语言,因此python变量不能随便传递,并且必须符合java的类型系统。在本公开的示例性实施方式中,可以遵循诸如树遍历的规则名称,也可以根据配置单元中的关键字进行搜索。HiveLexer.g中定义的令牌也可以使用。
解析器使用自动类自动查找Java类名称,并将其映射到Python中的“类定义对象”。如果使用Python中的“type”进行检查,则类型为JavaClass。
在Jinus文档中,找到JavaClass中的属性javaconstructor。javaconstructor的属性是一个元组列表,每个元组对应一个可接受的构造函数签名,第一个元组是一个元组,表示需要传递的参数类型,第二个元组是返回值类型,因为java构造函数不需要返回值,总是存在false。
接下来,取决于注入代码的具体阶段,根据挂钩的类型,可以在查询处理期间的不同点调用该挂钩。例如,Pre-semantic-analyzer挂钩:在Hive对查询字符串运行语义分析器之前调用;Post-semantic-analyzer挂钩:在Hive对查询字符串运行语义分析器之后调用。
通过上述步骤,便可以基于语法元素结构,预测子区域的层间依赖性;并且基于所预测的层间依赖性,反复解析子区域以获取用于操作数据仓库的语句。
步骤S206,检索和展示血缘关系。
在一个示例性实施方式中,将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组件中。之后,通过数据可视化工具连接存储组件,以供用户检索依赖和被依赖关系。
根据本公开的一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的装置。如图3所示,该构建数据仓库表级别血缘关系的装置(简称为构建血缘关系的装置)包括获取模块32和确定模块34。
获取模块32被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句;确定模块34被配置为解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系
根据本公开的一个示例性实施方式,提供了一种构建数据仓库表级别血缘关系的系统。如图4所示,该构建数据仓库表级别血缘关系的系统包括数据源42、ETL工具44、构建血缘关系的装置46、和数据库48。
ETL的数据源42可以具有许多不同的数据结构格式,例如平面文件,XML数据集,关系表,非关系源,Web日志源,旧版系统和电子表格。这导致ETL的代码或脚本涉及到数据时,表达非常复杂。
ETL工具44主要执行ETL提取、DW、映射和加载处理。
在ETL提取过程中,可能会创建一些临时表来保存将非结构化源转换为数据库的结果。提取过程包括初始提取和刷新。当目标数据仓库中没有数据时首次执行ETL方案时,将进行初始提取。进行刷新提取以捕获增量数据(DW中的旧数据与数据源中的更新数据之间的差异)。最好将初始提取的ETL方案与刷新提取的ETL方案分开。这意味着用户可能需要为同一ETL场景构建两个EMD模型;一个用于初始提取,另一个用于使用临时区域中找到的临时表中的旧数据进行刷新提取。
在DW过程中,绘制数据仓库模式表。尽管事实表和维度表在功能和特性上明显不同,但是它们都是数据容器。基本上,数据仓库存储为关系结构而不是多维结构。多维性发生在联机分析处理引擎中。
在映射过程,绘制所需的转换函数。转换操作对来自暂存区域中的基本源和/或临时源的传入数据进行。某些转换操作会导致临时结果,这些结果将保存在临时表中。其中,会存在一个暂存区域,例如,一个物理容器,其中包含在提取过程中创建的所有临时表或由应用的转换函数产生的所有临时表。
在加载过程中,当数据达到最终的适当格式时,它将被加载到目标DW模式中的相应数据元素。数据可以通过某些转换函数直接加载,也可以从暂存区域中的所需临时表中捕获。
构建血缘关系的装置46是图3所示的构建数据仓库表级别血缘关系的装置,该装置可以是平板电脑、个人计算机、路由器,诸如移动电话和媒体播放器之类的可编程通信设备,以及其他可编程设备等。构建血缘关系的装置46可以与软件的可执行文件或数据存储设备的计算机可读介质中编码。当加载到构建血缘关系的装置46的存储器中时,在构建血缘关系的装置46的处理器中,一个或多个可执行文件使构建血缘关系的装置46执行处理。
构建血缘关系的装置46与数据库48之间通过有线或无线的通信网络相连。上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan AreaNetwork,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施方式中,使用包括超文本标记语言(Hyper TextMark-up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(SecureSocket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施方式中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
构建血缘关系的装置46还可以是一台服务器、若干台服务器构成的服务器集群或云计算中心,其可以执行图1和图2所示的方法,此处不再赘述。
下面参考图5,其示出了适于用来实现本公开实施方式的计算机设备800的结构示意图。图5示出的计算机设备仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图5所示,计算机设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分708加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有设备800操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
根据本公开的实施方式,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的方法中限定的上述功能。需要说明的是,本公开的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块或单元也可以设置在处理器中,这些模块或单元的名称在某种情况下并不构成对该模块或单元本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时按上述方法对数据进行处理。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种构建数据仓库表级别血缘关系的方法,其特征在于,包括:
对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其过程包括:
依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;
基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及
通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其中,所述上下文索引是基于语法元素以及二值化后的二进制串的索引;
解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
2.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,所述数据处理代码是将数据从数据源经过抽取、转换、加载至所述数据仓库的代码或脚本,并且,用于操作所述数据仓库的语句为SQL语句。
3.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句包括:使用JAVA语言对所述数据处理代码以定时方式或运行时监听方式进行采集识别,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。
4.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:使用HIVE组件的SQL解析工具,解析所述SQL语句中所引用到的源表和目标表,确定所述源表和所述目标表之间的依赖和被依赖关系。
5.如权利要求1至4中任一项所述的构建数据仓库表级别血缘关系的方法,其特征在于,确定所述表之间的依赖和被依赖关系之后,所述方法还包括:
将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组件中;以及
通过数据可视化工具连接所述存储组件,以供用户检索所述依赖和被依赖关系。
6.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,采用以下公式进行所述递归式地检查以及分割:
Figure FDA0003110497300000021
其中,a是截断一元码的个数,k是信息取样区域的个数,j是子区域的个数,P是分割的概率。
7.如权利要求1或6所述的构建数据仓库表级别血缘关系的方法,其特征在于,解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:
基于语法元素结构,预测所述子区域的层间依赖性;
基于所预测的层间依赖性,反复解析所述子区域以获取用于操作所述数据仓库的语句。
8.一种构建数据仓库表级别血缘关系的装置,其特征在于,包括:
获取模块,被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,包括:
依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;
基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及
通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其中,所述上下文索引是基于语法元素以及二值化后的二进制串的索引;
确定模块,被配置为解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
9.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如权利要求1-7任一项所述的方法。
CN202010819732.9A 2020-08-14 2020-08-14 构建数据仓库表级别血缘关系的方法及装置 Active CN111782738B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010819732.9A CN111782738B (zh) 2020-08-14 2020-08-14 构建数据仓库表级别血缘关系的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010819732.9A CN111782738B (zh) 2020-08-14 2020-08-14 构建数据仓库表级别血缘关系的方法及装置

Publications (2)

Publication Number Publication Date
CN111782738A CN111782738A (zh) 2020-10-16
CN111782738B true CN111782738B (zh) 2021-08-17

Family

ID=72762102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010819732.9A Active CN111782738B (zh) 2020-08-14 2020-08-14 构建数据仓库表级别血缘关系的方法及装置

Country Status (1)

Country Link
CN (1) CN111782738B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860811B (zh) * 2021-02-05 2023-07-18 北京百度网讯科技有限公司 数据血缘关系的确定方法、装置、电子设备和存储介质
CN115687309B (zh) * 2022-12-30 2023-04-18 浙江大学 非侵入式卷烟出入库全流程数据血缘构建方法、装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193004A1 (en) * 2008-01-30 2009-07-30 Business Objects, S.A. Apparatus and method for forming database tables from queries
US20110295795A1 (en) * 2010-05-28 2011-12-01 Oracle International Corporation System and method for enabling extract transform and load processes in a business intelligence server
CN103902653B (zh) * 2014-02-28 2017-08-01 珠海多玩信息技术有限公司 一种构建数据仓库表血缘关系图的方法和装置
CN105589874B (zh) * 2014-10-22 2019-03-15 阿里巴巴集团控股有限公司 Etl任务依赖关系的检测方法、装置及etl工具
CN109446279A (zh) * 2018-10-15 2019-03-08 顺丰科技有限公司 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN111782738A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
US20220100774A1 (en) Generating data transformation workflows
Mehmood et al. Implementing big data lake for heterogeneous data sources
US10459881B2 (en) Data management platform using metadata repository
Karnitis et al. Migration of relational database to document-oriented database: Structure denormalization and data transformation
US10572494B2 (en) Bootstrapping the data lake and glossaries with ‘dataset joins’ metadata from existing application patterns
US10210240B2 (en) Systems and methods for code parsing and lineage detection
KR20190060725A (ko) Sql 검토 방법, 장치, 서버 및 저장 매체
CN109947791B (zh) 一种数据库语句优化方法、装置、设备及存储介质
US9460142B2 (en) Detecting renaming operations
CN111782738B (zh) 构建数据仓库表级别血缘关系的方法及装置
US11520733B2 (en) Source data assignment based on metadata
CN112000773A (zh) 基于搜索引擎技术的数据关联关系挖掘方法及应用
US20190391977A1 (en) System for rapid ingestion, semantic modeling and semantic querying over computer clusters
CN111078729A (zh) 医疗数据溯源方法、装置、系统、存储介质以及电子设备
US8150832B2 (en) Methods and systems for automatically determining a default hierarchy from data
GB2507095A (en) Generating synthetic data from a decision tree model of a dataset
US10628421B2 (en) Managing a single database management system
US10223086B2 (en) Systems and methods for code parsing and lineage detection
CN117271903A (zh) 基于医院临床大数据的事件搜索方法及装置
CN116150194B (zh) 数据获取方法、装置、电子设备和计算机可读介质
CN113326381A (zh) 基于动态本体的语义和知识图谱分析方法、平台及设备
CN113326345A (zh) 基于动态本体的知识图谱分析、应用方法、平台及设备
CN114880483A (zh) 一种元数据知识图谱构建方法、存储介质及系统
CN114064606A (zh) 数据库迁移方法、装置、设备、存储介质和系统
CN112988778A (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
GR01 Patent grant
GR01 Patent grant