CN107092474A - 程序开发方法、etl处理方法及装置 - Google Patents
程序开发方法、etl处理方法及装置 Download PDFInfo
- Publication number
- CN107092474A CN107092474A CN201611146167.4A CN201611146167A CN107092474A CN 107092474 A CN107092474 A CN 107092474A CN 201611146167 A CN201611146167 A CN 201611146167A CN 107092474 A CN107092474 A CN 107092474A
- Authority
- CN
- China
- Prior art keywords
- source data
- processing
- rule
- etl
- type
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种程序开发方法、ETL处理方法及装置,根据源数据的待处理对象,利用规则处理函数配置抽取‑转换‑装载ETL处理规则;生成所述源数据的可执行程序;运行所述可执行程序以获取源数据,调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本,利用ETL处理脚本处理所述源数据,获得处理数据,并输出所述处理数据。本申请实施例提高了程序开发效率。
Description
技术领域
本申请属于数据处理技术领域,具体地说,涉及一种程序开发方法、ETL(extract-transform-load,抽取-转换-装载)处理方法及装置。
背景技术
ETL(extract-transform-load,抽取-转换-装载)用来描述数据从源端经过抽取、转换、加载至目的端的过程。
ETL过程主要包括三个阶段:输入、处理以及输出,其中,处理阶段可以包括清洗、过滤、校验等处理操作。
实际应用中存在大量ETL处理场景,不同ETL处理场景的ETL处理方式可能不一样,现有技术中,实现ETL过程的ETL执行程序采用传统的软件开发模式,通过人工编写代码的方式实现。
发明内容
由于现有技术中ETL(extract-transform-load,抽取-转换-装载)执行程序都是通过人工代码编写获得,系统执行该执行程序,即可以实现ETL过程;但是人工编写代码的方式比较繁琐且效率较低,如果ETL需求发生变化,就需要重新编写代码,操作繁琐、效率低,影响ETL处理,有鉴于此,本申请实施例提供的一种程序开发方法、ETL处理方法及装置,实现了简单高效的程序开发,从而保证了ETL处理的效率。
本申请的第一方面提供了一种程序开发方法,包括:
根据源数据的待处理对象,利用规则处理函数配置抽取-转换-装载ETL处理规则;
生成所述源数据的可执行程序;其中,所述可执行程序用于调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
可选地,所述可执行程序生成步骤包括:
根据所述源数据的输入类型,利用代码生成技术生成输入代码;
根据所述源数据的期望输出类型,利用代码生成技术生成输出代码;
基于所述输入代码、所述输出代码以及主流程代码,生成所述可执行程序;所述主流程代码规定了所述规则引擎的调用。
可选地,所述可执行程序生成步骤之前还包括:
显示多个输入类型以及多个输出类型;
响应于分别针对所述多个输入类型以及所述多个输出类型的选择,确定所述源数据的输入类型以及所述源数据的期望输出类型。
可选地,所述ETL处理规则配置步骤之前还包括:
显示多个函数;
响应于针对所述多个函数的选择,确定被选择的规则处理函数。
可选地,所述ETL处理规则配置步骤包括:
接收配置请求;所述请求中携带所述源数据的待处理对象;
根据所述源数据的待处理对象,利用规则处理函数配置ETL处理规则。
可选地,所述ETL处理规则配置步骤包括:
将源数据的待处理对象作为规则处理函数的处理参数,以生成ETL处理规则。
可选地,所述方法还包括:
将所述可执行程序以及所述ETL处理规则发送至分布式系统,以供所述分布式系统中的子节点运行。
本申请的第二方面提供了一种ETL处理方法,包括:
获取源数据;
调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本;其中,所述ETL处理规则根据所述源数据的待处理对象,利用规则处理函数配置获得;
利用所述ETL处理脚本处理所述源数据,获得处理数据;
输出所述处理数据。
可选地,所述获取源数据包括:
获取预配置的输入类型对应的源数据;
转换所述源数据的类型为预处理类型。
可选地,所述处理数据输出步骤包括:
转换所述处理数据的类型为预配置的期望输出类型;
输出转换之后的所述处理数据。
可选地,所述获取源数据包括:
获取分布式系统的主节点分配的源数据。
本申请的第三方面提供了一种程序开发装置,包括:
规则配置模块,用于根据源数据的待处理对象,利用规则处理函数配置抽取-转换-装载ETL处理规则;
程序生成模块,用于生成所述源数据的可执行程序;其中,所述可执行程序用于调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
可选地,所述程序生成模块包括:
输入代码生成单元,用于根据所述源数据的输入类型,利用代码生成技术生成输入代码;
输出代码生成单元,用于根据所述源数据的期望输出类型,利用代码生成技术生成输出代码;
程序生成单元,用于基于所述输入代码、所述输出代码以及主流程代码,生成所述可执行程序;所述主流程代码规定了所述规则引擎的调用。
可选地,还包括:
类型显示模块,用于显示多个输入类型以及多个输出类型;
类型确定模块,用于响应于分别针对所述多个输入类型以及所述多个输出类型的选择,确定所述源数据的输入类型以及所述源数据的期望输出类型。
可选地,还包括:
函数输出模块,用于显示多个函数;
函数确定模块,用于响应于针对所述多个函数的选择,确定被选择的规则处理函数。
可选地,所述规则配置模块包括:
对象接收单元,用于接收配置请求;所述请求中携带所述源数据的待处理对象;
规则配置单元,用于根据所述源数据的待处理对象,利用规则处理函数配置ETL处理规则。
可选地,所述规则配置模块具体用于将源数据的待处理对象作为规则处理函数的处理参数,以生成ETL处理规则。
本申请的第四方面,提供了一种ETL处理装置,其特征在于,包括:
输入模块,用于获取源数据;
规则解析模块,用于调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本;其中,所述ETL处理规则根据所述源数据的待处理对象,利用规则处理函数配置获得;
脚本执行模块,用于利用所述ETL处理脚本处理所述源数据,获得处理数据;
输出模块,用于输出所述处理数据。
可选地,所述输入模块包括:
获取单元,获取预配置的输入类型对应的源数据;
第一转换单元,用于转换所述源数据的类型为预处理类型。
可选地,所述输出模块包括:
第二转换单元,用于转换所述处理数据的类型为预配置的期望输出类型;
输出单元,用于输出转换之后的所述处理数据。
与现有技术相比,本申请可以获得包括以下技术效果
根据源数据的待处理对象利用规则处理函数,配置获得ETL处理规则;生成源数据的可执行程序,该可执行程序用于调用规则引擎解析该ETL处理规则,以生成ETL处理脚本。本申请实施例简化了程序开发过程,采用配置方式配置ETL处理规则,简单且容易理解,无需采用人工编写代码的方式,提高了程序开发效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种程序开发方法一个实施例的流程图;
图2是本申请实施例的一种程序开发方法又一个实施例的流程图;
图3是本申请实施例的一种ETL(extract-transform-load,抽取-转换-装载)处理方法一个实施例的流程图;
图4是本申请实施例的一种ETL处理方法又一个实施例的流程图;
图5是本申请实施例的一种程序开发装置一个实施例的结构示意图;
图6是本申请实施例的一种程序开发装置又一个实施例的结构示意图;
图7是本申请实施例的一种ETL处理装置一个实施例的结果示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
本申请实施例的技术方案应用于ETL(extract-transform-load,抽取-转换-装载)处理场景中,通常ETL过程可以划分为三个阶段:输入、处理以及输出;输入阶段主要负责从数据源拉取数据;处理阶段主要负责对数据进行ETL处理,可以包括清洗、过滤、校验等处理过程;输出阶段主要负责将处理之后的数据输出至目的端。
由于现有技术中ETL程序开发采用传统的软件开发模式,通过人工编写代码的方式实现,开发方式繁琐且效率低,特别是不适合对实时性要求较高的场景中,且一旦对ETL需求发生变化,就需要修改程序,重新编写代码。
为了简单高效的实现ETL程序开发,发明人经过一系列研究发现,ETL处理阶段是整个ETL过程的重要阶段,对ETL需求也主要体现在ETL处理阶段采用的处理方式不一样,如果可以简化ETL处理阶段的开发工作,将极大提高程序开发效率,因此发明人经过进一步研究提出本申请技术方案,采用配置方式而不是编写代码的方式,利用规则处理函数配置ETL处理规则,只需提供规则处理函数的处理参数即可,ETL处理规则规定了ETL处理方式,为了使得ETL处理规则可执行,可以生成源数据的可执行程序,该可执行程序可以调用规则引擎对ETL处理规则进行解析,以生成可以执行的ETL处理脚本,该ETL处理脚本即可以实现源数据的ETL处理。本申请实施例中,只需获知源数据的待处理对象,即可以生成处理源数据的ETL处理规则。生成的可执行程序中无需对ETL处理进行代码编写,采用配置方式,可以对ETL处理规则进行随时更改,无需重新编写可执行程序,因此通过本申请实施例提高了程序开发效率。
下面将结合附图对本申请技术方案进行详细描述。
图1是本申请实施例提供的一种程序开发方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:根据源数据的待处理对象,利用规则处理函数配置ETL(extract-transform-load,抽取-转换-装载)处理规则。
待处理对象可以是指源数据中的字段名称等等可以作为规则处理函数的处理参数的对象。源数据是指源端的待处理数据。
将待处理对象作为规则处理函数的处理参数,即可以生成ETL处理规则。从而使得对待处理对象可以按照规则处理函数规定的处理逻辑进行处理。
规则处理函数是一种计算机函数,在计算机语言中也可以称为“子程序”或者“方法”。不同计算机函数可以实现不同功能,例如param(field:String)为字段信息获取函数,String表示待处理数据的数据类型。如果待处理数据为“Driver”字段的数据,将字段名称Driver作为函数的处理参数,即生成处理规则为param(″Driver″),表示用于获取Driver字段的数据。
又如checkContains(field:String,value:Object))为校验函数,String以及Object分别表示待处理数据的数据类型,传入处理参数之后得到处理规则,假设为checkContains(″Driver″,″pass″),即表示用于校验Driver字段的数据中是否包含pass字段的数据。
由于ETL处理可以包括清洗、转换、校验等处理操作,因此该规则处理函数可以包括多个,分别对应不同处理操作,生成的ETL处理规则也即包括多个,分别对应不同的处理操作。
可选地,为了实现灵活配置,作为一种可能的实现方式,系统可以提供丰富的函数库,通过提供一配置界面,显示多个函数以供用户选择,被选择的函数即作为规则处理函数,用于生成ETL处理规则。因此作为又一个实施例:所述ETL处理规则配置步骤之前还可以包括:
显示多个函数;
响应于针对所述多个函数的选择,确定被选择的规则处理函数。
将源数据的待处理对象传入被选择的规则处理函数中,即得到ETL处理规则。
由于ETL处理包括多个处理操作,因此多个函数分别针对不同处理操作。每一个处理操作对应设置至少一个函数,以供用户选择。
作为另一种可能的实现方式,该规则处理函数可以是用户提供的,也即可以由用户自定义规则处理函数。因此作为又一个实施例:所述ETL处理规则配置步骤之前还可以包括:
接收用户输入的所述规则处理函数。
其中,源数据的待处理对象可以由用户提供,因此作为又一个实施例,该所述ETL处理规则配置步骤可以包括:
接收配置请求;所述请求中携带所述源数据的待处理对象;
根据所述源数据的待处理对象,利用规则处理函数配置ETL处理规则。
其中,配置请求可以是响应于用户的输入操作生成的,例如用户在配置界面中输入规则处理函数的待处理对象,从而即可以触发系统生成ETL处理规则。
因此,在用户了解源数据的情况下,即可以采用本申请实施例的技术方案进行程序开发,以提高程序开发效率,使得程序的开发和修改均比较简单。
102:生成所述源数据的可执行程序;其中,所述可执行程序用于调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
其中,可执行程序中实现输入操作以及输出操作的程序代码的生成可以与现有技术中相同,当然也可以进行灵活配置,在下面实施例中会详细进行介绍。
为了使用ETL处理规则,该可执行程序需要能够实现调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
由于ETL处理规则都是一些函数体,系统还无法执行,可以采用规则引擎技术,利用规则引擎进行解析。
规则引擎是一种解析器,利用规则引擎可以解析获得ETL处理规则中的处理逻辑。从而依据这些处理逻辑,即可以生成系统可以执行的ETL处理脚本,执行ETL处理脚本,即可以按照处理逻辑实现对源数据的ETL处理。
其中,由于规则处理函数可以由用户进行自定义,为了使得规则引擎可以解析ETL处理规则,可选地,所述规则处理函数利用所述规则引擎支持的程序语言编译获得。
目前的规则引擎支持的程序语言均为大众语言,例如Java,因此用户采用Java语言即可以自定义规则处理函数,学习成本低。
在本实施例中,根据源数据的待处理对象利用规则处理函数,即可以配置获得ETL处理规则;再生成源数据的可执行程序,使得该可执行程序可以调用规则引擎解析该ETL处理规则,以生成ETL处理脚本。本实施例中采用配置方式,只需获知源数据的待处理对象,即可以生成处理源数据的ETL处理规则。生成的可执行程序中无需对ETL处理进行代码编写,采用配置方式,可以对ETL处理规则进行随时更改,无需重新编写可执行程序,因此提高了程序开发效率。
为了进一步提高程序开发效率,简化程序开发过程,参见图2所述,为本申请实施例提供的一种程序开发方法又一个实施例的流程图,该方法可以包括以下几个步骤:
201:根据源数据的待处理对象,利用规则处理函数配置ETL处理规则。
步骤201的操作与步骤101相同,在此不再赘述。
202:根据所述源数据的输入类型,利用代码生成技术生成输入代码。
203:根据所述源数据的期望输出类型,利用代码生成技术生成输出代码。
204:基于所述输入代码、所述输出代码以及主流程代码,生成所述可执行程序。
ETL输入阶段主要负责从源端抽取源数据,但是通常源数据的数据类型与ETL支持处理的数据类型并不一致,因此ETL输入阶段还可以负责对源数据进行转换处理等。而ETL处理阶段主要负责将获得的处理数据输出至目的端,但是目的端的存储需求不一样,因此对存储数据的数据类型等也会存在要求,因此ETL输出阶段还可以负责将处理数据进行转换处理。
为了进一步简化程序开发操作,提高程序开发效率,本申请实施例中可以利用代码生成技术,自动生成输入代码以及输出代码,无需手动编写。
其中,输入代码根据源数据的输入类型利用代码生成技术生成,输入类型可以是指源数据的数据类型等。当然,也可以预配置不同输入类型对应的输入代码,从而可以根据源数据的输入类型,确定对应的输入代码。
可选地,由于不同数据的存储介质不同,因此在某些实施例中,可以根据源数据的输入类型以及介质类型,利用代码生成技术生成输入代码。该输入代码即具备从该介质类型对应的存储介质中抽取所述源数据,并将源数据转换为预处理类型的能力。该预处理类型即为ETL能够支持处理的数据类型。
其中,输出代码根据期望输出类型利用代码生成技术生成。该输出代码具体可以将处理数据转换为该期望输出类型之后再输出的能力。当然,也可以预配置不同输出类型对应的输出代码,从而可以根据源数据的期望输出类型,确定对应的输出代码。
其中,所述主流程代码规定了所述规则引擎的调用。主流程代码为标准的代码组件,可以预先编写好,作为固定代码可以固化在可执行程序中。
将输入代码、输出代码以及主流程代码合并在一起,可以利用代码生成技术,经过相应的编译即可以生成所述可执行程序。
本实施例中,利用代码生成技术可以自动生成输入代码以及输出代码,利用规则引擎技术可以实现ETL处理的配置,无需人工编写代码,输入、处理以及输出均可以采用配置方式实现,配置简单且容易理解,从而提高了程序开发效率。且通过输入类型以及输出类型的可配置化,使得本实施例的程序开发方式适用性更广。
此外,为了方便进一步提高程序开发效率,在某些实施例中,所述可执行程序生成步骤之前还可以包括:
显示多个输入类型以及多个输出类型;
响应于分别针对所述多个输入类型以及所述多个输出类型的选择,确定所述源数据的输入类型以及所述源数据的期望输出类型。
通过界面化的方式显示输入类型以及输出类型,用户只需进行选择即可,从而可以进一步简化程序开发过程,提高程序开发效率。
本申请实施例中,为了进一步提高ETL处理效率,可以利用分布式系统进行ETL处理,该分布式系统由主节点以及多个子节点构成,主节点负责调度各个子节点,子节点负责处理主节点分配的源数据。在某些实施例中,该分布式系统例如可以为Spark Streaming。
因此,在某些实施例中,生成可执行程序之后,还可以包括:
将所述可执行程序以及所述ETL处理规则发送至分布式系统,以供所述分布式系统中的子节点运行。
子节点运行该可执行程序即可以实现ETL处理。
通过分布式系统,可以并行处理多个源数据,可满足实时性且数据量较大的应用场景的需求。
ETL处理规则可以与源数据的数据标识信息建立对应关系。从而可以方便查找源数据对应的ETL处理规则。
将所述可执行程序以及所述ETL处理规则发送至分布式系统,由于可执行程序可能并不知道源数据对应的ETL处理规则,因此用户可以在可执行程序运行时,提供源数据的数据标识信息以及数据路径信息,数据标识信息例如可以是指源数据的数据名称,用于唯一标识源数据;数据路径信息表示源数据在存储介质中的存储地址,根据数据路径信息以及数据标识信息可以获知从哪里获取源数据,以及确定源数据对应哪些ETL处理规则。
基于上述实施例的程序开发方法获得的可执行程序以及ETL处理规则,执行该可执行程序即可以进行ETL处理。如图3所示,为本申请实施例提供的一种ETL处理方法一个实施例的流程图,该方法可以包括以下几个步骤:
301:获取源数据。
302:调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本。
其中,所述ETL处理规则根据所述源数据的待处理对象,利用规则处理函数配置获得。
其中,存在多个待处理数据对应的ETL处理规则时,还可以获取用户提供的源数据的数据标识信息,从而可以根据数据标识信息获取源数据对应的ETL处理规则。
ETL处理规则的配置过程可以参见上述实施例中所述,在此不再赘述。
303:利用所述ETL处理脚本处理所述源数据,获得处理数据。
其中源数据的处理过程可以包括:清洗、转换、校验等处理操作,处理操作与现有技术相同,只是实现处理操作的处理规则可以快速进行配置。
304:输出所述处理数据。
本实施例中,通过调用预配置的ETL处理规则,实现了ETL处理,该ETL处理规则利用规则处理函数配置获得,从而无需进行代码编写,从而使得可执行程序可以进行快速定制,从而不会影响ETL处理,保证ETL处理效率。
其中,由于可执行程序或者输入代码或者输出代码也可以配置,因此作为又一个实施例,如图4所示的ETL处理方法,可以包括以下几个步骤:
401:获取预配置的输入类型对应的源数据。
其中,该预配置的输入类型在可执行程序开发过程中进行配置,具体可以参见上述实施例中所述,在此不再赘述。
其中,还可以获取用户提供的数据路径信息,从而具体是依据预配置的输入类型以及数据路径信息获取对应的源数据。
将输入类型预配置在可执行程序的输入代码中,而数据路径信息动态设置,使得可执行程序不必局限于只能处理某一个特定的数据,而是可以处理某一类型的所有数据,提高了可执行程序的适用性。
其中,输入代码中还可以预配置介质类型,数据路径信息具体可以是指该介质类型对应的存储介质中的存储地址。
402:转换所述源数据的类型为预处理类型。
其中,转换源数据的类型为预处理类型可以包括数据格式的转换,通过对源数据进行解码以及解析,实现将源数据转换为预处理类型。
403:调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本。
404:利用所述ETL处理脚本处理转换之后的所述源数据,获得处理数据。
405:转换所述处理数据的类型为预配置的期望输出类型。
该预配置的期望输出类型在可执行程序开发过程中进行配置,具体可以参见上述实施例中所述,在此不再赘述。
406:输出转换之后的所述处理数据。
本实施例中,通过调用预配置的ETL处理规则,实现了ETL处理,该ETL处理规则利用规则处理函数配置获得,无需进行代码编写,可执行程序中只需设置预先设配置的主流程代码,以能够调用规则引擎解析ETL处理规则即可,使得可执行程序可以进行快速定制,从而不会影响ETL处理,保证ETL处理效率。且可执行程序开发时可以配置源数据的输入类型以及期望输出类型,从而可以实现相应输入类型的源数据的处理,并按照期望输出类型输出处理数据,满足个性化需求,且配置简单方便,进一步保证了可执行程序的开发效率。
为了进一步提高ETL处理效率,可以利用分布式系统进行ETL处理,该分布式系统由主节点以及多个子节点构成,主节点负责调度各个子节点,子节点负责处理主节点分配的源数据,在某些实施例中,该分布式系统可以为Spark Streaming。
因此,在某些实施例中,所述获取源数据可以是:
获取分布式系统的主节点分配的源数据。
图5为本申请实施例提供的一种程序开发装置一个实施例的结构示意图,该装置可以包括:
规则配置模块501,用于根据源数据的待处理对象,利用规则处理函数配置抽取-转换-装载ETL处理规则.
可选地,该规则配置模块可以具体是将源数据的待处理对象作为规则处理函数的处理参数,以生成ETL处理规则。
其中,为了实现灵活配置,作为一种可能的实现方式,该装置还可以包括:
函数输出模块,用于显示多个函数;
函数确定模块,用于响应于针对所述多个函数的选择,确定被选择的规则处理函数。
作为另一种可能的实现方式,该规则处理函数可以是用户提供的,也即可以由用户自定义规则处理函数。因此作为又一个实施例:该装置还可以包括:
函数接收模块,用于接收用户输入的所述规则处理函数。
其中,其中,源数据的待处理对象可以由用户提供,因此作为又一个实施例,所述规则配置模块可以包括:
对象接收单元,用于接收配置请求;所述请求中携带所述源数据的待处理对象;
规则配置单元,用于根据所述源数据的待处理对象,利用规则处理函数配置ETL处理规则。
程序生成模块502,用于生成所述源数据的可执行程序;其中,所述可执行程序用于调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
规则引擎是一种解析器,利用规则引擎可以解析获得ETL处理规则中的处理逻辑。从而依据这些处理逻辑,即可以生成系统可以执行的ETL处理脚本。
由于规则处理函数可以由用户进行自定义,为了使得规则引擎可以解析ETL处理规则,可选地,所述规则处理函数利用所述规则引擎支持的程序语言编译获得。
在本实施例中,根据源数据的待处理对象利用规则处理函数,即可以配置获得ETL处理规则;再生成源数据的可执行程序,使得该可执行程序可以调用规则引擎解析该ETL处理规则,以生成ETL处理脚本。本实施例中采用配置方式,只需获知源数据的待处理对象,即可以生成处理源数据的ETL处理规则。生成的可执行程序中无需对ETL处理进行代码编写,采用配置方式,可以对ETL处理规则进行随时更改,无需重新编写可执行程序,因此提高了程序开发效率。
为了进一步提高程序开发效率,作为又一个实施例,如图6所述,与图5所示实施例不同之处,所述程序生成模块502可以包括:
输入代码生成单元601,用于根据所述源数据的输入类型,利用代码生成技术生成输入代码;
输出代码生成单元,用于根据所述源数据的期望输出类型,利用代码生成技术生成输出代码602;
程序生成单元603,用于基于所述输入代码、所述输出代码以及主流程代码,生成所述可执行程序;
其中,所述主流程代码规定了所述规则引擎的调用。主流程代码为标准的代码组件,可以预先编写好,作为固定代码可以固化在可执行程序中。
本实施例中,利用代码生成技术可以自动生成输入代码以及输出代码,利用规则引擎技术可以实现ETL处理的配置,无需人工编写代码,输入、处理以及输出均可以采用配置方式实现,配置简单且容易理解,从而提高了程序开发效率。且通过输入类型以及输出类型的可配置化,使得本实施例的程序开发方式适用性更广。
此外,为了方便进一步提高程序开发效率,在某些实施例中,该装置还可以包括:
类型显示模块,用于显示多个输入类型以及多个输出类型;
类型确定模块,用于响应于分别针对所述多个输入类型以及所述多个输出类型的选择,确定所述源数据的输入类型以及所述源数据的期望输出类型。
本申请实施例中,为了进一步提高ETL处理效率,可以利用分布式系统进行ETL处理,该分布式系统由主节点以及多个子节点构成,主节点负责调度各个子节点,子节点负责处理主节点分配的源数据。该分布式系统例如可以为Spark Streaming。
因此,在某些实施例中,该装置还可以包括:
程序发送模块,用于将所述可执行程序以及所述ETL处理规则发送至分布式系统,以供所述分布式系统中的子节点运行。
本申请实施例还提供了一种ETL处理装置,如图7所述,该装置可以包括:
输入模块701,用于获取源数据;
规则解析模块702,用于调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本;其中,所述ETL处理规则根据所述源数据的待处理对象,利用规则处理函数配置获得;
此外,规则解析模块具体是根据所述源数据的数据标识信息,获取对应的ETL处理规则。源数据的数据标识信息可以是用户提供的。
脚本执行模块703,用于利用所述ETL处理脚本处理所述源数据,获得处理数据;
输出模块704,用于输出所述处理数据。
在某些实施例中,所述输入模块可以包括:
获取单元,获取预配置的输入类型对应的源数据;
第一转换单元,用于转换所述源数据的类型为预处理类型。
获取单元可以具体是根据预配置的输入类型以及数据路径信息获取对应的源数据。输入类型预配置在可执行程序中,而数据路径信息可以是可执行程序运行时由用户提供,数据路径信息可以动态设置,从而使得可执行程序的适用性更广。
在某些实施例中,所述输出模块包括:
第二转换单元,用于转换所述处理数据的类型为预配置的期望输出类型;
输出单元,用于输出转换之后的所述处理数据。
为了进一步提高ETL处理效率,可以利用分布式系统进行ETL处理,该分布式系统由主节点以及多个子节点构成,因此,在某些实施例中,输入模块具体可以用于获取分布式系统的主节点分配的源数据。因此,在实际应用中,本申请实施例提供的ETL处理装置可以配置在分布式系统的子节点中。
通过本申请实施例的技术方案,简化了程序开发过程,采用配置方式配置ETL处理规则,简单且容易理解,无需采用人工编写代码的方式,提高了程序开发效率。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。
Claims (21)
1.一种程序开发方法,其特征在于,包括:
根据源数据的待处理对象,利用规则处理函数配置抽取-转换-装载ETL处理规则;
生成所述源数据的可执行程序;其中,所述可执行程序用于调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
2.根据权利要求1所述的方法,其特征在于,所述可执行程序生成步骤包括:
根据所述源数据的输入类型,利用代码生成技术生成输入代码;
根据所述源数据的期望输出类型,利用代码生成技术生成输出代码;
基于所述输入代码、所述输出代码以及主流程代码,生成所述可执行程序;所述主流程代码规定了所述规则引擎的调用。
3.根据权利要求2所述的方法,其特征在于,所述可执行程序生成步骤之前还包括:
显示多个输入类型以及多个输出类型;
响应于分别针对所述多个输入类型以及所述多个输出类型的选择,确定所述源数据的输入类型以及所述源数据的期望输出类型。
4.根据权利要求1所述的方法,其特征在于,所述ETL处理规则配置步骤之前还包括:
显示多个函数;
响应于针对所述多个函数的选择,确定被选择的规则处理函数。
5.根据权利要求1所述的方法,其特征在于,所述规则处理函数利用所述规则引擎支持的程序语言编译获得。
6.根据权利要求1所述的方法,其特征在于,所述ETL处理规则配置步骤包括:
接收配置请求;所述请求中携带所述源数据的待处理对象;
根据所述源数据的待处理对象,利用规则处理函数配置ETL处理规则。
7.根据权利要求1所述的方法,其特征在于,所述ETL处理规则配置步骤包括:
将源数据的待处理对象作为规则处理函数的处理参数,以生成ETL处理规则。
8.根据权利要求1所述的方法,其特征在于,还包括:
将所述可执行程序以及所述ETL处理规则发送至分布式系统,以供所述分布式系统中的子节点运行。
9.一种ETL处理方法,其特征在于,包括:
获取源数据;
调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本;其中,所述ETL处理规则根据所述源数据的待处理对象,利用规则处理函数配置获得;
利用所述ETL处理脚本处理所述源数据,获得处理数据;
输出所述处理数据。
10.根据权利要求9所述的方法,其特征在于,所述获取源数据包括:
获取预配置的输入类型对应的源数据;
转换所述源数据的类型为预处理类型。
11.根据权利要求9或10所述的方法,其特征在于,所述处理数据输出步骤包括:
转换所述处理数据的类型为预配置的期望输出类型;
输出转换之后的所述处理数据。
12.根据权利要求9所述方法,其特征在于,所述获取源数据包括:
获取分布式系统的主节点分配的源数据。
13.一种程序开发装置,其特征在于,包括:
规则配置模块,用于根据源数据的待处理对象,利用规则处理函数配置抽取-转换-装载ETL处理规则;
程序生成模块,用于生成所述源数据的可执行程序;其中,所述可执行程序用于调用规则引擎解析所述ETL处理规则,以生成ETL处理脚本。
14.根据权利要求13所述的装置,其特征在于,所述程序生成模块包括:
输入代码生成单元,用于根据所述源数据的输入类型,利用代码生成技术生成输入代码;
输出代码生成单元,用于根据所述源数据的期望输出类型,利用代码生成技术生成输出代码;
程序生成单元,用于基于所述输入代码、所述输出代码以及主流程代码,生成所述可执行程序;所述主流程代码规定了所述规则引擎的调用。
15.根据权利要求14所述的装置,其特征在于,还包括:
类型显示模块,用于显示多个输入类型以及多个输出类型;
类型确定模块,用于响应于分别针对所述多个输入类型以及所述多个输出类型的选择,确定所述源数据的输入类型以及所述源数据的期望输出类型。
16.根据权利要求13所述的装置,其特征在于,还包括:
函数输出模块,用于显示多个函数;
函数确定模块,用于响应于针对所述多个函数的选择,确定被选择的规则处理函数。
17.根据权利要求13所述的装置,其特征在于,所述规则配置模块包括:
对象接收单元,用于接收配置请求;所述请求中携带所述源数据的待处理对象;
规则配置单元,用于根据所述源数据的待处理对象,利用规则处理函数配置ETL处理规则。
18.根据权利要求13所述的装置,其特征在于,所述规则配置模块具体用于将源数据的待处理对象作为规则处理函数的处理参数,以生成ETL处理规则。
19.一种ETL处理装置,其特征在于,包括:
输入模块,用于获取源数据;
规则解析模块,用于调用规则引擎解析预配置的ETL处理规则,以生成ETL处理脚本;其中,所述ETL处理规则根据所述源数据的待处理对象,利用规则处理函数配置获得;
脚本执行模块,用于利用所述ETL处理脚本处理所述源数据,获得处理数据;
输出模块,用于输出所述处理数据。
20.根据权利要求19所述的装置,其特征在于,所述输入模块包括:
获取单元,获取预配置的输入类型对应的源数据;
第一转换单元,用于转换所述源数据的类型为预处理类型。
21.根据权利要求19或20所述的装置,其特征在于,所述输出模块包括:
第二转换单元,用于转换所述处理数据的类型为预配置的期望输出类型;
输出单元,用于输出转换之后的所述处理数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611146167.4A CN107092474B (zh) | 2016-12-13 | 2016-12-13 | 程序开发方法、etl处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611146167.4A CN107092474B (zh) | 2016-12-13 | 2016-12-13 | 程序开发方法、etl处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092474A true CN107092474A (zh) | 2017-08-25 |
CN107092474B CN107092474B (zh) | 2021-04-30 |
Family
ID=59648708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611146167.4A Active CN107092474B (zh) | 2016-12-13 | 2016-12-13 | 程序开发方法、etl处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107092474B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704597A (zh) * | 2017-10-13 | 2018-02-16 | 携程旅游网络技术(上海)有限公司 | 关系型数据库至Hive的ETL脚本创建方法 |
CN110569090A (zh) * | 2018-06-05 | 2019-12-13 | 中移(苏州)软件技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN110618988A (zh) * | 2019-09-20 | 2019-12-27 | 中国银行股份有限公司 | 基于大数据平台的数据处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364240A (zh) * | 2008-10-14 | 2009-02-11 | 杭州华三通信技术有限公司 | 元数据管理方法及装置 |
CN101763261A (zh) * | 2009-12-28 | 2010-06-30 | 山东中创软件商用中间件股份有限公司 | 数据抽取、转换和加载方法、系统及装置 |
CN102508912A (zh) * | 2011-11-09 | 2012-06-20 | 深圳市同洲电子股份有限公司 | 数据提取、转化和加载的方法及系统 |
-
2016
- 2016-12-13 CN CN201611146167.4A patent/CN107092474B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364240A (zh) * | 2008-10-14 | 2009-02-11 | 杭州华三通信技术有限公司 | 元数据管理方法及装置 |
CN101763261A (zh) * | 2009-12-28 | 2010-06-30 | 山东中创软件商用中间件股份有限公司 | 数据抽取、转换和加载方法、系统及装置 |
CN102508912A (zh) * | 2011-11-09 | 2012-06-20 | 深圳市同洲电子股份有限公司 | 数据提取、转化和加载的方法及系统 |
Non-Patent Citations (1)
Title |
---|
柯光领: "基于代码生成的组件化通用ETL工具", 《信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704597A (zh) * | 2017-10-13 | 2018-02-16 | 携程旅游网络技术(上海)有限公司 | 关系型数据库至Hive的ETL脚本创建方法 |
CN110569090A (zh) * | 2018-06-05 | 2019-12-13 | 中移(苏州)软件技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN110618988A (zh) * | 2019-09-20 | 2019-12-27 | 中国银行股份有限公司 | 基于大数据平台的数据处理方法及装置 |
CN110618988B (zh) * | 2019-09-20 | 2022-09-23 | 中国银行股份有限公司 | 基于大数据平台的数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107092474B (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11734584B2 (en) | Multi-modal construction of deep learning networks | |
CN106648662B (zh) | 基于工程造价计算描述语言bcl的报表生成装置及生成方法 | |
US20140282444A1 (en) | Programming language transformations with abstract syntax tree extensions | |
US7505951B2 (en) | Hierarchical state machine generation for interaction management using goal specifications | |
CN111290778B (zh) | Ai模型的包装方法、平台及电子设备 | |
CN104020994B (zh) | 基于流系统的流过程定义装置和流过程定义方法 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN106547527B (zh) | 一种JavaScript文件构建方法及装置 | |
CN109491658A (zh) | 计算机可执行代码数据的生成方法及装置 | |
TW201246071A (en) | Unrolling quantifications to control in-degree and/or out degree of automation | |
CN107909998A (zh) | 语音指令处理方法、装置、计算机设备和存储介质 | |
CN110941427B (zh) | 代码生成方法及代码生成器 | |
AU2014315619B2 (en) | Methods and systems of four-valued simulation | |
US10338901B2 (en) | Translation of a visual representation into an executable information extraction program | |
CN106528896B (zh) | 一种数据库优化方法和装置 | |
WO2013029399A1 (zh) | 代码生成方法及系统 | |
CN107341102A (zh) | 一种测试用例文件生成方法及装置 | |
US20170300305A1 (en) | Executable guidance experiences based on implicitly generated guidance models | |
CN107092474A (zh) | 程序开发方法、etl处理方法及装置 | |
CN108197027A (zh) | 软件性能优化方法、可存储介质、计算机、计算机程序 | |
CN107479866A (zh) | 基于重构技术实现开放终端应用数据与功能的方法 | |
CN104866310A (zh) | 知识数据的处理方法和系统 | |
CN110795165A (zh) | 一种神经网络模型数据的加载方法及相关装置 | |
CN106484488A (zh) | 一体化云编译方法和系统 | |
CN115904480B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100096 building N3, Jinyu Zhizao workshop, 27 Jiancai Chengzhong Road, Haidian District, Beijing Applicant after: Beijing Xingxuan Technology Co.,Ltd. Address before: Room 202, 2 floors, 1-3 floors, No. 11 Shangdi Information Road, Haidian District, Beijing 100085 Applicant before: Beijing Xiaodu Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |