CN113326401B - 字段血缘生成方法及系统 - Google Patents
字段血缘生成方法及系统 Download PDFInfo
- Publication number
- CN113326401B CN113326401B CN202110664668.6A CN202110664668A CN113326401B CN 113326401 B CN113326401 B CN 113326401B CN 202110664668 A CN202110664668 A CN 202110664668A CN 113326401 B CN113326401 B CN 113326401B
- Authority
- CN
- China
- Prior art keywords
- information
- upstream
- downstream
- field
- execution
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种字段血缘生成方法,该方法包括:对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句;对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系;根据所述目标信息和所述上下游映射关系建立上下游血缘信息。本申请还公开了一种字段血缘生成系统、电子装置和计算机可读存储介质。由此,能够自动生成字段上下游血缘信息,减少人力成本、时间成本,提高准确性。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种字段血缘生成方法、系统、电子装置及计算机可读存储介质。
背景技术
数据仓库(Data Warehouse,DW)是信息的中央存储库。通常,数据定期从事务系统、关系数据库和其他来源通过提取、转换、加载的数据清洗工序引入到数据仓库中,并按照主题域、分层结构将数据归档有序存储在数据模型中。业务分析师、数据工程师、数据科学家和决策者通过商业智能工具、结构化查询语言(Structured Query Language,SQL)客户端和其他分析应用程序访问数据仓库中的数据模型进行查询、分析等工作。
在数据仓库系统中,血缘关系起着至关重要的作用,血缘的意思是某些数据的属性通过普遍性的过程传递给其他的数据。通常的使用过程中,是指将父亲的属性传递给儿子,父亲又称之为源,儿子又称之为目标。调度系统需要依赖血缘关系来监控和管理任务的运行和状态。当数据出现问题时,需要进行全链路的数据追踪,评估数据影响、问题产生根因。
目前,针对字段血缘关系,业界普遍的解决方案是由责任人手动填写上下游血缘关系,人工查看任务代码,检查代码语法和语义。其中,需要将代码拆分为多个逻辑层,从最里层开始,人工逐一收集代码的字段血缘关系,一层一层向上,最终计算得出所有字段血缘关系。
但是,人工维护字段血缘关系的方式工作量繁重,需要较高的人力成本和时间成本,并且准确率较低,可能导致战略决策失误。互联网业务具有快速迭代的特点,业务变更频繁,每一次变更都会带来大量的字段血缘关系的变更,从而带来大量的维护成本。因此,随着业务规模的扩大,基于成本的考量,可能会导致企业放弃对字段血缘关系的维护。
需要说明的是,上述内容并不用于限制申请保护范围。
发明内容
本申请的主要目的在于提出一种字段血缘生成方法、系统、电子装置及计算机可读存储介质,旨在解决人工维护字段血缘关系的高成本、低效率、低准确性等问题。
为实现上述目的,本申请实施例提供了一种字段血缘生成方法,所述方法包括:
对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句;
对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系;及
根据所述目标信息和所述上下游映射关系建立上下游血缘信息。
可选地,所述对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句包括:
收集所述计算任务的执行计划和执行语句;
在所述计算任务执行完后,将收集的所述计算任务的执行计划和执行语句发送到消息队列中;
对所述消息队列中的消息进行实时消费处理,获取所述指定类型的执行语句。
可选地,所述方法在建立上下游血缘信息后还包括:
将所述上下游血缘信息保存到图数据库中,以有向无环图进行展示。
可选地,所述对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句包括:
收集所述计算任务的执行计划和执行语句;
在所述计算任务执行前,同步调用收集到的所述计算任务的执行计划和执行语句,获取所述指定类型的执行语句。
可选地,所述方法在建立上下游血缘信息后还包括:
根据所述上下游血缘信息和业务上的预检查规则对所述计算任务中的所述执行语句进行预检查。
可选地,所述对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系,包括:
通过对CREATE语句和INSERT语句的分析处理得到血缘的目标信息,包括数据库名、表名、字段名;
通过对SELECT语句的分析处理得到血缘的上下游映射关系。
可选地,所述根据所述目标信息和所述上下游映射关系建立上下游血缘信息包括:
结合所述目标信息对所述上下游映射关系中所有字段的信息进行补齐,得到目的地字段和最上游字段之间的所有血缘关系及信息。
此外,为实现上述目的,本申请实施例还提供一种字段血缘生成系统,所述系统包括:
调用模块,用于对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句;
分析模块,用于对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系;
建立模块,用根据所述目标信息和所述上下游映射关系建立上下游血缘信息。
为实现上述目的,本申请实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的字段血缘生成程序,所述字段血缘生成程序被所述处理器执行时实现如上述的字段血缘生成方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有字段血缘生成程序,所述字段血缘生成程序被处理器执行时实现如上述的字段血缘生成方法。
本申请实施例提出的字段血缘生成方法、系统、电子装置及计算机可读存储介质,能够通过对计算任务的数据进行收集调用和对指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系,从而自动建立上下游血缘信息,以技术的方式代替人工维护,减少企业的人力成本、时间成本、因准确性问题导致的战略决策失误成本。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种字段血缘生成方法的流程示意图;
图3为图2中步骤S200的一种细化流程示意图;
图4为图2中步骤S200的另一种细化流程示意图;
图5为图2中步骤S202的细化流程示意图;
图6为本申请在第一实施例基础上提出的一种可选实施例的流程示意图;
图7为本申请在第一实施例基础上提出的另一种可选实施例的流程示意图;
图8为本申请第二实施例提出的一种电子装置的硬件架构示意图;
图9为本申请第三实施例提出的一种字段血缘生成系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于但不仅限于电子装置2、数据仓库系统4、调度系统6的应用环境中。
其中,所述电子装置2可以为服务器等具有数据处理能力的电子化设备。所述服务器可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
所述数据仓库系统2中包括多个数据表,所述数据表是数据库中用来存储数据的对象,是有结构的数据的集合。与电子表格相似,数据在所述数据表中按行和列的格式组织排列。所述数据表中的每一列都设计为存储某种类型的信息(例如日期、名称、美元金额或数字)。所述列也称作字段,包含某一专题的信息,例如“通讯录”数据库中,“姓名”、“联系电话”这些都是数据表中所有行共有的属性,所以将这些列称为“姓名”字段、“联系电话”字段。所述多个数据表之间存在各种血缘关系。所述血缘关系的意思是某些数据的属性通过普遍性的过程,传递给其他的数据。通常的使用过程中,是指将父亲的属性传递给儿子,父亲又称为源,儿子又称为目标。
所述调度系统4要依赖所述血缘关系来监控和管理任务的运行和状态。当数据出现问题时,需要进行全链路的数据追踪,评估数据影响、问题产生根因。所述电子装置2用于通过对所述调度系统6的Spart(专为大规模数据处理而设计的快速通用的计算引擎)任务中预设基础信息的收集和对指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系,从而自动建立上下游血缘信息。
所述数据仓库系统4和所述调度系统6可以存在于所述电子装置2中,也可以独立运行在其他设备上,通过有线或无线网络进行数据通信。
实施例一
如图2所示,为本申请第一实施例提出的一种字段血缘生成方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S200,对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句。
在本实施例中,所述计算任务为Spark计算引擎的计算任务。所述处理后的数据主要为所述计算任务的预设基础信息,包括Spark计算引擎的执行计划、提交的SQL信息和其他的附加信息。Spark SQL为一种类SQL92的ANSI/ISO标准,并在此基础上扩展了特有的语法功能,有其独特性和适用范围。本实施例可兼容所有的Spark SQL语法,覆盖所有的使用场景,且和Spark弱耦合,Spark版本升级后,本实施例可以支持延后升级,不影响Spark任务的执行流程。
另外,该步骤支持同步或异步调用。当同步调用时可以做任务执行前的预检查等校验,异步调用可以进行血缘信息的分析收集和展示。
具体而言,进一步参阅图3,为上述步骤S200的一种细化流程示意图(异步调用)。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S200具体包括:
S2000,收集所述计算任务的执行计划和执行语句。
在将所述计算任务的SQL提交至Spark计算引擎运行后,Spark计算引擎需要解析SQL并生成执行计划,此时可以收集所述计算任务的执行计划和执行语句。
S2002,在所述计算任务执行完后,将收集的所述计算任务的执行计划和执行语句发送到消息队列中。
S2004,对所述消息队列中的消息进行实时消费处理,获取所述指定类型的执行语句。
上述异步调用的过程不对Spark的执行流程进行干扰。
进一步参阅图4,为上述步骤S200的另一种细化流程示意图(同步调用)。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S200具体包括:
S2006,收集所述计算任务的执行计划和执行语句。
S2008,在所述计算任务执行前,同步调用收集到的所述计算任务的执行计划和执行语句,获取所述指定类型的执行语句。
上述同步调用的过程在所述计算任务正式执行之前进行,以备对SQL进行预查验。
SQL语言包括DQL(Data Query Language,数据查询语言)、DML(DataManipulation Language,数据操作语言)、DDL(Data Definition Language,数据定义语言)、TCL(Transaction Control Language,事务控制语言)、DCL(Data Control Language,数据控制语言)、CCL(Cursor Control Language,指针控制语言)等几大部分,其中涉及到血缘信息的为DQL、DML、DDL三部分。本实施例主要针对这三部分进行处理。DQL常作为血缘收集的来源信息部分,DML、DDL部分的血缘信息常基于此类SQL语句进行数据的流动。其中,血缘信息收集主要涉及DML部分的INSERT语句,以及DDL部分的CREATE语句,包括CREATETABLE、CREATE VIEW两种SQL场景。
也就是说,在本实施例中,所述指定类型的执行语句主要为INSERT、CREATETABLE、CREATE VIEW这几类SQL语句。
回到图2,S202,对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系。
本实施例主要对INSERT、CREATE TABLE、CREATE VIEW这几类指定类型的SQL语句进行分析处理。并且,这几类SQL语句都会包括SELECT子SQL语句。这几类SQL语句覆盖所有的数据仓库业务处理过程,通过对这几类SQL语句的处理,可以收集到所有的上下游血缘信息。
具体而言,进一步参阅图5,为上述步骤S202的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤S202具体包括:
S2020,通过对CREATE语句和INSERT语句的分析处理得到血缘的目标信息。
在本实施例中,所述目标信息包含三部分语义,第一部分是数据库名,第二部分是表名,第三部分是字段名。下面以CREATE TABLE语句和INSERT语句为例对所述分析处理过程进行说明:
(一)CREATE TABLE语句
CREATE TABLE语句的目标字段需要从CREATE TABLE节点开始进行收集。通过对CREATE TABLE语句的分析处理会得到所述血缘关系中儿子的信息。
(1)从identifier节点进行分析处理,获取到数据库名。
identifier节点用于标识血缘的目标信息,标识血缘是指向到哪些数据库、哪些表,即父亲和儿子关系中的儿子信息,它属于儿子信息中的一部分。
(2)从identifier节点进行分析处理,获取到表名。
(3)从output column节点进行分析处理,得到目标字段名列表。
output column节点用于标识血缘的目标信息,标识血缘是指向到哪些字段,即父亲和儿子关系中的儿子信息,它也属于儿子信息中的一部分。
通过以上三个步骤的处理,分别获取到数据库名、表名、字段名,即获取到了血缘的目标信息(数据库名、表名、字段名属于儿子的信息)。
(二)INSERT语句
INSERT语句的目标字段需要从INSERT节点开始进行收集。通过对INSERT语句的分析处理会得到所述血缘关系中儿子的信息。
(1)从identifier节点进行分析处理,获取到数据库名。
(2)从identifier节点进行分析处理,获取到表名。
(3)从field节点进行分析处理,得到目标字段名列表。
field节点用于标识血缘的目标信息,标识血缘是指向到哪些字段,即父亲和儿子关系中的儿子信息,它属于儿子信息中的一部分。
通过以上三个步骤的处理,分别获取到数据库名、表名、字段名,即获取到了血缘的目标信息(数据库名、表名、字段名属于儿子的信息)。
S2022,通过对SELECT语句的分析处理得到血缘的上下游映射关系。
通过上述对CREATE语句和INSERT语句两部分的分析处理,可以获取到血缘信息的目标数据(即儿子的信息),而这两个部分均包含SELECT类SQL语句。SELECT类SQL语句包含血缘信息的上游信息,解析处理血缘信息的上游信息后,血缘信息的上游信息和下游信息进行映射,即可得到血缘信息的上下游关系。
在一个完整的SQL语句中,可能会存在多个SELECT类SQL语句,每一个SELECT类SQL语句都包含了完整的血缘的上游信息(父亲信息),以及血缘的上游信息和下游信息(儿子信息)之间的映射关系。血缘的上下游映射关系中,上游信息存储在alias节点中,下游信息存储在attribute reference节点中。
对上述两类节点分别进行分析处理,可以获取到一个alias节点对应多个attribute reference节点的映射关系。包括:
(1)从alias节点信息中提取出父亲信息。
(2)从attribute reference节点信息中提取出儿子信息.
(3)根据前面步骤提取出的信息建立从父亲信息到儿子信息的映射关系。
建立的映射关系会有多个世代,每一个映射关系都是父子关系,例如有:从祖爷爷信息到爷爷信息;从爷爷信息到父亲信息;从父亲信息到儿子信息;从儿子信息到孙子信息。
最终,基于这些映射关系,可以得到辈分最高到辈分最低的关系,即从祖爷爷信息到孙子信息。从数据仓库的角度来说,即为最源头到最叶子的关系。
但是,该步骤得到的孙子的信息只有基础信息没有其他额外信息,而父亲、爷爷、祖爷爷等是包含所有信息的。
回到图2,S204,根据所述目标信息和所述上下游映射关系建立上下游血缘信息。
从上述CREATE TABLE语句和INSERT语句中获取到的目标信息(即儿子的信息),是包含儿子的所有信息。因此,本步骤需要将上一步骤得到的从祖爷爷信息到孙子信息这一映射关系中孙子信息缺失的信息从CREATE TABLE语句和INSERT语句中补齐。从CREATETABLE和INSERT中拿到所有的基础信息,补齐到从祖爷爷信息到孙子信息这一映射关系中的孙子信息中,即可得到完整的、包含祖爷爷和孙子的所有信息的血缘关系(目的地字段和最上游字段之间的所有血缘关系及信息),从而建立完整的上下游血缘信息。
另外,参阅图6所示,为本申请一种可选实施例的流程示意图。在本实施例中,通过异步调用的方式得到指定类型的执行语句(步骤S300),该方法还包括步骤:
S306,将所述上下游血缘信息保存到图数据库中,以有向无环图进行展示。
在异步调用时,当建立完整的上下游血缘信息后,将所述上下游血缘关系持久化到图数据库中,以直观、清晰的有向无环图展示。
参阅图7所示,为本申请另一种可选实施例的流程示意图。在本实施例中,通过同步调用的方式得到指定类型的执行语句(步骤S400),该方法还包括步骤:
S406,根据所述上下游血缘信息和业务上的预检查规则对所述计算任务中的执行语句进行预检查。
在同步调用时,当建立完整的上下游血缘信息后,获取业务上的预检查规则,可以根据所述上下游血缘信息和业务上的预检查规则对所述Spart任务中的执行语句(SQL语句)进行预检查。当满足校验时,放行该SQL语句;当不满足校验时,停止该SQL语句。
本实施例提出的字段血缘生成方法,可以通过对Spart任务中预设基础信息的收集调用和对指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系,从而自动建立上下游血缘信息。并且,使用本实施例的方案,准确性达到了100%,效率由几天的时间延迟提升到秒级的处理。因此,本实施例以技术的方式代替人工维护,可以减少企业的人力成本、时间成本、因准确性问题导致的战略决策失误成本。
另外,通常的字段血缘收集,最终维护的状态都是最终的字段之间的血缘关系,不会维护中间态和业务表达。而本申请实施例不仅能自动收集字段之间的最终血缘关系,替代粗放、效率低下、成本高昂的人工维护的方式,还可以收集每一层中间态的血缘关系,并可以自动表达业务语义。例如,本申请实施例可以自动收集SQL语句中的函数表达。假设所述SQL语句为“sum(column_b1)as alias_b1”,则本申请实施例在自动收集时可以对字段column_b1进行sum计算,并由此可以推算得知column_b1字段在业务上属于指标类业务。
实施例二
如图8所示,为本申请第二实施例提出一种电子装置2的硬件架构示意图。本实施例中,所述电子装置2可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图8仅示出了具有组件21-23的电子装置2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置2的内部存储单元,例如该电子装置2的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置2的外部存储设备,例如该电子装置2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置2的操作系统和各类应用软件,例如字段血缘生成系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置2的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述字段血缘生成系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置2与其他电子设备之间建立通信连接。
实施例三
如图9所示,为本申请第三实施例提出一种字段血缘生成系统60的模块示意图。所述字段血缘生成系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述字段血缘生成系统60包括:
调用模块600,用于对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句。
在本实施例中,所述计算任务为Spark计算引擎的计算任务。所述处理后的数据主要为所述计算任务的预设基础信息,包括Spark计算引擎的执行计划、提交的SQL信息和其他的附加信息。本实施例可兼容所有的Spark SQL语法,覆盖所有的使用场景,且和Spark弱耦合,Spark版本升级后,本实施例可以支持延后升级,不影响Spark任务的执行流程。
另外,该部分支持同步或异步调用。当同步调用时可以做任务执行前的预检查等校验,异步调用可以进行血缘信息的分析收集和展示。
当异步调用时,不对Spark的执行流程进行干扰。此时所述调用模块600的调用过程包括:收集所述计算任务的执行计划和执行语句;在所述计算任务执行完后,将收集的所述计算任务的执行计划和执行语句发送到消息队列中;对所述消息队列中的消息进行实时消费处理,获取所述指定类型的执行语句。
当同步调用时,所述调用模块600的调用过程包括:收集所述计算任务的执行计划和执行语句;在所述计算任务执行前,同步调用收集到的所述计算任务的执行计划和执行语句,获取所述指定类型的执行语句。
SQL语言包括DQL、DML、DDL、TCL、DCL、CCL等几大部分,其中涉及到血缘信息的为DQL、DML、DDL三部分。本实施例主要针对这三部分进行处理。DQL常作为血缘收集的来源信息部分,DML、DDL部分的血缘信息常基于此类SQL语句进行数据的流动。其中,血缘信息收集主要涉及DML部分的INSERT语句,以及DDL部分的CREATE语句,包括CREATE TABLE、CREATEVIEW两种SQL场景。
也就是说,在本实施例中,所述指定类型的执行语句主要为INSERT、CREATETABLE、CREATE VIEW这几类SQL语句。
分析模块602,用于对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系。
本实施例主要对INSERT、CREATE TABLE、CREATE VIEW这几类指定类型的SQL语句进行分析处理。并且,这几类SQL语句都会包括SELECT子SQL语句。这几类SQL语句覆盖所有的数据仓库业务处理过程,通过对这几类SQL语句的处理,可以收集到所有的上下游血缘信息。
在本实施例中,所述分析模块602的具体分析处理过程包括:
a、通过对CREATE语句和INSERT语句的分析处理得到血缘的目标信息。
在本实施例中,所述目标信息包含三部分语义,第一部分是数据库名,第二部分是表名,第三部分是字段名。下面以CREATE TABLE语句和INSERT语句为例对所述分析处理过程进行说明:
(一)CREATE TABLE语句
CREATE TABLE语句的目标字段需要从CREATE TABLE节点开始进行收集。通过对CREATE TABLE语句的分析处理会得到所述血缘关系中儿子的信息。
(1)从identifier节点进行分析处理,获取到数据库名。
identifier节点用于标识血缘的目标信息,标识血缘是指向到哪些数据库、哪些表,即父亲和儿子关系中的儿子信息,它属于儿子信息中的一部分。
(2)从identifier节点进行分析处理,获取到表名。
(3)从output column节点进行分析处理,得到目标字段名列表。
output column节点用于标识血缘的目标信息,标识血缘是指向到哪些字段,即父亲和儿子关系中的儿子信息,它也属于儿子信息中的一部分。
通过以上三个部分的处理,分别获取到数据库名、表名、字段名,即获取到了血缘的目标信息(数据库名、表名、字段名属于儿子的信息)。
(二)INSERT语句
INSERT语句的目标字段需要从INSERT节点开始进行收集。通过对INSERT语句的分析处理会得到所述血缘关系中儿子的信息。
(1)从identifier节点进行分析处理,获取到数据库名。
(2)从identifier节点进行分析处理,获取到表名。
(3)从field节点进行分析处理,得到目标字段名列表。
field节点用于标识血缘的目标信息,标识血缘是指向到哪些字段,即父亲和儿子关系中的儿子信息,它属于儿子信息中的一部分。
通过以上三个部分的处理,分别获取到数据库名、表名、字段名,即获取到了血缘的目标信息(数据库名、表名、字段名属于儿子的信息)。
b、通过对SELECT语句的分析处理得到血缘的上下游映射关系。
通过上述对CREATE语句和INSERT语句两部分的分析处理,可以获取到血缘信息的目标数据(即儿子的信息),而这两个部分均包含SELECT类SQL语句。SELECT类SQL语句包含血缘信息的上游信息,解析处理血缘信息的上游信息后,血缘信息的上游信息和下游信息进行映射,即可得到血缘信息的上下游关系。
在一个完整的SQL语句中,可能会存在多个SELECT类SQL语句,每一个SELECT类SQL语句都包含了完整的血缘的上游信息(父亲信息),以及血缘的上游信息和下游信息(儿子信息)之间的映射关系。血缘的上下游映射关系中,上游信息存储在alias节点中,下游信息存储在attribute reference节点中。
对上述两类节点分别进行分析处理,可以获取到一个alias节点对应多个attribute reference节点的映射关系。包括:
(1)从alias节点信息中提取出父亲信息。
(2)从attribute reference节点信息中提取出儿子信息.
(3)根据前面提取出的信息建立从父亲信息到儿子信息的映射关系。
建立的映射关系会有多个世代,每一个映射关系都是父子关系,例如有:从祖爷爷信息到爷爷信息;从爷爷信息到父亲信息;从父亲信息到儿子信息;从儿子信息到孙子信息。
最终,基于这些映射关系,可以得到辈分最高到辈分最低的关系,即从祖爷爷信息到孙子信息。从数据仓库的角度来说,即为最源头到最叶子的关系。
但是,该部分得到的孙子的信息只有基础信息没有其他额外信息,而父亲、爷爷、祖爷爷等是包含所有信息的。
建立模块604,用于根据所述目标信息和所述上下游映射关系建立上下游血缘信息。
从上述CREATE TABLE语句和INSERT语句中获取到的目标信息(即儿子的信息),是包含儿子的所有信息。因此,本部分需要将上一部分得到的从祖爷爷信息到孙子信息这一映射关系中孙子信息缺失的信息从CREATE TABLE语句和INSERT语句中补齐。从CREATETABLE和INSERT中拿到所有的基础信息,补齐到从祖爷爷信息到孙子信息这一映射关系中的孙子信息中,即可得到完整的、包含祖爷爷和孙子的所有信息的血缘关系(目的地字段和最上游字段之间的所有血缘关系及信息),从而建立完整的上下游血缘信息。
本实施例提出的字段血缘生成系统,可以通过对Spart任务中预设基础信息的收集调用和对指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系,从而自动建立上下游血缘信息。并且,使用本实施例的方案,准确性达到了100%,效率由几天的时间延迟提升到秒级的处理。因此,本实施例以技术的方式代替人工维护,可以减少企业的人力成本、时间成本、因准确性问题导致的战略决策失误成本。
实施例四
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有字段血缘生成程序,所述字段血缘生成程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的字段血缘生成方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。
Claims (9)
1.一种字段血缘生成方法,其特征在于,所述方法包括:
对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句;
对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系;
根据所述目标信息和所述上下游映射关系建立上下游血缘信息;
在所述调用为同步调用的情形下,根据所述上下游血缘信息和业务上的预检查规则对所述计算任务中的所述执行语句进行预检查。
2.根据权利要求1所述的字段血缘生成方法,其特征在于,在所述调用为异步调用的情形下,所述对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句包括:
收集所述计算任务的执行计划和执行语句;
在所述计算任务执行完后,将收集的所述计算任务的执行计划和执行语句发送到消息队列中;
对所述消息队列中的消息进行实时消费处理,获取所述指定类型的执行语句。
3.根据权利要求2所述的字段血缘生成方法,其特征在于,所述方法在建立上下游血缘信息后还包括:
将所述上下游血缘信息保存到图数据库中,以有向无环图进行展示。
4.根据权利要求1所述的字段血缘生成方法,其特征在于,在所述调用为同步调用的情形下,所述对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句包括:
收集所述计算任务的执行计划和执行语句;
在所述计算任务执行前,同步调用收集到的所述计算任务的执行计划和执行语句,获取所述指定类型的执行语句。
5.根据权利要求1所述的字段血缘生成方法,其特征在于,所述对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系,包括:
通过对CREATE语句和INSERT语句的分析处理得到血缘的目标信息,包括数据库名、表名、字段名;
通过对SELECT语句的分析处理得到血缘的上下游映射关系。
6.根据权利要求5所述的字段血缘生成方法,其特征在于,所述根据所述目标信息和所述上下游映射关系建立上下游血缘信息包括:
结合所述目标信息对所述上下游映射关系中所有字段的信息进行补齐,得到目的地字段和最上游字段之间的所有血缘关系及信息。
7.一种字段血缘生成系统,其特征在于,所述系统包括:
调用模块,用于对提交的计算任务进行处理,调用处理后的数据得到指定类型的执行语句;
分析模块,用于对所述指定类型的执行语句进行分析处理,得到血缘的目标信息和上下游映射关系;
建立模块,用于根据所述目标信息和所述上下游映射关系建立上下游血缘信息;在所述调用为同步调用的情形下,根据所述上下游血缘信息和业务上的预检查规则对所述计算任务中的所述执行语句进行预检查。
8.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的字段血缘生成程序,所述字段血缘生成程序被所述处理器执行时实现如权利要求1至6中任一项所述的字段血缘生成方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有字段血缘生成程序,所述字段血缘生成程序被处理器执行时实现如权利要求1至6中任一项所述的字段血缘生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110664668.6A CN113326401B (zh) | 2021-06-16 | 2021-06-16 | 字段血缘生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110664668.6A CN113326401B (zh) | 2021-06-16 | 2021-06-16 | 字段血缘生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113326401A CN113326401A (zh) | 2021-08-31 |
CN113326401B true CN113326401B (zh) | 2023-01-20 |
Family
ID=77420944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110664668.6A Active CN113326401B (zh) | 2021-06-16 | 2021-06-16 | 字段血缘生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113326401B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064752A (zh) * | 2021-11-09 | 2022-02-18 | 珠海市新德汇信息技术有限公司 | 基于记录级血缘关系的数据影响分析方法、存储介质及设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653565A (zh) * | 2014-12-03 | 2016-06-08 | 北京神州泰岳软件股份有限公司 | 一种数据核查方法和数据核查装置 |
CN107644073A (zh) * | 2017-09-18 | 2018-01-30 | 广东中标数据科技股份有限公司 | 一种基于深度优先遍历的字段血缘分析方法、系统及装置 |
CN109446279A (zh) * | 2018-10-15 | 2019-03-08 | 顺丰科技有限公司 | 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质 |
CN109582660A (zh) * | 2018-12-06 | 2019-04-05 | 深圳前海微众银行股份有限公司 | 数据血缘分析方法、装置、设备、系统及可读存储介质 |
CN110232056A (zh) * | 2019-05-21 | 2019-09-13 | 苏宁云计算有限公司 | 一种结构化查询语言的血缘解析方法及其工具 |
CN111177178A (zh) * | 2019-12-03 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及相关设备 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN111813796A (zh) * | 2020-06-15 | 2020-10-23 | 北京邮电大学 | 基于Hive数据仓库的数据列级血缘处理系统及方法 |
CN112084270A (zh) * | 2020-09-17 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种数据血缘处理方法、装置、存储介质及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086751B2 (en) * | 2016-03-16 | 2021-08-10 | Asg Technologies Group, Inc. | Intelligent metadata management and data lineage tracing |
CN111078729B (zh) * | 2019-12-19 | 2023-04-28 | 医渡云(北京)技术有限公司 | 医疗数据溯源方法、装置、系统、存储介质以及电子设备 |
CN112434046B (zh) * | 2020-12-16 | 2021-09-17 | 杭州天均科技有限公司 | 一种数据血缘分析方法、装置、设备及存储介质 |
-
2021
- 2021-06-16 CN CN202110664668.6A patent/CN113326401B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653565A (zh) * | 2014-12-03 | 2016-06-08 | 北京神州泰岳软件股份有限公司 | 一种数据核查方法和数据核查装置 |
CN107644073A (zh) * | 2017-09-18 | 2018-01-30 | 广东中标数据科技股份有限公司 | 一种基于深度优先遍历的字段血缘分析方法、系统及装置 |
CN109446279A (zh) * | 2018-10-15 | 2019-03-08 | 顺丰科技有限公司 | 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质 |
CN109582660A (zh) * | 2018-12-06 | 2019-04-05 | 深圳前海微众银行股份有限公司 | 数据血缘分析方法、装置、设备、系统及可读存储介质 |
CN110232056A (zh) * | 2019-05-21 | 2019-09-13 | 苏宁云计算有限公司 | 一种结构化查询语言的血缘解析方法及其工具 |
CN111177178A (zh) * | 2019-12-03 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及相关设备 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN111813796A (zh) * | 2020-06-15 | 2020-10-23 | 北京邮电大学 | 基于Hive数据仓库的数据列级血缘处理系统及方法 |
CN112084270A (zh) * | 2020-09-17 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 一种数据血缘处理方法、装置、存储介质及设备 |
Non-Patent Citations (1)
Title |
---|
饿了么元数据管理实践之路;王金海;《微信公众平台》;20191207;正文第4-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113326401A (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN111949541A (zh) | 多源数据库语句检查方法及装置 | |
US20110087708A1 (en) | Business object based operational reporting and analysis | |
CN109299074B (zh) | 一种基于模板化数据库视图的数据校验方法及系统 | |
CN112434015B (zh) | 数据存储的方法、装置、电子设备及介质 | |
CN112084270A (zh) | 一种数据血缘处理方法、装置、存储介质及设备 | |
CN113268500B (zh) | 业务处理方法、装置及电子设备 | |
Vajk et al. | Automatic NoSQL schema development: A case study | |
CN112000349A (zh) | 一种基于SaaS的数据升级方法、设备及介质 | |
CN115203435A (zh) | 基于知识图谱的实体关系生成方法及数据查询方法 | |
CN113326401B (zh) | 字段血缘生成方法及系统 | |
CN114238463A (zh) | 一种用于分布式指标计算的计算引擎控制方法和装置 | |
CN113886419A (zh) | Sql语句处理方法、装置、计算机设备及存储介质 | |
CN113703777A (zh) | 基于数据库表的代码生成方法、装置、存储介质和设备 | |
CN116701355A (zh) | 数据视图处理方法、装置、计算机设备及可读存储介质 | |
EP3693869A1 (en) | Method and apparatus for managing knowledge base, device and medium | |
CN116227454A (zh) | 一种通用的自动化报告生成方法及系统 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
Molhanec | Deriving relational normalisation from conceptual normalisation | |
CN111813880B (zh) | 一种国土空间规划项目管理方法、系统及存储介质 | |
CN112035566A (zh) | 数据调用方法、装置、电子设备和存储介质 | |
CN111913973A (zh) | 一种数据同步方法、装置及存储介质 | |
CN111143322A (zh) | 一种数据标准治理系统及方法 | |
CN114996319B (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 |