[英]Talend Open Studio for Data Integration show error when creating metadata
[英]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 =>“总收入”
所以我需要执行以下逻辑:
这是一个内存映射减少约1M行。 在Talend Open Studio for Data Integration中应如何处理?
选择同一公司名称/年份的所有记录
您可能想使用tAggregate
( https://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
。
如果希望每个code
的value
位于tMap
的不同输出行中,则可以使用与上述类似的逻辑,仅将每个测试( code == 70? input.value : 0
)放在不同的输出表中,然后滤除tMap
之后具有0
的行(使用tFilter
)。
要添加输出表,可以使用tMap
右上方的+
符号。
有关如何使用tMap
更多详细信息,请参见此处: https : //help.talend.com/display/TalendOpenStudioComponentsReferenceGuide54EN/tMap
我希望这有帮助!
您可以那样做,这实际上是Maira Bay已经建议的方法:
tFixedFlowInput
使用了tFixedFlowInput
。 您可能必须从文件中读取。 tSortRow
按公司名称和年份排序。 tMap
将每行的值映射到结果行中相应的列,并带有保护子句,例如input.code.equals("code for this column") ? input.value : null
input.code.equals("code for this column") ? input.value : null
。 tAggregateRow
汇总行,按公司名称和年份分组,为每个值行选择第一个值-但请确保忽略空值。 我尝试了一些示例数据,因此在步骤1中使用了tFixedFlowInput
,它在TOS 6.3.1中的我的机器上对我tFixedFlowInput
。
当心:建议的解决方案假设您仅通过公司名称,年份和代码的组合获得一个价值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.