CN108829884B - 数据映射方法及装置 - Google Patents

数据映射方法及装置 Download PDF

Info

Publication number
CN108829884B
CN108829884B CN201810680612.8A CN201810680612A CN108829884B CN 108829884 B CN108829884 B CN 108829884B CN 201810680612 A CN201810680612 A CN 201810680612A CN 108829884 B CN108829884 B CN 108829884B
Authority
CN
China
Prior art keywords
sql
data
segment
data mapping
generating
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
CN201810680612.8A
Other languages
English (en)
Other versions
CN108829884A (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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN201810680612.8A priority Critical patent/CN108829884B/zh
Publication of CN108829884A publication Critical patent/CN108829884A/zh
Application granted granted Critical
Publication of CN108829884B publication Critical patent/CN108829884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据处理技术领域,提供一种数据映射方法及装置。该数据映射方法包括:解析第一结构化数据中的逻辑段,获得用于组成SQL语句的SQL片段,其中,第一结构化数据为用于表示数据映射中的数据加工步骤的结构化数据,逻辑段为用于表示SQL片段的结构化数据;基于SQL片段拼接生成与数据加工步骤对应的SQL语句。可见,由于事先将数据映射逻辑表示为第一结构化数据,因此能够很容易地通过解析结构化数据获得SQL片段,进而还原出与数据加工步骤对应的SQL语句。该方法能够完全自动地基于数据映射逻辑生成相应的代码,从而可以显著提高数据映射的执行效率,同时确保生成的代码与数据映射逻辑的一致性。

Description

数据映射方法及装置
技术领域
本发明涉数据处理技术领域,具体而言,涉及一种数据映射方法及装置。
背景技术
数据映射是指将源数据通过某种数据加工步骤映射为目标数据的过程。通常而言,源数据以及目标数据都是数据表的字段,而数据加工步骤则使用结构化查询语言(Structured Query Language,SQL)语句来表示。用于描述数据映射的数据称为数据映射逻辑,基于数据映射逻辑可以生成用于实现数据映射的代码。然而,在现有技术中,数据映射逻辑通常采用文字描述的方式,从而将数据映射逻辑转化为对应的代码过程往往需要开发人员通过手工编写,或在部分自动生成的基础上结合大量的手工修改才能完成,效率低下,并且可能导致代码与数据映射逻辑不一致的情况。
发明内容
有鉴于此,本发明实施例提供一种数据映射方法及装置,以解决上述技术问题。
为实现上述目的,本发明提供如下技术方案:
第一方面,本发明实施例提供一种数据映射方法,包括:
解析第一结构化数据中的逻辑段,获得用于组成SQL语句的SQL片段,其中,第一结构化数据为用于表示数据映射中的数据加工步骤的结构化数据,逻辑段为用于表示SQL片段的结构化数据;
基于SQL片段拼接生成与数据加工步骤对应的SQL语句。
在该数据映射方法中,由于事先将数据映射逻辑表示为第一结构化数据,因此能够很容易地通过解析结构化数据获得SQL片段,进而还原出与数据加工步骤对应的SQL语句,这一代码生成过程能够完全自动执行,从而可以显著提高数据映射的执行效率,同时由于避免了代码生成过程中人为因素的干扰,能够确保生成的SQL语句与数据映射逻辑的一致性。
结合第一方面,在第一方面的第一种可能的实施方式中,解析第一结构化数据中的逻辑段,获得用于组成结构化查询语言SQL语句的SQL片段,包括:
解析逻辑段的段名称,获得逻辑段对应的SQL语句中的操作关键词;
解析逻辑段中的参数字段,获得与操作关键词关联的操作参数;
基于操作关键词以及操作参数拼合生成SQL片段。
根据SQL的语法定义,每个SQL语句均由若干个操作关键词,例如Select、From、Join、Where等以及相应的操作参数,例如表名、运算符、条件关系等构成。在第一结构化数据中将操作关键词表示为逻辑段的段名称、将操作参数表示为逻辑段中的参数字段,相当于将SQL语句分解为了若干基本元素的集合。这样结构化的表达方式便于数据映射逻辑的配置,也大大简化了SQL语句的生成过程,同时也便于后续对数据映射逻辑进行分析和处理。
结合第一方面的第一种可能的实施,在第一方面的第二种可能的实施方式中,基于操作关键词以及操作参数拼合生成SQL片段之前,方法还包括:
解析逻辑段中的附加文本字段,获得附加文本;
基于操作关键词以及操作参数拼合生成SQL片段,包括:
基于操作关键词、操作参数以及附加文本拼合生成SQL片段。
附件文本的内容直接以原封不动的方式拼合到SQL片段中,主要用于某些特殊需求的场景,使得生成SQL语句的方式更加灵活,便于满足不同的数据映射需求。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,解析第一结构化数据中的逻辑段之前,方法还包括:
解析第二结构化数据中的加工步骤段,并基于获得的数据加工步骤与第一结构化数据的对应关系获得第一结构化数据,其中,第二结构化数据为用于表示数据映射的结构化数据。
第二结构化数据用于从整体上结构化地表示数据映射,而数据映射中的每个数据加工步骤则用与该数据加工步骤对应的第一结构化数据表示,利用第二结构化数据中的加工步骤段,能够快速定位到与每个数据加工步骤对应的第一结构化数据,从而快速完成对数据映射逻辑的解析。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第四种可能的实施方式中,基于SQL片段拼接生成与数据加工步骤对应的SQL语句,包括:
获得数据库平台信息;
基于SQL片段以及数据库平台信息生成与数据加工步骤对应的SQL语句,SQL语句能够在与数据库平台信息对应的数据库平台上运行。
运行于不同的数据库平台上的SQL语句在细节上会有所不同,因此可以基于数据库平台信息生成与具体数据库平台适配的SQL语句。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第五种可能的实施方式中,基于SQL片段拼接生成与数据加工步骤对应的SQL语句之后,方法还包括:
生成嵌入有SQL语句的数据映射脚本,数据映射脚本用于在被执行时,实现数据映射。
结合第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,生成嵌入有SQL语句的数据映射脚本,包括:
获得包括数据映射脚本的公用部分的模板文件;
将SQL语句嵌入模板文件以生成数据映射脚本。
数据映射脚本存在大量公用部分,例如开始时的启动事务、结束时的提交事务等,可以将这些公用部分配置为模板文件,将SQL语句嵌入到模板文件中就可以快速生成数据映射脚本,提高处理效率。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第七种可能的实施方式中,第一结构化数据为预先配置好的Excel表格。
Excel表格作为一种表格,自身已经具有结构化的特征,因此作为实现数据映射逻辑的载体十分方便,可以简化结构化数据的定义过程。此外,Excel表格在数据统计等领域已经使用多年,其技术成熟度高,稳定可靠,展现效果良好,也有很多可以对其进行解析的工具,因此非常有利于本发明实施例提供的数据映射方法的实施。
第二方面,本发明实施例提供一种数据映射装置,包括:
解析模块,用于解析第一结构化数据中的逻辑段,获得用于组成结构化查询语言SQL语句的SQL片段,其中,第一结构化数据为用于表示数据映射中的数据加工步骤的结构化数据,逻辑段为用于表示SQL片段的结构化数据;
SQL语句生成模块,用于基于SQL片段拼接生成与数据加工步骤对应的SQL语句。
结合第二方面,在第二方面的第一种可能的实施方式中,解析模块包括:
第一解析单元,用于解析逻辑段的段名称,获得逻辑段对应的SQL语句中的操作关键词;
第二解析单元,用于解析逻辑段中的参数字段,获得与操作关键词关联的操作参数;
SQL片段拼合单元,用于基于操作关键词以及操作参数拼合生成SQL片段。
第三方面,本发明实施例提供一种计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被计算机的处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实施方式提供的方法。
第四方面,本发明实施例提供一种电子设备,包括处理器以及计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实施方式提供的方法。
为使本发明的上述目的、技术方案和有益效果能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了一种可应用于本发明实施例中的终端设备的结构框图;
图2示出了数据映射的流程图;
图3示出了本发明实施例提供的数据映射方法的流程图;
图4示出了本发明实施例提供的数据映射装置的功能模块图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1示出了一种可应用于本发明实施例中的终端设备的结构框图。参照图1,终端设备100包括存储器102、存储控制器104,一个或多个(图中仅示出一个)处理器106、外设接口108、射频模块110、音频模块112、显示模块114等。这些组件通过一条或多条通讯总线/信号线116相互通讯。
存储器102可用于存储软件程序以及模块,如本发明实施例中的数据映射方法及装置对应的程序指令/模块,处理器106通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理,如本发明实施例提供的数据映射方法及装置。
存储器102可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。
处理器106可以是一种集成电路芯片,具有信号的处理能力。具体可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、微控制单元(Micro ControllerUnit,MCU)、网络处理器(Network Processor,NP)或者其他常规处理器;还可以是专用处理器,包括数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、现场可编程门阵列(Field Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。
外设接口108将各种输入/输出装置耦合至处理器106以及存储器102。在一些实施例中,外设接口108,处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
射频模块110用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。
音频模块112向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。
显示模块114在终端设备100与用户之间提供一个显示界面。具体地,显示模块114向用户显示视频输出,这些视频输出的内容可包括文字、图形、视频及其任意组合。
可以理解,图1所示的结构仅为示意,终端设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。于本发明实施例中,终端设备100可以是服务器、个人计算机、智能移动设备、智能穿戴设备以及智能车载设备等具有运算处理能力的设备。
第一实施例
图2示出了数据映射的流程图。参照图2,数据映射通常包括如下步骤:
步骤S1:配置数据映射逻辑。
数据映射逻辑通常由用户根据数据映射的实际需求进行配置。在现有技术中,数据映射逻辑通常采用非结构化的数据的方式进行标识,例如文字描述或者文字描述结合部分表格。而在本发明实施例提供的数据映射方法中,所要解析的数据映射逻辑则采用结构化数据的方式进行标识,便于数据的展现和自动解析。
本发明实施例中的数据映射逻辑可以包括第一结构化数据以及第二结构化数据,在本发明实施例中,仅限定结构化数据的内容,但并不限定其具体组织形式。例如,在常见的实施方式中,第一结构化数据以及第二结构化数据均可以采用由微软公司开发的Office办公软件制作的Excel表格。Excel表格自身已经具有结构化的特征,只需要对单元格内容进行定义即可构成结构化数据,实现起来非常方便,可以简化结构化数据的定义过程。此外,Excel表格作为一种在计算机领域广泛使用的表格,其技术成熟度高,使用门槛较低,有利于普通用户使用。同时,目前已经存在很多现有的软件工具可以对Excel表格进行解析,使得本发明实施例提供的数据映射方法便于实施。在后文中举例阐述时,为简单起见,均以数据映射逻辑采用Excel表格实现的方式进行阐述,但可以理解的,数据映射逻辑还可以采用其他的结构化数据的形式实现,例如金山公司开发的WPS办公软件制作的WPS表格,数据库编辑软件制作的数据库表格,XML文档,JSON字符串或者其他自定义的结构化数据对象等。
数据映射通常包括至少一个数据加工步骤,可以通过第二结构化数据从整体上对数据映射进行结构化的表示。表1示出了第二结构化数据的一种可能的实现方式:
Figure BDA0001710246220000091
表1
其中,步骤序号、临时目标表、语句类型、加工说明以及映射字段构成第二结构化数据中的加工步骤段,加工步骤段用于简要地描述数据映射的各个数据加工步骤。
以表1为例,该数据映射包括3个数据加工步骤,分别通过步骤序号字段加以区别,在进行数据映射时各数据加工步骤按照序号依次执行。每个数据加工步骤对应一条SQL语句,语句类型字段描述了该SQL语句的类型,其取值可以是Select、Insert、Update或Delete,分别对应SQL中的Select语句、Insert语句、Update语句以及Delete语句。临时目标表字段描述了执行该SQL语句生成的结果的表名。加工说明字段则是对该数据加工步骤的文字性描述,便于用户理解。
每条SQL语句的内容可以通过第一结构化数据进行表示,在具体实施时,为使数据映射逻辑的层次更加清晰,可以将第二结构化数据保存到一个单独的Excel工作表(在Excel中也称为Sheet),而将每个数据加工步骤对应的第一结构化数据保存到一个单独的Excel工作表,并在第二结构化数据中存储数据加工步骤与第一结构化数据的保存位置的对应关系,以使在后续对第二结构化数据进行解析时能够根据该对应关系获得第一结构化数据的保存位置并进行解析。在表1示出的实施方式中,使用映射字段描述上述对应关系,其中,“criteria1”“criteria2”“unionall”分别为3个数据加工步骤各自对应的第一结构化数据所在的Excel工作表的名称,整个数据映射逻辑可以存储于一个Excel文件中,从而后续在解析时根据Excel工作表的名称即可以找到相应的Excel工作表并解析存储于该Excel工作表中的第一结构化数据。可以理解,上述仅为一种示例,第一结构化数据以及第二结构化数据的具体存储方式以及存储位置并不构成对本发明保护范围的限制,例如,第一结构化数据也可以和第二结构化区域存储于同一个Excel工作表,而映射字段的内容则是第一结构化数据在该Excel工作表中的所在的表格区域。
显然的,第二结构化数据中还可包括其他用于描述数据映射的字段,例如表1中的目标表中文名称、目标表英文名称以及目标表描述3个字段,用于描述源数据经数据映射之后生成的目标数据,即名为wtdk的数据表。
需要指出,表1中的字段的名称、单元格的内容均为示例性的,并不构成对发明保护范围的限制,对于后文中出现的其他表格亦是如此。
发明人经长期研究发现,如果将整条SQL语句直接以纯文本的方式写入到数据映射逻辑,要对其进行解析并还原出真正的数据映射逻辑会十分复杂,涉及到编译原理的相关内容。但如果将SQL语句拆分为多个具有一定含义的SQL片段,在数据映射逻辑中以SQL片段为单位进行表示SQL语句,在解析数据映射逻辑时时复杂度将会大大降低。
基于上述发现,本发明实施例中,在使用第一结构化数据表示数据加工步骤对应的SQL语句时,在第一结构化数据中设置多个逻辑段,每个逻辑段对应表示至少一个SQL片段。在后续解析时,解析每个逻辑段获得相应的SQL片段,然后将获得的多个SQL片段拼合起来即可还原出需要执行的SQL语句。
在本发明实施例中,并不限定按照何种规则将SQL语句拆分为SQL片段。但作为一种可选的实施方式,可以结合SQL本身的语言特性以及结构进行拆分,这种拆分方式更容易为人所理解,也使得用户在配置数据映射逻辑时较为方便。
具体而言,根据SQL的语法定义,每个SQL语句均由若干个操作关键词,例如Select、From、Join、Where等,以及相应的操作参数,例如表名、运算符、条件关系等构成,操作关键词总是与一个或多个操作参数相关联,构成SQL语句中具有一定含义的SQL片段。例如,SQL语句“Select T1.a,T1.bFrom T1 WhereT1.a>5”,可以拆分为3个SQL片段“SelectT1.a,T1.b”、“From T1”以及“Where T1.a>5”,其中第一个SQL片段对应操作关键词Select,其操作参数为T1、a以及b,第二个SQL片段对应操作参数From,其操作参数为T1,第三个SQL片段对应操作参数Where,其操作参数为T1、a以及>5。在使用第一结构化数据表示SQL语句时,每个逻辑段均为对应的SQL片段的结构化表示,例如,对于上面的例子,可以设置Mapping段、From段以及Where段3个逻辑段,分别对应上面的第一个SQL片段、第二个SQL片段以及第三个SQL片段。每个逻辑段都是结构化的数据,例如Excel表格,每个逻辑段均包括多个字段对应SQL片段中的操作关键词以及操作参数。
下面举例介绍几种常见的逻辑段,可以理解,在实际实施时,第一结构化数据中还可以根据具体的SQL语句设置比这些例子中更多的或更少的逻辑段。同时,第一结构化数据中的各逻辑段中的参数字段也不限于例子中所列出的参数字段,还可以包括更多或更少的参数字段。
From段:用于描述参与数据映射的数据表,以及各数据表之间的关联方式。该逻辑段对应SQL中的From操作关键词以及与其关联的操作参数,具体结构可以如表2所示:
Figure BDA0001710246220000121
表2
其中,最左侧为段名称,即From,对应于From操作关键词。右侧的每列为一个参数字段,右侧的每行可以用于描述一个数据表,共有3行,分别描述TBCCPPR0_H、TBCCCUS0_V1以及TBCCCUS0_V2共3个数据表。最右侧的关联关系字段表明个数据表与主表之间的具体关联方式,其取值可以包括左关联(对应SQL中的Leftjoin)、右关联(对应SQL中的Rightjoin)、内关联(对应SQL中的Inner join)、嵌入关联(对应SQL中的嵌套查询)等。表2对应的SQL片段为:From TBCCPPRO_HTT1 Left join TBCCUS0_V1 TT2 Left join TBCCUS0_V2TT3,即可以通过表2拼合出对应的SQL片段。
Join段:用于描述数据表的关联字段间的关系,From段主要描述的是哪些数据表应该关联以及采用何种方式进行关联,而Join段则描述的是各数据表进行关联时的具体条件,即关联字段之间应当满足的约束关系。该逻辑段对应SQL中的Join操作关键词以及与其关联的操作参数,具体结构可以如表3(包括续表3)所示:
Figure BDA0001710246220000131
表3
Figure BDA0001710246220000132
续表3
其中,最左侧为段名称,即Join,对应于Join操作关键词。右侧的每列为一个参数字段,右侧的每行可以用于表示一项关联字段间的约束关系。每项约束关系涉及两个关联字段,分别是左表中的一个关联字段以及右表中的一个关联字段,具体的约束关系则通过条件关系字段进行定义。AND&OR字段表示各个约束关系之间的连接逻辑,可以是和关系(and)或者或关系(or)。此外,某些约束关系中还涉及到对关联字段的加工,即加工后的关联字段满足某种约束关系。在表3中,字段变换字段用于描述对字段进行加工的函数,例如对字符串取子串函数、大小写转换函数等。运算符字段用于描述对字段进行加工的运算符类型,例如+、-、*、÷等。表3对应的SQL片段为:
TT1 Join TT2 ON TT1.SCDY_ORG_ID=TT2.Org_ID and TT2.Data_Dt=CAST('¥{TXNDATE}'ASDATE)
以及
TT1 Join TT2 ON TT1.PRIM_ORG_ID=TT3.Org_ID and TT3.Data_Dt=CAST('¥{TXNDATE}'ASDATE)
即可以通过表3拼合出对应的SQL片段。再结合表2以及表3,实际上二者共同描述了如下SQL片段:
From TBCCPPRO_H TT1
Left join TBCCUS0_V1 TT2
ON TT1.SCDY_ORG_ID=TT2.Org_ID and TT2.Data_Dt=CAST
('¥{TXNDATE}'AS DATE)
Left join TBCCUS0_V2 TT3
ON TT1.PRIM_ORG_ID=TT3.Org_ID and TT3.Data_Dt=CAST
('¥{TXNDATE}'AS DATE)
即不同逻辑段对应的SQL片段最终可以相互拼合,最终组成用于实现数据加工步骤的SQL语句。
Where段:用于描述数据表中的字段过滤方法。该逻辑段对应SQL中的Where操作关键词以及与其关联的操作参数,具体结构可以如表4(包括续表4)所示:
Figure BDA0001710246220000151
表4
字段变换 运算符 条件关系
='0135001'
<=CAST('¥{TXNDATE}'ASDATE)
>=CAST('¥{TXNDATE}'ASDATE)
续表4
其中,最左侧为段名称,即Where,对应于Where操作关键词。右侧的每列为一个参数字段,右侧的每行可以用于描述一个被过滤的字段,共有3行,分别描述IP_IP_REL_TPCD、REL_STDT以及REL_EDDT共3个TT1表中的字段。表4中各字段的含义可以通过表4直观地理解或者之前已经解释,不再具体阐述。表4对应的SQL片段为:WhereTT1.IP_IP_REL_TPCD='0135001'and TT1.REL_STDT<=CAST('¥{TXNDATE}'AS DATE)and TT1.REL_EDDT>=CAST
('¥{TXNDATE}'AS DATE)
即可以通过表4拼合出对应的SQL片段。
Mapping段:用于描述源数据与目标数据之间的映射关系。该逻辑段对应SQL中的Select操作关键词以及与其关联的操作参数,具体结构可以如表5所示:
Figure BDA0001710246220000161
表5
其中,最左侧为段名称,即Mapping,对应于操作关键词Select。右侧的每列为一个参数字段,右侧的每行可以用于表示一项源字段到目标字段的映射关系。其中,赋值函数字段用于对目标字段进行赋值,其余字段的含义可以通过表5直观地理解或者之前已经解释,不再具体阐述。表5对应的SQL片段为:
Select tb1.f1 as bm,tb2.f2 as rq,‘1’as cd
即可以通过表5拼合出对应的SQL片段。
Figure BDA0001710246220000162
表6
表6示出了Mapping段的另一个例子,表6对应的SQL片段为:Select substr(tb1.f1,3)as bm,tb2.f2 as rq,‘1’as cd其中,符号@用源字段英文名进行替换。
Figure BDA0001710246220000163
表7
表7示出了Mapping段的另一个例子,表7对应的SQL片段为:Select(tb1.f1+tb1.f2)*tb2.f3 as qx
其中,当一行没有配置目标字段时(如上面的第一行或第二行),表明该行并不能获得目标字段,需要和下一行通过运算符结合运算,依次类推,直至出现配置有目标字段的行(如上面的第三行)。
前面在介绍From段时提到,From段中的关联关系字段的值可以取嵌入关联,如表8所示:
Figure BDA0001710246220000171
表8
此时Mapping端对应的SQL片段在生成方法上有所不同,假设此时Mapping段的内容如表9所示:
Figure BDA0001710246220000172
表9
在From段中的sys表对应的关联关系字段的值不是嵌入关联时,Mapping段对应的SQL片段为:
Select sys.serialNo as no
即为普通查询。在From段中的sys表对应的关联关系字段的值是嵌入关联时,Mapping段对应的SQL片段为:
Select(Select sys.serialNo From system sys)as no
即为嵌套查询,其中子查询的内容为Mapping段所定义。
在一种可选的实施方式中,Mapping段还可以包括映射条件字段,如表10(包括续表10)所示:
Figure BDA0001710246220000173
Figure BDA0001710246220000181
表10
Figure BDA0001710246220000182
续表10
映射字段对应于Select语句中存在case语句的情况,映射字段下属的各个子字段的含义可以通过表8直观地理解或者之前已经解释,需要指出的是此时赋值函数字段用于在不同case分支下对目标字段进行赋值。表8对应的SQL片段为:
Select(case when tb1.clsresult in('E1')
then'损失'
when tb1.clsresult in('D1','E2')
then'可疑'
else tb.f1
end)as DKWJFL
上述为第一结构化数据中常见的几个逻辑段,其他可以包括的逻辑段还有Orderby段、Groupby段、Having段、Verbatim段等。其中,Orderby段对应SQL中的Order by操作关键词以及与其关联的操作参数、Groupby段对应SQL中的Group by操作关键词以及与其关联的操作参数、Having段对应SQL中的Having操作关键词以及与其关联的操作参数。其具体结构可以参考上述逻辑段设置,不再具体阐述。Verbatim段为第一结构化数据中的附加段,其内容是事先配置好的附加文本,在基于操作关键词以及操作参数拼合生成SQL片段的过程中,附加文本的内容直接以原封不动的方式拼合到SQL片段中,主要用于实现一些特殊场景下的需求,使得生成SQL片段的方式更加灵活。
可见,本发明实施例中的数据映射逻辑是完全结构化的数据,同时也是与平台无关的,意味着该数据映射逻辑在任何平台上都可以通过相应的工具进行解析,适用范围较广泛。
步骤S2:解析数据映射逻辑,生成数据映射代码。
本发明实施例提供的数据映射方法即为实现步骤S2的具体方法。其执行主体可以是图1示出的终端设备100中的处理器106。在数据映射方法采用软件方式实现时,可以实现为具有跨平台特性的JAVA程序。
图3示出了本发明实施例提供的数据映射方法的流程图。参照图3,该数据映射方法包括:
步骤S20:处理器106解析第一结构化数据中的逻辑段,获得用于组成SQL语句的SQL片段。
步骤S21:处理器106基于SQL片段拼接生成与数据加工步骤对应的SQL语句。
下面将步骤S20以及步骤S21结合进行阐述:
关于第一结构化数据的具体实现方式,在数据映射的步骤S1中已经阐述,在已知第一结构化数据的具体结构的情况下,对其进行解析时是容易实现的。仍然采用之前的例子,某一数据加工步骤对应的SQL语句为“Select T1.a,T1.b From T1 Where T1.a>5”,在第一结构化数中包括Mapping段、From段以及Where段3个逻辑段,其中,解析Mapping段的段名称,可以获得对应的操作关键词Select,解析Mapping段的中的参数字段,可以获得操作参数T1、a以及b,拼合可得Mapping段对应的SQL片段“Select T1.a,T1.b”。解析From段的段名称,可以获得对应的操作关键词From,解析From段的中的参数字段,可以获得操作参数T1,拼合可得From段对应的SQL片段“From T1”。解析Where段的段名称,可以获得对应的操作关键词Where,解析Where段的中的参数字段,可以获得操作参数T1、a以及>5,拼合可得Where段对应的SQL片段“Where T1.a>5”,再将上述三个SQL片段拼合在一起,即可还原出SQL语句“Select T1.a,T1.b From T1 Where T1.a>5”。
在解析第一结构化数据的过程中,如果解析到有附加字段的,将其对应的附加文本直接拼合到对应的SQL片段中。
步骤S20以及步骤S21针对的是数据映射逻辑中具体数据加工步骤的解析。根据步骤S1中的阐述,数据映射逻辑还可以进行层次化的表示,即通过第二结构化数据对各个数据加工步骤对应的第一结构化数据进行索引。关于第二结构化数据的具体实现方式,在数据映射的步骤S1中已经阐述。在步骤S20之前,通过解析第二结构化数据,基于其中的数据加工步骤与第一结构化数据的对应关系,获得各个数据加工步骤对应的第一结构化数据的保存位置,从而能够快速解析并获得各个数据加工步骤对应的SQL语句。
在实际中,虽然SQL有统一的标准,但不同数据库平台的上运行的SQL语句在细节上还是存在一定的区别,因此作为一种具体的实施方式,步骤S21中在生成SQL语句时,可以将数据库平台考虑在内,以使生成的SQL语句能够在具体的数据库平台上执行,使得该数据映射方法具备良好的实用性。可以在配置文件或者其他地方实现配置好用于表征数据库平台的数据库平台信息,并在生成SQL语句时获取该信息,以使生成的SQL语句能够对应于某种指定的数据库平台。其中,数据库平台可以是,但不限于TD、Greenplum等平台。
通常,也将最终解析获得的一条或多条顺序执行的SQL语句称为SQL脚本,SQL脚本也是实现数据映射的实体。但是,SQL脚本通常并不能直接执行,需要嵌入到相应的批处理脚本中执行,嵌入有SQL脚本的批处理脚本也称为数据映射脚本。数据映射脚本可以为,但不限于Perl脚本。数据映射脚本也就是步骤S2中所称的数据映射所对应的数据映射代码。
对于不同的数据映射,对应不同的数据映射脚本,但实际上,各个数据映射脚本之间除了SQL脚本的部分,其他很多部分,例如开始时的启动事务、结束时的提交事务等均是完全相同的,因此为加快数据映射脚本的生成效率,在一种可选的实施方式中,可以将数据映射脚本的公用部分事先配置为模板文件,在生成数据映射脚本时只需要读取模板文件,将SQL脚本嵌入到模板文件中即可。
步骤S3:执行数据映射代码,实现数据映射。
步骤S2中生成的数据映射脚本就是一个批处理作业,可以由作业调度平台调度运行,从而实现数据映射。
综上所述,由于在步骤S1中将数据映射逻辑完全采用结构化数据进行了表示,因此在步骤S2中采用了本发明实施例提供的数据映射方法对其进行解析时,可以实现完全自动化的解析,无需人工介入即可生成SQL脚本以及数据映射脚本,从而可以显著提高数据映射的执行效率。同时由于避免了数据映射代码生成过程中人为因素的干扰,能够确保生成的数据映射代码与数据映射逻辑的一致性,使得执行数据映射能够获得预期的结构。此外,将数据映射逻辑进行结构化的表示,即方便用户理解、查看、修改、展示,也方便用户在结构化的基础上对数据映射逻辑进行分析处理,例如基于数据映射逻辑快速生成设计文档、模型文档、作业调度文档等。
还需要指出,由于SQL语句在数据处理技术领域的很多方面都存在应用,因此本发明实施例中的将SQL语句进行结构化表示以及解析的方法,并不限于应用在数据映射中。
第二实施例
图4示出了本发明实施例提供的数据映射装置200的功能模块图。参照图4,该装置包括解析模块210以及SQL语句生成模块220。
解析模块210用于解析第一结构化数据中的逻辑段,获得用于组成结构化查询语言SQL语句的SQL片段,其中,所述第一结构化数据为用于表示数据映射中的数据加工步骤的结构化数据,所述逻辑段为用于表示所述SQL片段的结构化数据;SQL语句生成模块220用于基于所述SQL片段拼接生成与所述数据加工步骤对应的所述SQL语句。
进一步的,在第二实施例的一种实施方式中,解析模块210可以包括第一解析单元、第二解析单元以及SQL片段拼合单元。
其中,第一解析单元用于解析所述逻辑段的段名称,获得所述逻辑段对应的所述SQL语句中的操作关键词;第二解析单元用于解析所述逻辑段中的参数字段,获得与所述操作关键词关联的操作参数;SQL片段拼合单元用于基于所述操作关键词以及所述操作参数拼合生成所述SQL片段。
本发明第二实施例提供的数据映射取装置200,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
第三实施例
本发明第三实施例提供一种计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被计算机的处理器读取并运行时,执行本发明实施例提供的数据映射方法。该计算机存储介质可以实现为,但不限于图1示出的存储器102。
第四实施例
本发明第四实施例提供一种电子设备,包括处理器以及计算机存储介质,计算机存储介质中存储有计算机程序指令,计算机程序指令被处理器读取并运行时,执行本发明提供的数据映射方法。该电子设备可以实现为,但不限于图1示出的终端设备100。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得计算机设备执行本发明各个实施例所述方法的全部或部分步骤。前述的计算机设备包括:个人计算机、服务器、移动设备、智能穿戴设备、网络设备、虚拟设备等各种具有执行程序代码能力的设备,前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟、磁带或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (5)

1.一种数据映射方法,其特征在于,包括:
解析第一结构化数据中的逻辑段,获得用于组成结构化查询语言SQL语句的SQL片段,其中,所述第一结构化数据为用于表示数据映射中的数据加工步骤的结构化数据,所述逻辑段为用于表示所述SQL片段的结构化数据;
基于所述SQL片段拼接生成与所述数据加工步骤对应的所述SQL语句;其中,在所述基于所述SQL片段拼接生成与所述数据加工步骤对应的所述SQL语句之后,还包括:生成嵌入有所述SQL语句的数据映射脚本,所述数据映射脚本用于在被执行时,实现所述数据映射;所述生成嵌入有所述SQL语句的数据映射脚本,包括:获得包括所述数据映射脚本的公用部分的模板文件;将所述SQL语句嵌入所述模板文件以生成所述数据映射脚本;
其中,所述解析第一结构化数据中的逻辑段,获得用于组成结构化查询语言SQL语句的SQL片段,包括:解析所述逻辑段的段名称,获得所述逻辑段对应的所述SQL语句中的操作关键词;解析所述逻辑段中的参数字段,获得与所述操作关键词关联的操作参数;基于所述操作关键词以及所述操作参数拼合生成所述SQL片段;在所述基于所述操作关键词以及所述操作参数拼合生成所述SQL片段之前,还包括:解析所述逻辑段中的附加文本字段,获得附加文本;所述基于所述操作关键词以及所述操作参数拼合生成所述SQL片段,包括:基于所述操作关键词、所述操作参数以及所述附加文本拼合生成所述SQL片段,所述附加文本为所述第一结构化数据中的附加段的内容。
2.根据权利要求1所述的数据映射方法,其特征在于,所述解析第一结构化数据中的逻辑段之前,所述方法还包括:
解析第二结构化数据中的加工步骤段,并基于获得的所述数据加工步骤与所述第一结构化数据的对应关系获得所述第一结构化数据,其中,所述第二结构化数据为用于表示所述数据映射的结构化数据。
3.根据权利要求1所述的数据映射方法,其特征在于,所述基于所述SQL片段拼接生成与所述数据加工步骤对应的所述SQL语句,包括:
获得数据库平台信息;
基于所述SQL片段以及所述数据库平台信息生成与所述数据加工步骤对应的所述SQL语句,所述SQL语句能够在与所述数据库平台信息对应的数据库平台上运行。
4.根据权利要求1所述的数据映射方法,其特征在于,所述第一结构化数据为预先配置好的Excel表格。
5.一种数据映射装置,其特征在于,包括:
解析模块,用于解析第一结构化数据中的逻辑段,获得用于组成结构化查询语言SQL语句的SQL片段,其中,所述第一结构化数据为用于表示数据映射中的数据加工步骤的结构化数据,所述逻辑段为用于表示所述SQL片段的结构化数据;
SQL语句生成模块,用于基于所述SQL片段拼接生成与所述数据加工步骤对应的所述SQL语句;其中,在所述基于所述SQL片段拼接生成与所述数据加工步骤对应的所述SQL语句之后,还包括:生成嵌入有所述SQL语句的数据映射脚本,所述数据映射脚本用于在被执行时,实现所述数据映射;所述生成嵌入有所述SQL语句的数据映射脚本,包括:获得包括所述数据映射脚本的公用部分的模板文件;将所述SQL语句嵌入所述模板文件以生成所述数据映射脚本;
其中,所述解析模块包括:第一解析单元,用于解析所述逻辑段的段名称,获得所述逻辑段对应的所述SQL语句中的操作关键词;第二解析单元,用于解析所述逻辑段中的参数字段,获得与所述操作关键词关联的操作参数;SQL片段拼合单元,用于基于所述操作关键词以及所述操作参数拼合生成所述SQL片段; 在所述基于所述操作关键词以及所述操作参数拼合生成所述SQL片段之前,还包括:解析所述逻辑段中的附加文本字段,获得附加文本;所述基于所述操作关键词以及所述操作参数拼合生成所述SQL片段,包括:基于所述操作关键词、所述操作参数以及所述附加文本拼合生成所述SQL片段,所述附加文本为所述第一结构化数据中的附加段的内容。
CN201810680612.8A 2018-06-27 2018-06-27 数据映射方法及装置 Active CN108829884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810680612.8A CN108829884B (zh) 2018-06-27 2018-06-27 数据映射方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810680612.8A CN108829884B (zh) 2018-06-27 2018-06-27 数据映射方法及装置

Publications (2)

Publication Number Publication Date
CN108829884A CN108829884A (zh) 2018-11-16
CN108829884B true CN108829884B (zh) 2021-10-15

Family

ID=64139043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810680612.8A Active CN108829884B (zh) 2018-06-27 2018-06-27 数据映射方法及装置

Country Status (1)

Country Link
CN (1) CN108829884B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110008266A (zh) * 2019-03-13 2019-07-12 平安信托有限责任公司 数据交换文件解析方法和装置
CN110399532B (zh) * 2019-03-22 2020-05-05 郭云 数据映射查找系统
CN110377600A (zh) * 2019-06-06 2019-10-25 福建奇点时空数字科技有限公司 一种面向rdf三元组的专业数据直接映射方法
CN111091469B (zh) * 2019-11-20 2023-12-19 泰康保险集团股份有限公司 信息处理方法、装置、电子设备及计算机可读介质
CN112967048A (zh) * 2020-11-24 2021-06-15 辽宁振兴银行股份有限公司 一种基于分布式架构的代收代付智能路由
CN112632167A (zh) * 2020-12-24 2021-04-09 山东中创软件工程股份有限公司 一种结构化数据的数据转化方法、数据转化系统及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323945A (zh) * 2011-09-02 2012-01-18 南京中兴力维软件有限公司 一种基于sql的数据库管理方法和装置
CN103631907A (zh) * 2013-11-26 2014-03-12 中国科学院信息工程研究所 一种将关系型数据迁移至HBase的方法及系统
CN104899225A (zh) * 2014-03-07 2015-09-09 北京四达时代软件技术股份有限公司 对象关系映射方法、装置及处理器
CN108038222A (zh) * 2017-12-22 2018-05-15 冶金自动化研究设计院 用于信息系统建模和数据访问的实体-属性框架的系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112657B2 (en) * 2010-06-14 2012-02-07 At&T Intellectual Property I, L.P. Method, computer, and computer program product for hardware mapping
US8612487B2 (en) * 2011-09-07 2013-12-17 International Business Machines Corporation Transforming hierarchical language data into relational form
CN102426612A (zh) * 2012-01-13 2012-04-25 广州从兴电子开发有限公司 条件对象查询方法及系统
CN103093000A (zh) * 2013-02-25 2013-05-08 用友软件股份有限公司 数据库查询建模系统和数据库查询建模方法
CN105843605B (zh) * 2016-03-17 2019-03-08 中国银行股份有限公司 一种数据映射方法及装置
CN107798026A (zh) * 2016-09-05 2018-03-13 北京京东尚科信息技术有限公司 数据查询方法和装置
CN107506442B (zh) * 2017-08-24 2020-09-29 中国银行股份有限公司 一种模型的建模方法及装置
CN107766572A (zh) * 2017-11-13 2018-03-06 北京国信宏数科技有限责任公司 基于经济领域数据的分布式提取及可视化分析方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323945A (zh) * 2011-09-02 2012-01-18 南京中兴力维软件有限公司 一种基于sql的数据库管理方法和装置
CN103631907A (zh) * 2013-11-26 2014-03-12 中国科学院信息工程研究所 一种将关系型数据迁移至HBase的方法及系统
CN104899225A (zh) * 2014-03-07 2015-09-09 北京四达时代软件技术股份有限公司 对象关系映射方法、装置及处理器
CN108038222A (zh) * 2017-12-22 2018-05-15 冶金自动化研究设计院 用于信息系统建模和数据访问的实体-属性框架的系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Workload Driven Comparison and Optimization of Hive and Spark SQL;Man Zhang 等;《2017 4th International Conference on Information Science and Control Engineering (ICISCE)》;20170723;777-782 *
结构化查询语言动态功耗解析及建模;国冰磊 等;《计算机应用》;20151210;第35卷(第12期);3362-3367 *

Also Published As

Publication number Publication date
CN108829884A (zh) 2018-11-16

Similar Documents

Publication Publication Date Title
CN108829884B (zh) 数据映射方法及装置
CN110795455B (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN111177231A (zh) 报表生成方法和报表生成装置
CN109522341B (zh) 实现基于sql的流式数据处理引擎的方法、装置、设备
CN104536987B (zh) 一种查询数据的方法及装置
CN109313547B (zh) 用于cpu利用率和代码重构的查询优化器
CN115061721A (zh) 一种报表生成方法、装置、计算机设备及存储介质
CN114091426A (zh) 一种处理数据仓库中字段数据的方法和装置
CN106547765B (zh) 基于sql的数据库管理方法及装置
CN114579104A (zh) 数据分析场景的生成方法、装置、设备及存储介质
CN103678396B (zh) 一种基于数据模型的数据备份方法和装置
CN110888876A (zh) 生成数据库脚本的方法、装置、存储介质及计算机设备
CN113687825B (zh) 一种软件模块的构建方法、装置、设备及存储介质
CN108694172B (zh) 信息输出方法和装置
CN111142871A (zh) 一种前端页面开发系统、方法、设备、介质
KR102395926B1 (ko) 복합명사 분석장치 및 방법, 컴퓨터 프로그램
CN111126008A (zh) 基于xsd的代码生成方法、装置、计算机设备及存储介质
CN114297443B (zh) 图数据查询语句的处理方法、装置、设备及存储介质
CN113741864B (zh) 基于自然语言处理的语义化服务接口自动设计方法与系统
CN111984684B (zh) 数据处理方法及装置
CN113448852A (zh) 一种测试案例的获取方法、装置、电子设备及存储介质
CN111143329A (zh) 一种数据处理方法及装置
CN111680492A (zh) 新词挖掘方法、装置及电子设备
CN112988778A (zh) 一种处理数据库查询脚本的方法和装置
CN110795686B (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