2015-01-14 2 views
1

У меня есть следующие объекты с соответствующими полями в Salesforce:Upsert к Salesforce со ссылками Внешние ID не работает

Prospect__c Data_Migration_ID__c (внешний ID)

Marketing_Source__c Data_Migration_ID__c (внешний ID)

Lead_Source__c Data_Migration_ID__c (внешний идентификатор) Prospect__c (ссылка на Prospect__c) Источник__c (ссылка на Marketing_Source__c)

В моих исходных данных (CSV) для Lead Source у меня есть внешние идентификаторы для Перспективы и Маркетингового источника в Lead_Source__c.Prospect__c и Lead_Source__c.Source__c, соответственно. Я следил за инструкциями в http://blog.wdcigroup.net/2013/10/talen ... компоненте /, а также с любыми советами, которые я смог найти на форумах, чтобы загрузить данные моего источника. Я могу заставить его работать с загрузчиком данных, поэтому я знаю, что данные действительны. Но всякий раз, когда я запускаю работу, я получаю следующий результат:

Exception in component tSalesforceOutputBulkExec_1_tSBE 
[AsyncApiException exceptionCode='InvalidBatch' 
exceptionMessage='Records not processed' 
] 

    at com.sforce.async.BulkConnection.parseAndThrowException(BulkConnection.java:108) 
    at com.sforce.async.BulkConnection.doHttpGet(BulkConnection.java:472) 
    at com.sforce.async.BulkConnection.getBatchResultStream(BulkConnection.java:369) 
    at org.talend.salesforceBulk.SalesforceBulkAPI.getBatchLog(SalesforceBulkAPI.java:428) 
    at test.lead_source__c_0_1.Lead_Source__c.tFileInputDelimited_1Process(Lead_Source__c.java:2132) 
    at test.lead_source__c_0_1.Lead_Source__c.runJobInTOS(Lead_Source__c.java:2839) 
    at test.lead_source__c_0_1.Lead_Source__c.main(Lead_Source__c.java:2688) 

Я использую Talend 5.5.1.r118616-20140617-1110

ответ

2

Я нашел ответ.

Инструкции указаны в поле http://blog.wdcigroup.net/2013/10/talend-tsalesforceoutputbulkexec-component/, но я ссылался на неправильное поле. Когда в инструкциях говорится о переходе на вкладку «Дополнительные параметры» компонента tSalesforceOutputBulkExec, в нем говорится, что «имя поля поиска» является полем поиска между объекты Contact и Account в Salesforce. Следовательно, это будет поле Account в объекте Contact. " Я использовал «Prospect__c» и «Source__c» в качестве имен полей поиска. Я должен был использовать «Prospect__r» и «Source__r», поскольку они, по-видимому, являются реальными полями поиска - по крайней мере для этих пользовательских объектов.

У нас был Pervasive, который позволил нам использовать синтаксис "(Object: ExternalID: Value)" [so "(Prospect__c: Data_Migration_ID__c: 1)", например] как значение в инструкции insert. Мне никогда не приходилось иметь дело с ссылочными полями, но я нашел некоторые заметки о них в некоторых блогах и форумах разработчиков Salesforce и подумал, что это стоит того.

Смежные вопросы