繁体   English   中英

在Talend Open Studio for Data Integration中一次处理一组行

[英]Processing a single group of rows at once in Talend Open Studio for Data Integration

我有一个数据源,其中每一行都有五个字段:

company name; year; code; value;

在我的目标输出行模型中,我想产生一个像这样的行

company name;year;value1;value2;value3;value4

其中,value1,value..N不是单个代码的串联,而是“映射”。 即代码50 =>“总收入”

所以我需要执行以下逻辑:

  1. 首先选择同一公司名称/年份的所有记录
  2. 然后应用一些自定义的Java逻辑来执行我的代码和我的输出行字段之间的映射。

这是一个内存映射减少约1M行。 在Talend Open Studio for Data Integration中应如何处理?

选择同一公司名称/年份的所有记录

您可能想使用tAggregatehttps://help.talend.com/display/TalendOpenStudioComponentsReferenceGuide521EN/18.1+tAggregateRow )按公司名称和年份对流程进行分组

应用一些自定义的Java逻辑来执行我的代码和我的输出行字段之间的映射。

Talend有一个名为tMap的组件,它允许您将输入字段映射到输出字段。

在您的tMap您可以使用以下方法:

(假设input是进入tMap的流程的名称, output是离开tMap流程的名称)

output.field1放入input.code == 50? input.value : 0 input.code == 50? input.value : 0

output.field2放入input.code == 60? input.value : 0 input.code == 60? input.value : 0

output.field2放入input.code == 70? input.value : 0 input.code == 70? input.value : 0

等等

这是假设如果该value是用于另一个code则可以将field列保留为0

如果希望每个codevalue位于tMap的不同输出行中,则可以使用与上述类似的逻辑,仅将每个测试( code == 70? input.value : 0 )放在不同的输出表中,然后滤除tMap之后具有0的行(使用tFilter )。

要添加输出表,可以使用tMap右上方的+符号。

有关如何使用tMap更多详细信息,请参见此处: https : //help.talend.com/display/TalendOpenStudioComponentsReferenceGuide54EN/tMap

我希望这有帮助!

您可以那样做,这实际上是Maira Bay已经建议的方法:

  1. 设置数据源以一次发出这些行。 tFixedFlowInput使用了tFixedFlowInput 您可能必须从文件中读取。
  2. (可选)使用tSortRow按公司名称和年份排序。
  3. 使用tMap将每行的值映射到结果行中相应的列,并带有保护子句,例如input.code.equals("code for this column") ? input.value : null input.code.equals("code for this column") ? input.value : null
  4. 使用tAggregateRow汇总行,按公司名称和年份分组,为每个值行选择第一个值-但请确保忽略空值。
  5. 对结果行执行任何您想要的操作。

我尝试了一些示例数据,因此在步骤1中使用了tFixedFlowInput ,它在TOS 6.3.1中的我的机器上对我tFixedFlowInput

当心:建议的解决方案假设您仅通过公司名称,年份和代码的组合获得一个价值。

请参阅下面的解决方案,我相信它将满足您采用分隔文件数据源并将其转换为如上所述的非规范化输出的精确要求。

首先,我模拟了与您指定格式相同的文件。 我将值设置为Company,Year和sequence的逻辑连接。 这使得验证输出变得容易。

在此处输入图片说明

接下来,我将其用作输入,通过分选器运行它,然后在value字段上进行非规范化。 最后,您可以在tLogRow看到输出。

在此处输入图片说明

我还包括了tDenormalize的组件视图,因此您可以看到它是如何完成的。 您可以在Talend Open Studio任何支持下使用此技术。
在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM