Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Talend中的父子关系_Talend_Data Integration_Tmap - Fatal编程技术网

Talend中的父子关系

Talend中的父子关系,talend,data-integration,tmap,Talend,Data Integration,Tmap,面对问题,在思考如何在塔伦德实施亲子关系的问题上缺乏思路 问题陈述: 具有包含以下格式数据的提要文件 MemberCode|LastName|FirstName A|SHINE|MICHAEL B|SHINE|MICHELLE C|SHINE|ERIN A|RODRIGUEZ|DAMIAN A|PAVELSKY|STEPHEN B|PAVELSKY|TERESA 有更多的列和更多的行-只有很少的行用于参考目的。 LastName和FirstName是不言自明的。Memb

面对问题,在思考如何在塔伦德实施亲子关系的问题上缺乏思路

问题陈述:

具有包含以下格式数据的提要文件

MemberCode|LastName|FirstName
A|SHINE|MICHAEL 
B|SHINE|MICHELLE 
C|SHINE|ERIN 
A|RODRIGUEZ|DAMIAN 
A|PAVELSKY|STEPHEN        
B|PAVELSKY|TERESA
有更多的列和更多的行-只有很少的行用于参考目的。 LastName和FirstName是不言自明的。MemberCode表示关系。A将是父级,B或C将是子级。对于某个员工记录,数据将始终以顺序的方式显示,这意味着完整的父子数据将以连续的行显示

预期结果:

以上数据需要以以下格式输出:

  MemberCode|MemberLastName|MemberFirstName|DependentLastName|DependentFirstName
A         |SHINE         |MICHAEL        |                 |                  
B         |SHINE         |MICHAEL        |SHINE            |MICHELLE          
C         |SHINE         |MICHAEL        |SHINE            |ERIN              
A         |RODRIGUEZ     |DAMIAN         |                 |                  
A         |PAVELSKY      |STEPHEN        |                 |                  
B         |PAVELSKY      |STEPHEN        |PAVELSKY         |TERESA            
到目前为止,我所尝试的:

Talend作业包含以下组件:tFileInputDelimited->tMap->tLogRow tMap具有以下逻辑- 这给了我如下的输出-

MemberCode|MemberLastName|MemberFirstName|DependentLastName|DependentFirstName
A         |SHINE         |MICHAEL        |                 |                  
B         |              |               |SHINE            |MICHELLE          
C         |              |               |SHINE            |ERIN              
A         |RODRIGUEZ     |DAMIAN         |                 |                  
A         |PAVELSKY      |STEPHEN        |                 |                  
B         |              |               |PAVELSKY         |TERESA
如何为具有MemberCode B或C的行复制MemberCode A的MemberFirstName和MemberLastName的值。请提前感谢


平台:Talend Open Studio for Data Integration版本:6.5.1

您需要根据行的成员代码将行拆分为父行和子行。将父项写入文件时,DependentLastName和DependentFirstName为空,同时将父项信息保存到tSetGlobalVar中的全局变量ParentLastName和ParentFirstName中

当您移动到下一行(即子行)时,您的父行已被保存,因为它始终是组中的第一行。因此,您可以使用子输出中的全局变量检索它的名字和姓氏,并将其写入同一个物理文件

两个tFileOutputDelimited组件具有相同的设置;它们处于追加模式,并将“自定义刷新缓冲区大小”选项设置为1,这对于保持行按正确顺序排序非常重要。

由@iMezouar提供的解决方案工作正常。发布另一种替代方式

工作布局:

使用的方法是捕获前面的行值LastName和FirstName,并将它们存储在tMap内的变量中,然后将它们用于输出行