构建数据仓库表级别血缘关系的方法及装置转让专利
申请号 : CN202010819732.9
文献号 : CN111782738B
文献日 : 2021-08-17
发明人 : 刘世超 , 姚登科 , 王君
申请人 : 北京斗米优聘科技发展有限公司
摘要 :
权利要求 :
1.一种构建数据仓库表级别血缘关系的方法,其特征在于,包括:对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其过程包括:依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;
基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其中,所述上下文索引是基于语法元素以及二值化后的二进制串的索引;
解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
2.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,所述数据处理代码是将数据从数据源经过抽取、转换、加载至所述数据仓库的代码或脚本,并且,用于操作所述数据仓库的语句为SQL语句。
3.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句包括:使用JAVA语言对所述数据处理代码以定时方式或运行时监听方式进行采集识别,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。
4.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,解析用于操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:使用HIVE组件的SQL解析工具,解析所述SQL语句中所引用到的源表和目标表,确定所述源表和所述目标表之间的依赖和被依赖关系。
5.如权利要求1至4中任一项所述的构建数据仓库表级别血缘关系的方法,其特征在于,确定所述表之间的依赖和被依赖关系之后,所述方法还包括:将所确定的依赖和被依赖关系,按自身场景或需要的结构,存储至存储组件中;以及通过数据可视化工具连接所述存储组件,以供用户检索所述依赖和被依赖关系。
6.如权利要求1所述的构建数据仓库表级别血缘关系的方法,其特征在于,采用以下公式进行所述递归式地检查以及分割:其中,a是截断一元码的个数,k是信息取样区域的个数,j是子区域的个数,P是分割的概率。
7.如权利要求1或6所述的构建数据仓库表级别血缘关系的方法,其特征在于,解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系包括:基于语法元素结构,预测所述子区域的层间依赖性;
基于所预测的层间依赖性,反复解析所述子区域以获取用于操作所述数据仓库的语句。
8.一种构建数据仓库表级别血缘关系的装置,其特征在于,包括:获取模块,被配置为对所述数据仓库的数据处理代码进行采集识别,获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,包括:依照分割信息将所述数据处理代码空间地分割为表示取样信息的信息取样区域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述信息取样区域分割为不同尺寸的具有截断一元码的子区域;
基于所述截断一元码,检查所分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句,其中,所述上下文索引是基于语法元素以及二值化后的二进制串的索引;
确定模块,被配置为解析操作所述数据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
9.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现如权利要求1‑7任一项所述的方法。
说明书 :
构建数据仓库表级别血缘关系的方法及装置
技术领域
背景技术
和复杂度也不断递增。
档内容;文档共享于使用人员。
接或间接带来的工作量也十分巨大。
发明内容
操作所述数据仓库的语句;解析用于操作所述数据仓库的语句中所引用到的表,确定所述
表之间的依赖和被依赖关系,以构建表级别血缘关系。
句。
所述数据处理代码以定时方式或运行时监听方式进行采集识别,以获取所述数据处理代码
所涉及的用于操作所述数据仓库的语句。
述SQL语句中所引用到的源表和目标表,确定所述源表和所述目标表之间的依赖和被依赖
关系。
件中;以及通过数据可视化工具连接所述存储组件,以供用户检索所述依赖和被依赖关系。
域,并且依照子分割信息,通过递归式的二分查找来分割所述信息取样区域,以至少将所述
信息取样区域分割为不同尺寸的具有截断一元码的子区域;基于所述截断一元码,检查所
分割的各个子区域,如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有
最大区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子
区域都小于所述预定的区域尺寸;以及通过上下文索引,自适应地抽取所述子区域中的语
法元素,以获取所述数据处理代码所涉及的用于操作所述数据仓库的语句。
个数,j是子区域的个数,P是分割的概率。
依赖性;基于所预测的层间依赖性,反复解析所述子区域以获取用于操作所述数据仓库的
语句。
代码所涉及的用于操作所述数据仓库的语句;确定模块,被配置为解析操作所述数据仓库
的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系。
用于实现如上描述的构建数据仓库表级别血缘关系的方法。
关系的方法。
引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘关系,解决了相关技
术中构建数据仓库表级别血缘关系慢、构建数据仓库表级别血缘关系不准确、需要人工干
预的问题,具有能够以自动化和低耦合的方式进行采集、解析和存储数据仓库HIVE表之间
血缘关系,且通过可视化工具进行图文结合的方式检索和展示的有益效果。
附图说明
具体实施方式
或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是
本公开一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示
例性的,旨在用于解释本公开,而不能理解为对本公开的限制。基于本公开中的实施方式,
本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本
公开保护的范围。下面结合附图对本公开的实施方式进行详细说明。
的数据在适当情况下可以互换,以便这里描述的本公开的实施方式能够以除了在这里图示
或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于
覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限
于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产
品或设备固有的其它步骤或单元。
数据库系统。
关系采集,很大程度上减少额外工作,提高人效;其次,过程中与现有数据仓库ETL任务保持
隔离,做到整体架构的低耦合,这样就大大的提高整体架构的稳定性和健壮性。
载至数据仓库的代码或脚本,例如,ETL代码或脚本。
SQL,其可以利用SQL语言查询、汇总、分析数据。
取样区域分割为不同尺寸的具有截断一元码的子区域。然后,基于截断一元码,检查所分割
的各个子区域。如果该子区域超过预定的区域尺寸,则将该子区域进一步分割为具有最大
区域尺寸的子区域,重复地对这些子区域进行递归式地检查以及分割,直到所有的子区域
都小于预定的区域尺寸。
数,j是子区域的个数,P是分割的概率。在确定了分割的概率之后,如果分割的概率大于预
定的阈值,则表示应该进行分割。之后,通过上下文索引,自适应地抽取子区域中的语法元
素,以获取数据处理代码所涉及的用于操作数据仓库的语句。其中,截断一元码是一元码的
变体,用在已知语法元素的最大值的情况,上下文索引是基于语法元素以及二值化后的二
进制串的索引。
代码与HIVE的内部结构有关。本公开的实施方式中,没有对源代码进行干扰性的更改,而是
利用了Hive挂钩绑定到Hive的内部工作机制,其提供了使用Hive扩展和集成外部功能的能
力,并且可用于在查询处理的每个步骤中注入一些代码,而无需重新编译Hive。
用配置HIVE挂钩具有以下优点:sql执行后自动更新依赖项;编写依赖项模块的执行状态不
会影响在线任务,即,如果依赖项由于某种原因而无法写入,则不会影响在线任务的正常运
行。
(文件结尾)。
性实施方式中,可以遵循诸如树遍历的规则名称,也可以根据配置单元中的关键字进行搜
索。HiveLexer.g中定义的令牌也可以使用。
表示需要传递的参数类型,第二个元组是返回值类型,因为java构造函数不需要返回值,总
是存在false。
器之前调用;Post‑semantic‑analyzer挂钩:在Hive对查询字符串运行语义分析器之后调
用。
被依赖关系。
括获取模块32和确定模块34。
据仓库的语句中所引用到的表,确定所述表之间的依赖和被依赖关系,以构建表级别血缘
关系
血缘关系的装置46、和数据库48。
表达非常复杂。
将进行初始提取。进行刷新提取以捕获增量数据(DW中的旧数据与数据源中的更新数据之
间的差异)。最好将初始提取的ETL方案与刷新提取的ETL方案分开。这意味着用户可能需要
为同一ETL场景构建两个EMD模型;一个用于初始提取,另一个用于使用临时区域中找到的
临时表中的旧数据进行刷新提取。
生在联机分析处理引擎中。
会存在一个暂存区域,例如,一个物理容器,其中包含在提取过程中创建的所有临时表或由
应用的转换函数产生的所有临时表。
捕获。
备,以及其他可编程设备等。构建血缘关系的装置46可以与软件的可执行文件或数据存储
设备的计算机可读介质中编码。当加载到构建血缘关系的装置46的存储器中时,在构建血
缘关系的装置46的处理器中,一个或多个可执行文件使构建血缘关系的装置46执行处理。
络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area
Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者
虚拟专用网络的任何组合)。在一些实施方式中,使用包括超文本标记语言(Hyper Text
Mark‑up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术
和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure
Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络
(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)
等常规加密技术来加密所有或者一些链路。在另一些实施方式中,还可以使用定制和/或专
用数据通信技术取代或者补充上述数据通信技术。
来任何限制。
执行各种适当的动作和处理。在RAM803中,还存储有设备800操作所需的各种程序和数据。
CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线
804。
以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因
特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如
磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出
的计算机程序根据需要被安装入存储部分808。
计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施方
式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811
被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的方法中限定的上
述功能。需要说明的是,本公开的计算机存储介质可以是计算机可读信号介质或者计算机
可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限
于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算
机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携
式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器
(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或
者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序
的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公
开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其
中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于
电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读
存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由
指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程
序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的
任意合适的组合。
代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个
用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所
标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际
上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要
注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用
执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指
令的组合来实现。
的名称在某种情况下并不构成对该模块或单元本身的限定。
中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该装
置执行时按上述方法对数据进行处理。
涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为
准。