如何在talend模式中引用子对象

时间:2016-06-22 19:50:32

标签: salesforce talend soql

所以我有以下SOQL查询,其中包含ActivityHistories对象的Account关系:

SELECT Id, Name, ParentId, (SELECT Description FROM ActivityHistories) 
  FROM Account 
  WHERE Name = '<some client>'

此查询仅在SOQLXplorer中工作,并在ActivityHistories项下返回5个嵌套行。在Talend中,我按照this page的说明访问子对象(尽管该示例使用查询“up”语法,而不是查询“down”语法。我的模式映射如下: Talend schema mapping

查询返回父Account行,但不返回子查询中的ActivityHistory行:

Starting job GetActivities at 15:43 22/06/2016.
[statistics] connecting to socket on port XXXX
[statistics] connected
0X16000X00fQd61AAC|REI||
[statistics] disconnected
Job GetActivities ended at 15:43 22/06/2016. [exit code=0]

是否可以使用Talend引用子行?如果是这样,架构的语法是什么?如果没有,我如何解析这些数据以获取每个Description的{​​{1}}字段?非常感谢任何帮助。

更新:我写了一个小python script来提取Account记录并将其转储到一个文件中,然后使用ActivityHistory来提取CSV,然后继续我的流程。但这似乎非常 kludgey。还有更好的选择吗?

2 个答案:

答案 0 :(得分:2)

我从代码的角度进行了一些调试,看来如果指定了正确的列名,您将获得正确的响应。对于您的示例,它应该是:Account_ActivityHistories_records_Description

tLogRow的输出类似于:

00124000009gSHvAAM|Account1|tests;Lalalala

如您所见,所有子元素的描述都存储为1个字符串,由分号分隔。您可以在SalesforceInput上的“高级设置”视图中更改分隔符。

答案 1 :(得分:0)

我编写了一个小的python脚本(source gist here)来提取ActivityHistory记录并将它们转储到文件中(命令行参数),然后使用tFileInput来提取CSV然后继续我的过程。