数据集成:将数据带入标准格式

时间:2014-07-28 08:06:33

标签: etl data-warehouse talend data-integration

我正在尝试使用ETL工具(Talend)进行数据集成过程。

我面临的挑战是当我尝试将来自不同来源(以不同格式)的数据转换为单一格式时。

源可能具有不同的列名和结构(顺序,数据类型等)。所以元数据不同。 我认为,这是一个非常常见的情况。但该工具无法处理它,因为它不提供任何动态映射功能。

处理此类情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

Talend确实提供了动态映射工具。它被称为XML数据的tMap或tXmlMap。

还有tHMap(分层映射工具)功能强大得多,但我还没有使用它,因为它在我使用的Talend版本(5.4)中非常原始,但应该更有用5.5。

这里最好的方法可能是在每个组件之后使用tMap来标准化数据架构。

首先,您应该选择输出模式应该是什么样的(这可能与您当前的模式之一相同或必要时完全不同),然后只需将模式复制并粘贴到每个tMap的输出表中。然后将相关数据映射到。

示例作业可能如下所示:

Example job layout

每个“文件”的模式和包含数据(我使用tFixedFlowInput组件将数据硬编码到作业而不是在文件中读取但前提是相同的)如下所示:

文件1: file1 schema and data 文件2: file2 schema and data 档案3: file 3 schema and data

然后映射它们以匹配第一个“文件”的模式:

文件1: file1 tMap configuration 文件2: file2 tMap configuration 档案3: file1 tMap configuration

注意第一个tMap配置如何显示没有变化,因为我们保持模式完全相同。

现在我们的输入都共享相同的模式,我们可以使用tUnite组件来联合(很像SQL的UNION运算符)数据。

在此之后,我们还采取最后一步并使用tReplace组件,以便我们可以轻松地将“性别”字段标准化为MF

tReplace configuration to map "male" to "M" and "female" to "F"

最后我将其输出到控制台,但这可以输出到任何可用的输出组件。

对于真正动态的选项,无需预先定义映射,您需要使用动态模式读取所有数据。然后,您可以将结构解析为定义的输出。

在这种情况下,您可以将文件中的数据作为动态模式(单列)读取,然后将其直接放入临时数据库表中。 Talend将根据原始文件中的标题自动创建列。

然后,您可以使用转换映射文件和数据库的数据字典来提取源列中的数据,并将其直接映射到输出列。