如何在 talend schema 中引用子对象

How to reference sub-objects in talend schema

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

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

此查询仅在 SOQLXplorer and returns 5 nested rows under the ActivityHistories key. In Talend, I am following the instructions from this page 中有效以访问子对象(尽管该示例使用查询 "up" 语法,而不是查询 "down" 语法。我的架构映射是如下:

查询 returns 父 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 引用子行?如果是这样,模式的语法是什么?如果没有,我怎样才能在某些时候解压这些数据以获得每个 AccountDescription 字段?非常感谢任何帮助。

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

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

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

tLogRow 的输出类似于:

00124000009gSHvAAM|Account1|tests;Lalalala

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