Выгрузка данных Azure в Salesforce и справочное поле другого объекта - PullRequest
0 голосов
/ 05 декабря 2018

Это сценарий - мы используем Azure DataFactoryV2 для запуска ряда конвейеров, которые принимают данные учетной записи из локального источника данных, преобразуют их и загружают в Salesforce.

В настоящее время мы хотим импортировать учетную запись исвязать это с другой учетной записью.Существует стандартное отношение «родитель / потомок» для учетных записей (например, учетная запись посредника и дочерняя учетная запись), и для этого используется внутренний идентификатор Salesforce.

Мы также используем внешний идентификатор для целей Upserting и этот идентификаторуникален для каждой записи.

Согласно документации SF: Здесь - когда вы вручную вызываете API и передаете ему файл JSON, вы можете добавить связь в JSON:

    {
   "Name" : "NewAccount",
   "account__r" :
   {
       "Ext_UID__c" : 123
   }

}

Однако в Azure DataFactoryV2 кажется невозможным указать отношение поиска в коде, или, если это так, я не уверен, как это сделать.

Для справки - вот код JSON конвейера:

{
"name": "Import_to_Salesforce",
"properties": {
    "activities": [
        {
            "name": "Load_to_Salesforce",
            "type": "Copy",
            "policy": {
                "timeout": "7.00:00:00",
                "retry": 0,
                "retryIntervalInSeconds": 30,
                "secureOutput": false,
                "secureInput": false
            },
            "userProperties": [
                {
                    "name": "Source",
                    "value": "[dbo].[Account]"
                },
                {
                    "name": "Destination",
                    "value": "Account"
                }
            ],
            "typeProperties": {
                "source": {
                    "type": "SqlSource"
                },
                "sink": {
                    "type": "SalesforceSink",
                    "writeBatchSize": 5000,
                    "writeBehavior": "upsert",
                    "externalIdFieldName": "Ext_UID__c",
                    "ignoreNullValues": false
                },
                "enableStaging": false,
                "enableSkipIncompatibleRow": true,
                "dataIntegrationUnits": 0,
                "translator": {
                    "type": "TabularTranslator",
                    "columnMappings": {
                        "Name": "Name",
                        "ParentId": "ParentId",
                        "BillingStreet": "BillingStreet",
                        "BillingCity": "BillingCity",
                        "BillingPostalCode": "BillingPostalCode",
                        "BillingCountry": "BillingCountry",
                        "ShippingStreet": "ShippingStreet",
                        "ShippingCity": "ShippingCity",
                        "ShippingPostalCode": "ShippingPostalCode",
                        "ShippingCountry": "ShippingCountry",
                        "Phone": "Phone",
                        "AccountNumber": "AccountNumber",
                        "Brand__c": "Brand__c",
                        "Account_Status__c": "Account_Status__c",
                        "Account_Type__c": "Account_Type__c",
                        "Preferred_Payment_Method__c": "Preferred_Payment_Method__c",
                        "Last_Account_Login__c": "Last_Account_Login__c",
                        "Ext_UID__c": "Ext_UID__c",
                        "Auto_Renew_Status__c": "Auto_Renew_Status__c",
                        "Account_Balance__c": "Account_Balance__c",
                        "Outstanding_Amount_30_days__c": "Outstanding_Amount_30_days__c",
                        "Outstanding_Amount_60_days__c": "Outstanding_Amount_60_days__c",
                        "Outstanding_Amount_90_days__c": "Outstanding_Amount_90_days__c",
                        "Account_Priority__c": "Account_Priority__c",
                        "Reseller__c": "Reseller__c",
                        "Last_Payment__c": "Last_Payment__c"
                    }
                }
            },
            "inputs": [
                {
                    "referenceName": "Staging_Source",
                    "type": "DatasetReference"
                }
            ],
            "outputs": [
                {
                    "referenceName": "Destination_Load_to_Salesforce",
                    "type": "DatasetReference"
                }
            ]
        }
    ]
},
"type": "Microsoft.DataFactory/factories/pipelines"}

Любой вклад будет очень признателен.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Какой разъем SF вы используете?Если нет значимого имени, посмотрите историю входа вашего пользователя API в Salesforce.Вероятно, он указан как «Simba Technologies» или что-то в этом роде?

Для стандартных отношений вы можете просто набрать Account.Ext_UID__c Parent.Ext_UID__c, как в этом разделе Загрузка нагрузки:

enter image description here

Для настраиваемых полей поиска / основных подробностей, если имя API поля Account__c, вы можете отобразить его для upsert как Account__r.Ext_UID__c.

Просто убедитесь, что родительские учетные записи существуют, прежде чем дочерние учетные записи ссылаются на них ... Может быть, вы загрузили их в предыдущем задании, может быть, лучше загрузить его в два этапа:

  1. Плоская вставка / upsert всехучетные записи без родительского сопоставления
  2. Reparenting update / upsert, который отображает только ext id этой записи и ext.id
0 голосов
/ 05 декабря 2018

Операция поиска доступна в ADF v2:

Lookup Activity in ADF v2

Здесь вы можете выбрать набор данных и строку, в которой вы хотите искать.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...