CN116186174A - 基于数据分析的数据血缘关系图构建方法及相关设备 - Google Patents
基于数据分析的数据血缘关系图构建方法及相关设备 Download PDFInfo
- Publication number
- CN116186174A CN116186174A CN202310158529.5A CN202310158529A CN116186174A CN 116186174 A CN116186174 A CN 116186174A CN 202310158529 A CN202310158529 A CN 202310158529A CN 116186174 A CN116186174 A CN 116186174A
- Authority
- CN
- China
- Prior art keywords
- data
- blood
- sql
- field
- data set
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种基于数据分析的数据血缘关系图构建方法、装置、电子设备及存储介质,基于数据分析的数据血缘关系图构建方法包括:采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集;对SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集;对查询语句数据集进行词法分析和语法分析以构建抽象语法树;基于元数据集、非查询语句数据集和抽象语法树生成字段血缘路径;基于字段血缘路径构建数据血缘关系图。本申请利用构建抽象语法树来解析SQL语句,并结合非查询语句集和元数据集生成字段血缘路径,最终可以将字段血缘路径清晰的表现在数据血缘关系图中,从而提升获得的数据血缘关系图的准确性和可靠性。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种基于数据分析的数据血缘关系图构建方法、装置、电子设备及存储介质。
背景技术
随着大数据的发展,数据库中的表、字段数据呈现爆发性的增长,海量、复杂的数据通过流转、映射与聚合等关联操作天然地形成数据血缘关系。因此通过数据分析可以梳理、存储以及可视化数据库表、字段的血缘关系,对数据溯源、评估数据质量和定位数据价值等具有重要意义。
然而,由于数据库SQL语句语法灵活多变、嵌套结构深,以及SQL脚本编写不规范等问题,导致现有技术从SQL脚本中梳理出字段级别的血缘难度较高,从而使提取的字段级别的血缘关系不够准确。
发明内容
鉴于以上内容,有必要提出一种基于数据分析的数据血缘关系图构建方法及相关设备,以解决如何提高提取的字段级别的血缘关系的准确度这一技术问题。其中,相关设备包括基于数据分析的数据血缘关系图构建装置、电子设备及存储介质。
本申请提供一种基于数据分析的数据血缘关系图构建方法,所述方法包括:
采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集;
对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集;
对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树;
基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径;
基于所述字段血缘路径构建数据血缘关系图。
在一些实施例中,所述采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集包括:
依据预设周期启动线程连接预设的关系型数据库;
基于所述线程分别采集所述关系型数据库中的元数据和SQL语句得到元数据集和SQL语句数据集。
在一些实施例中,所述对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集包括:
依据正则表达式识别所述SQL语句数据集中的注释行,并对所述注释行进行替换得到第一语句关系数据集;
依据正则表达式和预设关键词对所述第一语句关系数据集进行筛选获得第二语句关系数据集;
基于所述预设关键词将所述第二语句关系数据集划分为查询语句数据集和非查询语句数据集。
在一些实施例中所述对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树包括:
对所述查询语句数据集中的SQL语句进行词法分析获得所述SQL语句中每一个词的位置;
依据语法分析获取所述SQL语句中每一个词的含义和所述SQL语句的结构体;
基于所述SQL语句中每一个词的位置、含义和结构体构建抽象语法树,所述抽象语法树包括根节点和叶节点。
在一些实施例中,所述基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径包括:
基于所述元数据集获取所述叶节点代表的SQL语句中被选中的字段及字段所属表的信息获得清晰叶节点;
遍历所述抽象语法树中的清晰叶节点和根节点以获取血缘关系基础字段;
基于所述非查询语句数据集对所述血缘关系基础字段进行匹配获得血缘关系定位字段;
基于所述血缘关系定位字段构建多条字段血缘路径。
在一些实施例中,所述遍历所述抽象语法树中的清晰叶节点和根节点以获取血缘关系基础字段包括:
将同时存在于目标叶节点和所述目标叶节点的父节点中的字段进行保留获得所述目标叶节点对应的血缘关系基础字段,所述目标叶节点为所述清晰叶节点中的任意一个;
按照从清晰叶节点到根节点的方向依次遍历所述抽象语法树中的清晰叶节点和根节点获得每一个清晰叶节点所对应的血缘关系基础字段。
在一些实施例中,所述数据血缘关系图包括字段级血缘关系图和表级血缘关系图,所述基于所述字段血缘路径构建数据血缘关系图包括:
以所述字段血缘路径中的各字段为顶点,各字段对应的SQL语句为有向边构建字段级血缘关系图;
以所述字段血缘路径中的各字段所在的表为顶点,各字段对应的SQL语句为有向边构建表级血缘关系图。
本申请实施例还提供一种基于数据分析的数据血缘关系图构建装置,所述装置包括:
采集单元,用于采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集;
划分单元,用于对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集;
分析单元,用于对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树;
生成单元,用于基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径;
构建单元,用于基于所述字段血缘路径构建数据血缘关系图。
本申请实施例还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;
处理器,执行所述存储器中存储的指令以实现所述的基于数据分析的数据血缘关系图构建方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现所述的基于数据分析的数据血缘关系图构建方法。
本申请通过构建抽象语法树来解析SQL语句,并结合非查询语句集和元数据集生成字段血缘路径,最终可以将字段血缘路径清晰的表现在数据血缘关系图中,从而提升获得的数据血缘关系图的准确性和可靠性。
附图说明
图1是本申请所涉及的基于数据分析的数据血缘关系图构建方法的较佳实施例的流程图。
图2是本申请所涉及的基于数据分析的数据血缘关系图构建装置的较佳实施例的功能模块图。
图3是本申请所涉及的基于数据分析的数据血缘关系图构建方法的较佳实施例的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本申请的目的、特征和优点,下面结合附图和具体实施例对本申请进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互结合。在下面的描述中阐述了很多具体细节以便于充分理解本申请,所述描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本申请实施例提供一种基于数据分析的数据血缘关系图构建方法,可应用于一个或者多个电子设备中,电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
电子设备可以是任何一种可与客户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能式穿戴式设备等。
电子设备还可以包括网络设备和/或客户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络服务器构成的云。
电子设备所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
如图1所示,是本申请基于数据分析的数据血缘关系图构建方法的较佳实施例的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
S10,采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集。
在一个可选的实施例中,所述采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集包括:
依据预设周期启动线程连接预设的关系型数据库;
基于所述线程分别采集所述关系型数据库中的元数据和SQL语句得到元数据集和SQL语句数据集。
该可选的实施例中,由于本方案主要针对SQL语句进行数据血缘关系的提取,因此需要使用包括SQL语句的关系型数据库,所述关系型数据库可以是MySql、PostgreSql、Oracle、openGauss等数据库,本方案不对具体的关系型数据库作限制。
该可选的实施例中,可通过JAVA服务依据预设周期启动线程,并通过线程定时连接需要采集数据的所述关系型数据库,从而访问所述关系型数据库中用于存放元数据与SQL语句的系统表或系统视图,并由此采集到所述关系型数据库中存储的元数据和SQL语句。本方案中将采集到的元数据作为元数据集,将采集到的SQL语句作为SQL语句数据集,其中,元数据用于描述数据的属性信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
如此,可以通过线程定时获取存储于同一关系型数据库中的元数据和SQL语句,为后续获取数据之间的血缘关系提供数据支撑。
S11,对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集。
在一个可选的实施例中,所述对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集包括:
依据正则表达式识别所述SQL语句数据集中的注释行,并对所述注释行进行替换得到第一语句关系数据集;
依据正则表达式和预设关键词对所述第一语句关系数据集进行筛选获得第二语句关系数据集;
基于所述预设关键词将所述第二语句关系数据集划分为查询语句数据集和非查询语句数据集。
该可选的实施例中,可通过正则表达式识别所述SQL语句数据集中各SQL语句的注释行,其中,所述注释行指以指定注释符号开头,以换行符结尾的行,如正则表达式:“--.*\r\n”。所述正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种符合条件的子串或者符号,通常以脚本程序的形式匹配某种符合条件的子串或者符号。
该可选的实施例中,可将识别出的注释行中的字符全部以空字符进行替换,从而避免注释行中的字符与SQL语句产生混淆而产生的误差,本方案中将经过空字符替换后的所述SQL语句数据集作为第一语句关系数据集。
该可选的实施例中,由于并非所有的SQL语句均会产生血缘关系,因此可对所述第一语句关系数据集进行筛选,将所述第一语句关系数据集中不会产生血缘关系的SQL语句进行过滤,并将保留下来的SQL语句作为第二语句关系数据集。
该可选的实施例中,由于属于数据定义语句(DDL)或数据操作语句(DML)类别且带有“SELECT”关键词的SQL语句一般均可产生血缘关系,如INSERT…SELECT…、CREATE…SELECT…等SQL语句。因此,可通过正则表达式判断所述第一语句关系数据集中的各SQL语句是否满足DDL类型或者DML类型,同时判断各SQL语句中是否含有“SELECT”关键词,将满足DDL类型或者DML类型且含有“SELECT”关键词的SQL语句进行保留,从而获得第二语句关系数据集。其中,所述预设关键词可以为“SELECT”关键词。
该可选的实施例中,对于获取到的第二语句关系数据集中的SQL语句,可从各SQL语句中第一次出现“SELECT”关键词的位置处,将对应的SQL语句划分为SQL查询语句和SQL非查询语句。其中,将“SELECT”关键词之前的部分作为非查询语句,如INSERT…、CREATE…等语句,将包括“SELECT”的其他部分作为查询语句,如SELECT…。本方案中将所有SQL语句的SQL非查询语句作为非查询语句数据集,将所有SQL语句的SQL查询语句作为查询语句数据集。
如此,通过对所述SQL语句数据集中的注释行进行替换,可以有效减少注释行语句带来的误差,同时将不具有血缘关系的SQL语句进行筛选并将剩余的SQL语句划分为SQL查询语句和SQL非查询语句,可以便于后续过程据此构建出准确的抽象语法树。
S12,对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树。
在一个可选的实施例中,所述对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树包括:
对所述查询语句数据集中的SQL语句进行词法分析获得所述SQL语句中每一个词的位置;
依据语法分析获取所述SQL语句中每一个词的含义和所述SQL语句的结构体;
基于所述SQL语句中每一个词的位置、含义和结构体构建抽象语法树,所述抽象语法树包括根节点和叶节点。
该可选的实施例中,可通过所述关系型数据库中的SQL引擎对所述查询语句数据集中的SQL语句进行解析,所述SQL语句的解析过程包括词法分析、语句分析和语义分析。其中,词法分析可将SQL语句拆解成单词序列,并识别出关键字、标识、常量等;语法分析可分析出每一个单词的含义及该单词所在的SQL语句;语义分析则可以在语法正确的基础上进行上下文有关性质的审查。
该可选的实施例中,可通过SQL语句词法分析来分析所述查询语句数据集中SQL语句中的每一个词,并同时记录每一个词在SQL语句中的位置,同时依据语法分析获取所述SQL语句中每一个词的含义和所述SQL语句的结构体,所述结构体用来保存对应的SQL语句的语法分析结果。所述结构体可以看作一个多叉树,每个叶子节点都表达了SELECT查询语句中的一个语法结构,由于SQL语句一般具有多层嵌套结构,因此通过结构体可以清晰的表达出各层节点所代表的嵌套结构之间的嵌套关系。
该可选的实施例中,可基于所述SQL语句中每一个词的位置、含义和结构体构建抽象语法树,所述抽象语法树包括根节点和叶节点。
该可选的实施例中,每一个叶节点代表SQL查询语句被选中的字段,在构建抽象语法树之后,还可以依据语义分析中的SQL解析器对每一个节点进行解析,并记录每一个节点的属性,所述节点的属性包括当前节点的名字、同一级别的节点名字以及当前节点所在的表。
如此,可通过对所述查询语句数据集中的SQL语句进行词法分析和语法分析构建出抽象语法树来对SQL语句中的多层嵌套关系进行清晰表达,便于后续过程据此获取SQL语句中各字段之间的血缘关系。
S13,基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径。
在一个可选的实施例中,所述基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径包括:
基于所述元数据集获取所述叶节点代表的SQL查询语句中被选中的字段及字段所属表的信息获得清晰叶节点;
遍历所述抽象语法树中的清晰叶节点和根节点以获取血缘关系基础字段;
基于所述非查询语句数据集对所述血缘关系基础字段进行匹配获得血缘关系定位字段;
基于所述血缘关系定位字段构建多条字段血缘路径。
该可选的实施例中,可判断所述抽象语法树的所有叶结点代表的查询语句被选中的字段信息是否清晰,具体过程为:
若当前SQL查询语句的被选中的部分为“*”号,则需要依据所述元数据集查出该“*”号所在的表的所有字段信息,并将该语句中的“*”号替换;若当前SQL查询语句中含有Join、Union等关联查询词,导致被选中的字段所属的表不明确,也需要通过查询所述元数据集获得该字段所属表的信息。
该可选的实施例中,将具有清晰明确的字段信息和字段所述的表的信息的叶节点作为清晰叶节点,并将同时存在于目标叶节点和所述目标叶节点的父节点中的字段进行保留获得所述目标叶节点对应的血缘关系基础字段,所述目标叶节点为所述清晰叶节点中的任意一个。
该可选的实施例中,可按照从清晰叶节点到根节点的方向依次遍历所述抽象语法树中的清晰叶节点和根节点获得每一个清晰叶节点所对应的血缘关系基础字段。
该可选的实施例中,若SQL查询语句中包含UNION/JOIN等关联查询,此时需要按照从左到右的顺序依次遍历所有的清晰叶节点,然后再按照从清晰叶节点到根节点的方向依次遍历所述抽象语法树中的清晰叶节点和根节点获得每一个清晰叶节点所对应的血缘关系基础字段。
该可选的实施例中,可对所述非查询语句数据集中的表及字段信息进行遍历,从而匹配上与所述抽象语法树的根节点同位置被选中的血缘关系基础字段获得血缘关系定位字段。
如此,可结合非查询语句集和元数据集生成准确的字段血缘路径,从而提升后续过程中获得的数据血缘关系图的准确性和可靠性。
S14,基于所述字段血缘路径构建数据血缘关系图。
在一个可选的实施例中,所述基于所述字段血缘路径构建数据血缘关系图包括:
以所述字段血缘路径中的各字段为顶点,各字段对应的SQL语句为有向边构建字段级血缘关系图;
以所述字段血缘路径中的各字段所在的表为顶点,各字段对应的SQL语句为有向边构建表级血缘关系图。
该可选的实施例中,可通过分别以所述字段血缘路径中的各字段为顶点和以所述字段血缘路径中的各字段所在的表为顶点,同时以各字段对应的SQL语句为有向边构建得到字段级血缘关系图和表级血缘关系图,借助图形实现对SQL语句中数据的血缘关系的清晰表示,有助于快速地对表及字段进行溯源分析、数据质量评估以及数据价值评估。
如此,可以按照表和字段两个级别构建对应的血缘关系图,直观准确的实现对SQL语句中数据的血缘关系进行清晰表示。
请参见图2,图2是本申请基于数据分析的数据血缘关系图构建装置的较佳实施例的功能模块图。基于数据分析的数据血缘关系图构建装置11包括采集单元110、划分单元111、分析单元112、生成单元113、构建单元114。本申请所称的模块/单元是指一种能够被处理器13所执行,并且能够完成固定功能的一系列计算机可读指令段,其存储在存储器12中。在本实施例中,关于各模块/单元的功能将在后续的实施例中详述。
在一个可选的实施例中,采集单元110用于采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集。
在一个可选的实施例中,所述采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集包括:
依据预设周期启动线程连接预设的关系型数据库;
基于所述线程分别采集所述关系型数据库中的元数据和SQL语句得到元数据集和SQL语句数据集。
该可选的实施例中,由于本方案主要针对SQL语句进行数据血缘关系的提取,因此需要使用包括SQL语句的关系型数据库,所述关系型数据库可以是MySql、PostgreSql、Oracle、openGauss等数据库,本方案不对具体的关系型数据库作限制。
该可选的实施例中,可通过JAVA服务依据预设周期启动线程,并通过线程定时连接需要采集数据的所述关系型数据库,从而访问所述关系型数据库中用于存放元数据与SQL语句的系统表或系统视图,并由此采集到所述关系型数据库中存储的元数据和SQL语句。本方案中将采集到的元数据作为元数据集,将采集到的SQL语句作为SQL语句数据集,其中,元数据用于描述数据的属性信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
在一个可选的实施例中,划分单元111用于对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集。
在一个可选的实施例中,所述对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集包括:
依据正则表达式识别所述SQL语句数据集中的注释行,并对所述注释行进行替换得到第一语句关系数据集;
依据正则表达式和预设关键词对所述第一语句关系数据集进行筛选获得第二语句关系数据集;
基于所述预设关键词将所述第二语句关系数据集划分为查询语句数据集和非查询语句数据集。
该可选的实施例中,可通过正则表达式识别所述SQL语句数据集中各SQL语句的注释行,其中,所述注释行指以指定注释符号开头,以换行符结尾的行,如正则表达式:“--.*\r\n”。所述正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种符合条件的子串或者符号,通常以脚本程序的形式匹配某种符合条件的子串或者符号。
该可选的实施例中,可将识别出的注释行中的字符全部以空字符进行替换,从而避免注释行中的字符与SQL语句产生混淆而产生的误差,本方案中将经过空字符替换后的所述SQL语句数据集作为第一语句关系数据集。
该可选的实施例中,由于并非所有的SQL语句均会产生血缘关系,因此可对所述第一语句关系数据集进行筛选,将所述第一语句关系数据集中不会产生血缘关系的SQL语句进行过滤,并将保留下来的SQL语句作为第二语句关系数据集。
该可选的实施例中,由于属于数据定义语句(DDL)或数据操作语句(DML)类别且带有“SELECT”关键词的SQL语句一般均可产生血缘关系,如INSERT…SELECT…、CREATE…SELECT…等SQL语句。因此,可通过正则表达式判断所述第一语句关系数据集中的各SQL语句是否满足DDL类型或者DML类型,同时判断各SQL语句中是否含有“SELECT”关键词,将满足DDL类型或者DML类型且含有“SELECT”关键词的SQL语句进行保留,从而获得第二语句关系数据集。其中,所述预设关键词可以为“SELECT”关键词。
该可选的实施例中,对于获取到的第二语句关系数据集中的SQL语句,可从各SQL语句中第一次出现“SELECT”关键词的位置处,将对应的SQL语句划分为SQL查询语句和SQL非查询语句。其中,将“SELECT”关键词之前的部分作为非查询语句,如INSERT…、CREATE…等语句,将包括“SELECT”的其他部分作为查询语句,如SELECT…。本方案中将所有SQL语句的SQL非查询语句作为非查询语句数据集,将所有SQL语句的SQL查询语句作为查询语句数据集。
在一个可选的实施例中,分析单元112用于对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树。
在一个可选的实施例中,所述对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树包括:
对所述查询语句数据集中的SQL语句进行词法分析获得所述SQL语句中每一个词的位置;
依据语法分析获取所述SQL语句中每一个词的含义和所述SQL语句的结构体;
基于所述SQL语句中每一个词的位置、含义和结构体构建抽象语法树,所述抽象语法树包括根节点和叶节点。
该可选的实施例中,可通过所述关系型数据库中的SQL引擎对所述查询语句数据集中的SQL语句进行解析,所述SQL语句的解析过程包括词法分析、语句分析和语义分析。其中,词法分析可将SQL语句拆解成单词序列,并识别出关键字、标识、常量等;语法分析可分析出每一个单词的含义及该单词所在的SQL语句;语义分析则可以在语法正确的基础上进行上下文有关性质的审查。
该可选的实施例中,可通过SQL语句词法分析来分析所述查询语句数据集中SQL语句中的每一个词,并同时记录每一个词在SQL语句中的位置,同时依据语法分析获取所述SQL语句中每一个词的含义和所述SQL语句的结构体,所述结构体用来保存对应的SQL语句的语法分析结果。所述结构体可以看作一个多叉树,每个叶子节点都表达了SELECT查询语句中的一个语法结构,由于SQL语句一般具有多层嵌套结构,因此通过结构体可以清晰的表达出各层节点所代表的嵌套结构之间的嵌套关系。
该可选的实施例中,可基于所述SQL语句中每一个词的位置、含义和结构体构建抽象语法树,所述抽象语法树包括根节点和叶节点。
该可选的实施例中,每一个叶节点代表SQL查询语句被选中的字段,在构建抽象语法树之后,还可以依据语义分析中的SQL解析器对每一个节点进行解析,并记录每一个节点的属性,所述节点的属性包括当前节点的名字、同一级别的节点名字以及当前节点所在的表。
在一个可选的实施例中,生成单元113用于基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径。
在一个可选的实施例中,所述基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径包括:
基于所述元数据集获取所述叶节点代表的SQL语句中被选中的字段及字段所属表的信息获得清晰叶节点;
遍历所述抽象语法树中的清晰叶节点和根节点以获取血缘关系基础字段;
基于所述非查询语句数据集对所述血缘关系基础字段进行匹配获得血缘关系定位字段;
基于所述血缘关系定位字段构建多条字段血缘路径。
该可选的实施例中,可判断所述抽象语法树的所有叶结点代表的查询语句被选中的字段信息是否清晰,具体过程为:
若当前SQL查询语句的被选中的部分为“*”号,则需要依据所述元数据集查出该“*”号所在的表的所有字段信息,并将该语句中的“*”号替换;若当前SQL查询语句中含有Join、Union等关联查询词,导致被选中的字段所属的表不明确,也需要通过查询所述元数据集获得该字段所属表的信息。
该可选的实施例中,将具有清晰明确的字段信息和字段所述的表的信息的叶节点作为清晰叶节点,并将同时存在于目标叶节点和所述目标叶节点的父节点中的字段进行保留获得所述目标叶节点对应的血缘关系基础字段,所述目标叶节点为所述清晰叶节点中的任意一个。
该可选的实施例中,可按照从清晰叶节点到根节点的方向依次遍历所述抽象语法树中的清晰叶节点和根节点获得每一个清晰叶节点所对应的血缘关系基础字段。
该可选的实施例中,若SQL查询语句中包含UNION/JOIN等关联查询,此时需要按照从左到右的顺序依次遍历所有的清晰叶节点,然后再按照从清晰叶节点到根节点的方向依次遍历所述抽象语法树中的清晰叶节点和根节点获得每一个清晰叶节点所对应的血缘关系基础字段。
该可选的实施例中,可对所述非查询语句数据集中的表及字段信息进行遍历,从而匹配上与所述抽象语法树的根节点同位置被选中的血缘关系基础字段获得血缘关系定位字段。
在一个可选的实施例中,构建单元114用于基于所述字段血缘路径构建数据血缘关系图。
在一个可选的实施例中,所述基于所述字段血缘路径构建数据血缘关系图包括:
以所述字段血缘路径中的各字段为顶点,各字段对应的SQL语句为有向边构建字段级血缘关系图;
以所述字段血缘路径中的各字段所在的表为顶点,各字段对应的SQL语句为有向边构建表级血缘关系图。
该可选的实施例中,可通过分别以所述字段血缘路径中的各字段为顶点和以所述字段血缘路径中的各字段所在的表为顶点,同时以各字段对应的SQL语句为有向边构建得到字段级血缘关系图和表级血缘关系图,借助图形实现对SQL语句中数据的血缘关系的清晰表示,有助于快速地对表及字段进行溯源分析、数据质量评估以及数据价值评估。
由以上技术方案可以看出,本申请能够通过构建抽象语法树来解析SQL语句,并结合非查询语句集和元数据集生成字段血缘路径,最终可以将字段血缘路径清晰的表现在数据血缘关系图中,从而提升获得的数据血缘关系图的准确性和可靠性。
请参见图3,是本申请实施例提供的一种电子设备的结构示意图。电子设备1包括存储器12和处理器13。存储器12用于存储计算机可读指令,处理器13用执行所述储器中存储的计算机可读指令以实现上述任一实施例所述的基于数据分析的数据血缘关系图构建方法。
在一个可选的实施例中,电子设备1还包括总线、存储在所述存储器12中并可在所述处理器13上运行的计算机程序,例如基于数据分析的数据血缘关系图构建程序。
图3仅示出了具有存储器12和处理器13的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
结合图1,电子设备1中的所述存储器12存储多个计算机可读指令以实现一种基于数据分析的数据血缘关系图构建方法,所述处理器13可执行所述多个指令从而实现:
采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集;
对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集;
对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树;
基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径;
基于所述字段血缘路径构建数据血缘关系图。
具体地,所述处理器13对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
本领域技术人员可以理解,所述示意图仅仅是电子设备1的示例,并不构成对电子设备1的限定,电子设备1可以是总线型结构,也可以是星形结构,电子设备1还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置,例如电子设备1还可以包括输入输出设备、网络接入设备等。
需要说明的是,电子设备1仅为举例,其他现有的或今后可能出现的电子产品如可适应于本申请,也应包含在本申请的保护范围以内,并以引用方式包含于此。
其中,存储器12至少包括一种类型的可读存储介质,所述可读存储介质可以是非易失性的,也可以是易失性的。所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器12在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。存储器12在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。存储器12不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于数据分析的数据血缘关系图构建程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器13在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器13是电子设备1的控制核心(Control Unit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器12内的程序或者模块(例如执行基于数据分析的数据血缘关系图构建程序等),以及调用存储在所述存储器12内的数据,以执行电子设备1的各种功能和处理数据。
所述处理器13执行所述电子设备1的操作系统以及安装的各类应用程序。所述处理器13执行所述应用程序以实现上述各个基于数据分析的数据血缘关系图构建方法实施例中的步骤,例如图1所示的步骤。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器12中,并由所述处理器13执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在电子设备1中的执行过程。例如,所述计算机程序可以被分割成采集单元110、划分单元111、分析单元112、生成单元113、构建单元114。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、计算机设备,或者网络设备等)或处理器(processor)执行本申请各个实施例所述的基于数据分析的数据血缘关系图构建方法的部分。
电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指示相关的硬件设备来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存储器及其他存储器等。
进一步地,计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,在图3中仅用一根箭头表示,但并不表示仅有一根总线或一种类型的总线。所述总线被设置为实现所述存储器12以及至少一个处理器13等之间的连接通信。
本申请实施例还提供一种计算机可读存储介质(图未示),计算机可读存储介质中存储有计算机可读指令,计算机可读指令被电子设备中的处理器执行以实现上述任一实施例所述的基于数据分析的数据血缘关系图构建方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。说明书陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (10)
1.一种基于数据分析的数据血缘关系图构建方法,其特征在于,所述方法包括:
采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集;
对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集;
对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树;
基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径;
基于所述字段血缘路径构建数据血缘关系图。
2.如权利要求1所述的基于数据分析的数据血缘关系图构建方法,其特征在于,所述采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集包括:
依据预设周期启动线程连接预设的关系型数据库;
基于所述线程分别采集所述关系型数据库中的元数据和SQL语句得到元数据集和SQL语句数据集。
3.如权利要求1所述的基于数据分析的数据血缘关系图构建方法,其特征在于,所述对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集包括:
依据正则表达式识别所述SQL语句数据集中的注释行,并对所述注释行进行替换得到第一语句关系数据集;
依据正则表达式和预设关键词对所述第一语句关系数据集进行筛选获得第二语句关系数据集;
基于所述预设关键词将所述第二语句关系数据集划分为查询语句数据集和非查询语句数据集。
4.如权利要求1所述的基于数据分析的数据血缘关系图构建方法,其特征在于,所述对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树包括:
对所述查询语句数据集中的SQL语句进行词法分析获得所述SQL语句中每一个词的位置;
依据语法分析获取所述SQL语句中每一个词的含义和所述SQL语句的结构体;
基于所述SQL语句中每一个词的位置、含义和结构体构建抽象语法树,所述抽象语法树包括根节点和叶节点。
5.如权利要求4所述的基于数据分析的数据血缘关系图构建方法,其特征在于,所述基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径包括:
基于所述元数据集获取所述叶节点代表的SQL语句中被选中的字段及字段所属表的信息获得清晰叶节点;
遍历所述抽象语法树中的清晰叶节点和根节点以获取血缘关系基础字段;
基于所述非查询语句数据集对所述血缘关系基础字段进行匹配获得血缘关系定位字段;
基于所述血缘关系定位字段构建多条字段血缘路径。
6.如权利要求5所述的基于数据分析的数据血缘关系图构建方法,其特征在于,所述遍历所述抽象语法树中的清晰叶节点和根节点以获取血缘关系基础字段包括:
将同时存在于目标叶节点和所述目标叶节点的父节点中的字段进行保留获得所述目标叶节点对应的血缘关系基础字段,所述目标叶节点为所述清晰叶节点中的任意一个;
按照从清晰叶节点到根节点的方向依次遍历所述抽象语法树中的清晰叶节点和根节点获得每一个清晰叶节点所对应的血缘关系基础字段。
7.如权利要求1所述的基于数据分析的数据血缘关系图构建方法,其特征在于,所述数据血缘关系图包括字段级血缘关系图和表级血缘关系图,所述基于所述字段血缘路径构建数据血缘关系图包括:
以所述字段血缘路径中的各字段为顶点,各字段对应的SQL语句为有向边构建字段级血缘关系图;
以所述字段血缘路径中的各字段所在的表为顶点,各字段对应的SQL语句为有向边构建表级血缘关系图。
8.一种基于数据分析的数据血缘关系图构建装置,其特征在于,所述装置包括:
采集单元,用于采集关系型数据库中的元数据和SQL语句获得元数据集和SQL语句数据集;
划分单元,用于对所述SQL语句数据集进行划分获得查询语句数据集和非查询语句数据集;
分析单元,用于对所述查询语句数据集进行词法分析和语法分析以构建抽象语法树;
生成单元,用于基于所述元数据集、非查询语句数据集和抽象语法树生成字段血缘路径;
构建单元,用于基于所述字段血缘路径构建数据血缘关系图。
9.一种电子设备,其特征在于,所述电子设备包括:
存储器,存储有计算机可读指令;及
处理器,执行所述存储器中存储的计算机可读指令以实现如权利要求1至7中任意一项所述的基于数据分析的数据血缘关系图构建方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的基于数据分析的数据血缘关系图构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310158529.5A CN116186174A (zh) | 2023-02-16 | 2023-02-16 | 基于数据分析的数据血缘关系图构建方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310158529.5A CN116186174A (zh) | 2023-02-16 | 2023-02-16 | 基于数据分析的数据血缘关系图构建方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116186174A true CN116186174A (zh) | 2023-05-30 |
Family
ID=86445976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310158529.5A Pending CN116186174A (zh) | 2023-02-16 | 2023-02-16 | 基于数据分析的数据血缘关系图构建方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116186174A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370620B (zh) * | 2023-12-08 | 2024-04-05 | 广东航宇卫星科技有限公司 | 一种数据血缘的构建方法、装置、终端设备及存储介质 |
CN117891979A (zh) * | 2024-03-15 | 2024-04-16 | 中信证券股份有限公司 | 血缘图谱构建方法、装置、电子设备和可读介质 |
-
2023
- 2023-02-16 CN CN202310158529.5A patent/CN116186174A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370620B (zh) * | 2023-12-08 | 2024-04-05 | 广东航宇卫星科技有限公司 | 一种数据血缘的构建方法、装置、终端设备及存储介质 |
CN117891979A (zh) * | 2024-03-15 | 2024-04-16 | 中信证券股份有限公司 | 血缘图谱构建方法、装置、电子设备和可读介质 |
CN117891979B (zh) * | 2024-03-15 | 2024-05-17 | 中信证券股份有限公司 | 血缘图谱构建方法、装置、电子设备和可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
Khayyat et al. | Bigdansing: A system for big data cleansing | |
KR102134494B1 (ko) | 위치 정보를 가진 데이터 프로파일링 | |
US10268688B2 (en) | Corpus-scoped annotation and analysis | |
JP2022028864A (ja) | パターン分解を通してデータ変換を推論するためのシステムおよび方法 | |
Dang et al. | XIAO: Tuning code clones at hands of engineers in practice | |
US10180984B2 (en) | Pivot facets for text mining and search | |
US8219581B2 (en) | Method and system for analyzing ordered data using pattern matching in a relational database | |
CN116186174A (zh) | 基于数据分析的数据血缘关系图构建方法及相关设备 | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN111949541A (zh) | 多源数据库语句检查方法及装置 | |
CN111259004B (zh) | 一种存储引擎中数据索引的方法以及相关装置 | |
Jiang et al. | Holistic primary key and foreign key detection | |
CN111914066B (zh) | 多源数据库全局搜索方法及系统 | |
CN112000773A (zh) | 基于搜索引擎技术的数据关联关系挖掘方法及应用 | |
Ortona et al. | Wadar: Joint wrapper and data repair | |
CN111078729A (zh) | 医疗数据溯源方法、装置、系统、存储介质以及电子设备 | |
CN113297057A (zh) | 内存分析方法、装置及系统 | |
CN115203435A (zh) | 基于知识图谱的实体关系生成方法及数据查询方法 | |
CN113760891A (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
CN112328599A (zh) | 基于元数据的字段血缘分析方法及装置 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN117076742A (zh) | 数据血缘追踪方法、装置及电子设备 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions |
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 |