技术领域
[0001] 本发明涉及计算机技术领域,尤其涉及一种数据融合方法及装置。
相关背景技术
[0002] 大数据是一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,它具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。大数据的数据表(或数据集)的每个属性就是一个维度,每个维度都具备自己的取值范围和数据类型。多维数据表的属性可以达到几千、几万甚至几十万。
[0003] 数据融合是一种对已有的大规模多维数据进行合理、有效地整合、转换、去重和清洗处理的技术,数据融合的过程可以看作是降熵的过程。相关技术中,针对每种业务需求,分别人工编写数据融合程序代码,来对数据进行融合处理。当数据种类特别多的时候,代码量非常巨大。这种方式由于需要较多的人工操作,耗费时间较多,导致处理效率低下。
具体实施方式
[0023] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0024] 在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0025] 应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0026] 图1是本发明实施例提供的一种数据融合方法的流程示例图。如图1所示,本实施例中,数据融合方法可以包括:
[0027] S101,确定当前数据融合业务所需的多个目标数据处理组件,以及确定每个目标数据处理组件对应的参数的参数值,目标数据处理组件为预设的数据融合组件库中的组件,数据融合组件库中的每个组件对应一组代码。
[0028] 数据融合是指在一定准则下,利用计算机技术进行的信息处理过程。数据融合业务即进行数据融合相关的信息处理的业务。
[0029] 本实施例中,数据处理组件是对数据进行某一种处理的代码的集合。例如,清洗组件是用于对数据进行清洗的代码的集合,转换组件是用于对数据进行转换的代码的集合,去重组件是用于对数据进行去重的代码的集合。
[0030] 本实施例的数据融合方法可以应用于服务器。假设服务器1中存储有表1,服务器2中存储有表2,本实施例的数据融合方法部署于服务器3中。则服务器3可以根据当前数据融合业务需要,获取多个目标数据处理组件,生成数据融合程序,利用该数据融合程序对从表1和表2读取的数据进行处理,获得数据融合结果。通过步骤S101,可以将数据融合涉及到的所有数据处理操作分别用一个组件表示,通过组件所对应的代码将该数据处理操作封装起来,将所有组件都放置到数据融合组件库中。这样,当确定了一个具体数据融合过程所需的具体数据处理组件时,就可以直接使用该具体数据处理组件对应的代码,而免去了重新编写代码的麻烦,从而可以节省时间。S102,获取多个目标数据处理组件之间的关联信息,关联信息用于指示多个目标数据处理组件之间的逻辑连接关系。
[0031] 通过步骤S102,获取到多个目标数据处理组件之间的关联信息后,由于关联信息指示了多个目标数据处理组件之间的逻辑连接关系,因此据此可以确定该多个目标数据处理组件对应的代码在整个数据融合程序中的执行顺序。
[0032] 例如,假设目标数据处理组件有3个:组件1、组件2和组件3。该3个组件之间的关联信息指示组件1与组件3逻辑连接、组件2与组件1逻辑连接,且组件2的输出是组件1的输入,组件1的输出是组件3的输入。则组件1、组件2和组件3对应的代码在整个数据融合程序中的执行顺序是:组件2、组件1、组件3。
[0033] S103,根据目标数据处理组件对应的代码、参数值以及关联信息,生成目标数据融合程序。
[0034] 通过S103,根据目标数据处理组件对应的代码、参数值以及关联信息,可以自动生成目标数据融合程序。不需要人工编写数据融合程序,既节省了人力又缩短了生成数据融合程序所需的时间,从而节省了整个数据融合过程的用时,提高了处理效率[0035] S104,基于目标数据融合程序对数据进行融合处理。
[0036] 本实施例中,数据处理组件与其代码之间的对应关系可以保存在对应关系表中。也可以为每个数据处理组件设置一个指向其对应代码存储位置的指针,通过该指针可以获取到数据处理组件对应的代码。
[0037] 其中,数据融合组件库中的组件可以包括类型转换组件、转换组件、清洗组件、去重组件、排序组件、融合组件、拆分组件、截取组件、抽样组件、筛选组件等等。
[0038] 对于数据融合组件库中的每个组件,还可以设置组件对应的参数。这些参数的参数值对于不同的数据融合过程或处理对象来说是不同的,因此在面对具体的业务需求时,可以根据该具体的业务需求确定相应数据处理组件的参数的参数值。
[0039] 例如,假设数据处理组件A有两个参数:a和b。在业务需求1对应的数据融合程序中,参数a被赋值为a1,参数b被赋值为b1。在业务需求2对应的数据融合程序中,参数a被赋值为a2,参数b被赋值为b2。
[0040] 需要说明的是,步骤S101中,确定当前数据融合业务所需的多个目标数据处理组件应当理解为:确定当前数据融合业务的数据融合过程需要的全部数据处理组件,这些数据处理组件的数量为多个。
[0041] 当数据融合所需的多个目标数据处理组件以及每个目标数据处理组件对应的参数的参数值确定后,数据融合程序的代码就确定了,但是各部分代码在整个数据融合程序中的执行顺序还未确定,因此要得到完整的数据融合程序,还需要知道各部分代码之间的执行顺序,这个执行顺序可以通过多个目标数据处理组件之间的逻辑连接关系得到。
[0042] 当业务需求改变时,可以通过简单更换步骤S101中的目标数据处理组件和步骤S102中的关联信息,得到适应新业务需求的新的数据融合程序,而不需要人工修改大量的代码,灵活性高,健壮性强。
[0043] 在一个示例性的实现过程中,数据融合组件库中的每个组件具有对应的控件图标;步骤S101中,确定当前数据融合业务所需的多个目标数据处理组件,可以包括:根据对数据融合组件库中指定组件对应的控件图标的选择信息或拖拽信息,确定指定组件为当前数据融合业务的目标数据处理组件。
[0044] 例如,可以在数据融合程序的生成界面上通过点击指定操作选项打开数据融合组件库,库中的每个组件对应一个控件图标,当选中某个组件的控件图标时,该组件的控件就自动显示到数据融合程序的生成界面上的画图区域。或者,可以直接从数据融合组件库中组件对应的拖拽控件图标到数据融合程序的生成界面上的画图区域。
[0045] 在另一个示例中,还可以将目标数据处理组件的组件名称添加到一个指定表单中,该指定表单中的所有数据处理组件均确定为本次数据融合所需的目标数据处理组件。
[0046] 在一个示例性的实现过程中,步骤S101中,获取多个目标数据处理组件之间的关联关系,可以包括:获取由多个目标数据处理组件组成的DAG(Directed Acyclic Graph,有向无环图)图,该DAG图包括节点和有向边,其中,节点表示目标数据处理组件,有向边表示数据流方向;根据有向边确定多个目标数据处理组件之间的关联关系。
[0047] 一方面,DAG图的有向边指示了哪两个数据处理组件之间存在关联。另一方面,DAG图的有向边还指示了数据流的方向,根据数据流的方向可以确定相关数据处理组件所对应代码的执行顺序。例如,DAG图中的目标数据处理组件B和目标数据处理组件C之间存在一条由B指向C的有向边,则说明目标数据处理组件B和目标数据处理组件C之间存在关联,并且目标数据处理组件B对应的代码先于目标数据处理组件C对应的代码执行,且处理组件B的输出数据作为目标数据处理组件C的输入数据。
[0048] 在上述基础上,在一个示例性的实现过程中,获取由多个目标数据处理组件组成的DAG图,可以包括:根据在DAG图中的指定节点添加目标数据处理组件的操作信息,确定DAG图的节点;根据在DAG图中的两个节点之间连线的操作信息,确定DAG图的有向边。通过本示例,用户可以通过在指定界面上绘制DAG图,来表明各目标数据处理组件之间的关联信息。DAG图直观易懂,可以非常清晰地表明各目标数据处理组件之间的逻辑连接关系。
[0049] 在本发明其他实施例中,获取多个目标数据处理组件之间的关联关系的方式还可以是:通过关联关系表得到多个目标数据处理组件之间的关联关系。其中,关联关系表的示例可以如表1所示:
[0050] 表1
[0051]输出端口 输入端口
组件A端口2 组件C端口1
[0052] 表1的内容说明:组件A与组件C之间有连接,并且连接的方向是组件A指向组件C,组件A对应的代码先于组件C对应的代码执行,组件A处理后所得的数据从组件A的端口2输出,并通过组件C的端口1输入组件C。
[0053] 在一个示例性的实现过程中,确定目标数据处理组件对应的参数的参数值方式可以包括:接收针对目标数据处理组件对应的参数的输入参数值;将参数的参数值设置为输入参数值。
[0054] 例如,可以通过双击目标数据处理组件对应的控件图标来弹出参数配置窗口,在该参数配置窗口中提供参数值输入栏或参数值选择栏,用户通过参数值输入栏输入具体参数值,或通过参数值选择栏选择具体参数值。
[0055] 下面通过示例对本发明实施例的数据融合方法作进一步详细说明。
[0056] 图2是本发明实施例提供的示例DAG图。如图2所示,生成数据融合程序的过程如下:
[0057] (1)选择数据融合程序所需的各个目标数据处理组件:读表组件、清洗组件、转换组件、融合组件、去重组件、排序组件和写表组件,并确定各个组件的参数值。
[0058] 例如,图2中,同样是读表组件,节点1中读表组件的参数值是表1,节点4中读表组件的参数值是表2,节点8中读表组件的参数值是表3。
[0059] (2)获取(1)中选择的各个组件之间的关联信息。
[0060] 该关联关系可以用各组件所在的节点的关联关系表示,例如,节点1(读表组件)的输出连接节点2(清洗组件)的输入,节点2(清洗组件)的输出连接节点3(转换组件)的输入,节点3(转换组件)的输出连接节点6(融合组件)的输入……,该关联关系可以采用表1的形式表示。
[0061] (3)根据所选组件对应的代码、参数值以及(2)中的关联信息,生成数据融合程序。
[0062] 例如,可以将各个组件的代码封装在一个函数中,组件的参数值作为函数的参数值,主程序用调用语句连接各个组件对应的函数,主程序根据各个组件之间的关联信息(表示为各个节点之间的连接关系)确定执行的节点。
[0063] 以图2中的节点1、2、3为例。假设读表组件的函数名为Q,则读表组件的代码封装在函数Q中,读表组件的参数值为表1,表1的名称为table1,当调用函数Q(table1)就实现了对表1数据的读取操作;假设清洗组件的函数名为P,清洗组件的代码封装在函数P中,清洗组件的参数值为节点1的输出;假设转换组件的函数名为S,转换组件的代码封装在函数S中,转换组件的参数值为节点2的输出。则节点1、2、3部分的数据融合程序如下:
[0064] 主程序main执行到节点1;
[0065] 主程序main通过函数调用语句调用函数Q(table1);
[0066] 主程序main接收函数Q(table1)的执行结果a;
[0067] 主程序main根据节点1与节点2的连接关系,确定执行节点2;
[0068] 主程序main将a传递给函数P,并通过函数调用语句调用函数P(a);
[0069] 主程序main接收函数P(a)的执行结果b;
[0070] 主程序main根据节点2与节点3的连接关系,确定执行节点3;
[0071] 主程序main将b传递给函数S,并通过函数调用语句调用函数S(b);
[0072] 主程序main接收函数S(b)的执行结果c;
[0073] ……
[0074] 主程序按照图2所示的各节点之间的连接关系执行各个节点对应的代码,最终通过节点12输出整个数据融合程序的结果。
[0075] 本发明实施例提供的数据融合方法,通过确定当前数据融合业务所需的多个目标数据处理组件以及每个目标数据处理组件对应的参数的参数值,获取多个目标数据处理组件之间的关联信息,根据目标数据处理组件对应的代码、参数值以及关联信息,生成目标数据融合程序,基于目标数据融合程序对数据进行融合处理,将复杂耗时的数据融合程序编写过程用简单的模块化的组件组合代替,自动生成程序,不需要人工编写程序代码,缩短了获得数据融合程序所需的时间,因此提高了数据融合的处理效率。
[0076] 并且,本发明实施例提供的数据融合方法,可以通过简单更换目标数据处理组件及其关联信息,得到适应新业务需求的新的数据融合程序,灵活适应不同的业务需求,不需要人工修改大量代码,灵活性高,健壮性强。
[0077] 基于上述的数据融合方法实施例,本发明实施例还提供了相应的装置、设备及存储介质实施例。
[0078] 图3是本发明实施例提供的数据融合装置的功能方块图。如图3所示,本实施例中,数据融合装置可以包括:
[0079] 组件确定模块310,用于确定当前数据融合业务所需的多个目标数据处理组件,以及确定每个目标数据处理组件对应的参数的参数值,目标数据处理组件为预设的数据融合组件库中的组件,数据融合组件库中的每个组件对应一组代码;
[0080] 关系获取模块320,用于获取多个目标数据处理组件之间的关联信息,关联信息用于指示多个目标数据处理组件之间的逻辑连接关系;
[0081] 程序生成模块330,用于根据目标数据处理组件对应的代码、参数值以及关联信息,生成目标数据融合程序;
[0082] 数据融合模块340,用于基于目标数据融合程序对指定数据进行数据融合。
[0083] 在一个示例性的实现过程中,数据融合组件库中的每个组件具有对应的控件图标;组件确定模块310具体用于:根据对数据融合组件库中指定组件对应的控件图标的选择信息或拖拽信息,确定指定组件为当前数据融合业务所需的目标数据处理组件。
[0084] 在一个示例性的实现过程中,关系获取模块320具体用于:获取由多个目标数据处理组件组成的有向无环图DAG图,DAG图包括节点和有向边,节点表示目标数据处理组件,有向边表示数据流方向;根据有向边确定多个目标数据处理组件之间的关联关系。
[0085] 在一个示例性的实现过程中,关系获取模块320在用于获取由多个目标数据处理组件组成的DAG图时,可以具体用于:根据在DAG图中的指定节点添加目标数据处理组件的操作信息,确定DAG图的节点;根据在DAG图中的两个节点之间连线的操作信息,确定DAG图的有向边。
[0086] 在一个示例性的实现过程中,组件确定模块320确定目标数据处理组件对应的参数的参数值的方式可以包括:接收针对目标数据处理组件对应的参数的输入参数值;将所述参数的参数值设置为所述输入参数值。
[0087] 本发明实施例还提供了一种电子设备。图4是本发明实施例提供的电子设备的一个硬件结构图。如图4所示,电子设备包括:内部总线401,以及通过内部总线连接的存储器402,处理器403和外部接口404,其中,
[0088] 所述处理器403,用于读取存储器402上的机器可读指令,并执行所述指令以实现如下操作:
[0089] 确定当前数据融合业务所需的多个目标数据处理组件,以及确定每个目标数据处理组件对应的参数的参数值,目标数据处理组件为预设的数据融合组件库中的组件,数据融合组件库中的每个组件对应一组代码;
[0090] 获取多个目标数据处理组件之间的关联信息,关联信息用于指示多个目标数据处理组件之间的逻辑连接关系;
[0091] 根据目标数据处理组件对应的代码、参数值以及关联信息,生成目标数据融合程序;
[0092] 基于目标数据融合程序对数据进行融合处理。
[0093] 其中,电子设备可以是服务器。
[0094] 本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
[0095] 确定当前数据融合业务所需的多个目标数据处理组件,以及确定每个目标数据处理组件对应的参数的参数值,目标数据处理组件为预设的数据融合组件库中的组件,数据融合组件库中的每个组件对应一组代码;
[0096] 获取多个目标数据处理组件之间的关联信息,关联信息用于指示多个目标数据处理组件之间的逻辑连接关系;
[0097] 根据目标数据处理组件对应的代码、参数值以及关联信息,生成目标数据融合程序;
[0098] 基于目标数据融合程序对数据进行融合处理。
[0099] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0100] 上述对本发明特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0101] 本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0102] 应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
[0103] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。