我正在尝试使用Talend Data Integration来获取Excel电子表格的行并使用电子表格中列出的电子邮件,以获取要使用的tSendMail组件的地址列表。
到目前为止,我有:tFileInputExcel - > tFlowToIterate - > tSendMail。
答案 0 :(得分:1)
你似乎走在了正确的轨道上。
当你收集时,你需要迭代地触发tSendMail组件。
Talend组件之间的正常行连接器将数据流从一个组件传递到下一个组件。如果你使用迭代链接,那么它将只发送第一行进行处理到其他子工作。
在这里,您基本上有一个Excel文件中的电子邮件地址列表,因此您希望遍历列表,将它们传递给tSendMail组件。
如果将tFlowToIterate组件连接到tFileInputExcel组件,则tFlowToIterate将有效地为输入文件中的每一行数据触发一次tSendMail组件。它实际上并没有直接传递任何数据。
相反,tFlowToIterate将数据移动到globalMap
,可以从任何下游组件读取数据。要使用这些数据,您可以使用((String)globalMap.get("row1.email"))
之类的内容访问它。如果按ctrl + space,例如," To" tSendMail组件中的字段Talend应显示可用变量列表:
在这里,您可以看到有关tFlowToIterate_1组件的一些元数据,以及"电子邮件"列,它是Excel文件架构的唯一列。如果我们选择此项,那么它会自动为我们提供组件的globalMap.get
(在我的情况下是前面提到的((String)globalMap.get("row1.email"))
,因为我将tFlowToIterate的复选框保留为默认值。)
然后,只需正确配置tSendMail组件并使用globalMap中的值作为" To"属性:
使用同样的想法,我们也可以做更复杂的事情。例如,我们可能在Excel文件中有一个自定义邮件正文,还有收件人的名称(也可能已经在tFlowToIterate之前从电子邮件地址解析),因此我们可以执行以下操作: