Копирование данных из Salesforce и обратно с помощью Фабрики данных Azure или Azure Synapse Analytics

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается, как с помощью действия копирования в конвейерах Фабрики данных Azure и Azure Synapse копировать данные в Salesforce и обратно. Это продолжение статьи с обзором действия копирования, в которой представлены общие сведения о действии копирования.

Внимание

Новый соединитель Salesforce обеспечивает улучшенную встроенную поддержку Salesforce. Если вы используете устаревший соединитель Salesforce в решении, поддерживается только для обратной совместимости, см. статью о соединителе Salesforce (устаревшей версии).

Поддерживаемые возможности

Этот соединитель Salesforce поддерживается для следующих возможностей.

Поддерживаемые возможности IR
Действие копирования (источник/приемник) (1) (2)
Действие поиска (1) (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

Список хранилищ данных, которые поддерживаются в качестве источников или приемников, см. в таблице Поддерживаемые хранилища данных.

В частности, этот соединитель Salesforce поддерживает следующее.

  • Выпуски Salesforce Developer, Professional, Enterprise и Unlimited.
  • Копирование данных из личного домена и в личный домен (личный домен можно настроить как в рабочих, так и в изолированных средах).

Вы можете явно задать версию API, используемую для чтения и записи данных с помощью apiVersion свойства в связанной службе. При копировании данных в Salesforce соединитель использует BULK API 2.0.

Необходимые компоненты

  • В Salesforce требуется включить разрешение API.

  • Вам потребуется настроить Подключение приложения на портале Salesforce, ссылаясь на этот официальный документ или пошаговое руководство в рекомендации в этой статье.

    Внимание

    • Пользователь выполнения должен иметь разрешение только на API.
    • Срок действия маркера доступа можно изменить с помощью политик сеансов вместо маркера обновления.

Ограничения api Bulk API Salesforce 2.0

Мы используем API Salesforce Bulk API 2.0 для запроса и приема данных. В пакетном API 2.0 пакеты создаются автоматически. Вы можете отправлять до 15 000 пакетов на 24-часовой период. Если пакеты превышают предел, вы увидите сбои.

В пакетном API 2.0 только задания приема используют пакеты. Задания запросов не выполняются. Дополнительные сведения см. в руководстве разработчика по массовому api 2.0.

Дополнительные сведения см. в разделе "Общие ограничения" в ограничениях разработчика Salesforce.

Начать

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы для Salesforce с помощью пользовательского интерфейса

Выполните приведенные ниже действия, чтобы создать связанную службу для Salesforce с помощью пользовательского интерфейса на портале Azure.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Выполните поиск по запросу "Salesforce" и выберите соединитель Salesforce.

    Снимок экрана: соединитель Salesforce.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Снимок экрана: конфигурация связанной службы для Salesforce.

Сведения о конфигурации соединителя

Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей, характерных для соединителя Salesforce.

Свойства связанной службы

Для связанной службы Salesforce поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение SalesforceV2. Да
environmentUrl Укажите URL-адрес экземпляра Salesforce.
Например, укажите "https://<domainName>.my.salesforce.com" , чтобы скопировать данные из личного домена. Узнайте, как настроить или просмотреть личный домен, ссылающийся на эту статью.
Да
authenticationType Тип проверки подлинности, используемый для подключения к Salesforce.
Допустимое значение — OAuth2ClientCredentials.
Да
clientId Укажите идентификатор клиента приложения Salesforce OAuth 2.0 Подключение. Дополнительные сведения см. в этой статье Да
clientSecret Укажите секрет клиента приложения Salesforce OAuth 2.0 Подключение. Дополнительные сведения см. в этой статье Да
версия_API Укажите используемую версию API Salesforce Bulk API 2.0, например. 52.0 Пакетный API 2.0 поддерживает только версию >API = 47.0. Дополнительные сведения о пакетной версии API 2.0 см . в статье. Если вы используете более низкую версию API, это приведет к сбою. Да
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. No

Пример хранения учетных данных

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": "<environment URL>",
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "SecureString",
                "value": "<client secret>"
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример хранения учетных данных в хранилище ключей

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": "<environment URL>",
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client secret in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример. Хранение учетных данных в Key Vault, а также environmentUrl и clientId

Обратите внимание, что при этом вы больше не сможете использовать пользовательский интерфейс для изменения параметров. Указание динамического содержимого в формате JSON проверка box будет проверка, и вам придется полностью изменить эту конфигурацию вручную. Преимущество заключается в том, что вы можете наследить все параметры конфигурации из Key Vault, а не параметризовать все здесь.

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of environment URL in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client ID in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "clientSecret": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client secret in AKV>",
                "store":{
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                }
            },
            "apiVersion": "<API Version>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Свойства набора данных

Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных. Этот раздел содержит список свойств, поддерживаемых набором данных Salesforce.

Чтобы скопировать данные из Salesforce и в Salesforce, задайте для свойства типа набора данных значение SalesforceV2Object. Поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение SalesforceV2Object. Да
objectApiName Имя объекта Salesforce, из которого извлекаются данные. Нет для источника (если указано soQLQuery в источнике), да для приемника
reportId Идентификатор отчета Salesforce для получения данных. Он не поддерживается в приемнике. Обратите внимание, что при использовании отчетов существуют ограничения . Нет для источника (если указан soQLQuery в источнике), не поддерживает приемник

Внимание

Для любых настраиваемых объектов имя API должно содержать приставку "__c".

Имя API подключения к Salesforce

Пример:

{
    "name": "SalesforceDataset",
    "properties": {
        "type": "SalesforceV2Object",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Свойства действия копирования

Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником и приемником Salesforce.

Salesforce в качестве источника данных

Чтобы скопировать данные из Salesforce, задайте тип источника в действии копирования в SalesforceV2Source. В разделе source действия копирования поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type источника действия копирования должно иметь значение SalesforceV2Source. Да
SOQLQuery Используйте пользовательский запрос для чтения данных. С ограничениями можно использовать только запрос языка запросов объектов Salesforce (SOQL ). Ограничения SOQL см. в этой статье. Если запрос не указан, будут извлечены все данные объекта Salesforce, указанного в objectApiName/reportId в наборе данных. Нет (если параметр ObjectApiName/reportId в наборе данных указан)
includeDeletedObjects Указывает, следует ли запрашивать существующие записи или все записи, включая удаленные. Если оно не указано, поведение по умолчанию равно false.
Допустимые значения: false (по умолчанию), true.
No

Внимание

Для любых настраиваемых объектов имя API должно содержать приставку "__c".

Список имен API подключения к Salesforce

Пример:

"activities":[
    {
        "name": "CopyFromSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Salesforce input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SalesforceV2Source",
                "SOQLQuery": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
                "includeDeletedObjects": false
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salesforce в качестве типа приемника

Чтобы скопировать данные в Salesforce, задайте тип приемника в действии копирования в SalesforceV2Sink. В разделе sink действия Copy поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Свойство type приемника действия копирования должно иметь значение SalesforceV2Sink. Да
writeBehavior Поведение операции при записи.
Допустимые значения: Insert (Вставка) и Upsert (Вставка-обновление).
Нет (по умолчанию используется Insert)
externalIdFieldName Имя поля для внешнего идентификатора при операции upsert. Это поле должно быть определено в объекте Salesforce как External Id Field (Поле внешнего идентификатора). Оно не может иметь значения NULL в соответствующих входных данных. "Да" для операции Upsert (Вставка-обновление)
writeBatchSize Количество строк данных, записываемых в Salesforce одним пакетом. Рекомендуем задать это значение от 10 000 до 200 000. Слишком мало строк в каждом пакете снижает производительность копирования. Слишком много строк в каждом пакете может привести к истечении времени ожидания API. Нет (по умолчанию — 100 000)
ignoreNullValues Указывает, следует ли игнорировать значения NULL из входных данных во время операции записи.
Допустимые значения: true и false.
- True: при выполнении операции upsert или обновления (update) оставьте данные в целевом объекте без изменений. При выполнении операции вставки (insert) вставьте определенное значение по умолчанию.
- False: при выполнении операции upsert или обновления (update) обновите данные в целевом объекте до значения NULL. При выполнении операции вставки (insert) вставьте значение NULL.
Нет (по умолчанию используется значение false)
 maxConcurrent Подключение ions Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений.  Без

Пример: приемник Salesforce в действии копирования

"activities":[
    {
        "name": "CopyToSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Salesforce output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SalesforceV2Sink",
                "writeBehavior": "Upsert",
                "externalIdFieldName": "CustomerId__c",
                "writeBatchSize": 10000,
                "ignoreNullValues": true
            }
        }
    }
]

Сопоставление типов данных для Salesforce

При копировании данных из Salesforce для промежуточных типов данных службы используются следующие сопоставления из типов данных Salesforce. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.

Тип данных Salesforce Промежуточный тип данных службы
Автонумерация Строка
Флажок Логический
Валюта Десятичное число
Дата Дата/время
Дата и время Дата/время
Электронное письмо Строка
Идентификатор Строка
Связь для подстановки Строка
Список множественного выбора Строка
Число Десятичн.
Процент Десятичное число
Номер телефона Строка
Picklist Строка
Текст Строка
Область текста Строка
Текстовое поле (длинное) Строка
Текстовое поле (расширенное) Строка
Текст (зашифрованный) Строка
URL Строка

Примечание.

Числовой тип Salesforce сопоставляется с десятичным типом в конвейерах Фабрики данных Azure и Azure Synapse в качестве промежуточного типа данных службы. Десятичный тип учитывает определенную точность и масштаб. Для данных, десятичные разряды которых превышают определенный масштаб, значение будет округлено при предварительном просмотре и копировании данных. Чтобы избежать такой потери точности в конвейерах Фабрики данных Azure и Azure Synapse, рекомендуется увеличить десятичные разряды до достаточно большого значения на странице Custom Field Definition Edit (Изменения определения настраиваемого поля) в Salesforce.

Свойства действия поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Обновление связанной службы Salesforce

Ниже приведены действия, которые помогут вам обновить связанную службу и связанные запросы:

  1. Настройте подключенные приложения на портале Salesforce, указав необходимые условия.

  2. Создайте связанную службу Salesforce и настройте ее, ссылаясь на свойства связанной службы.

  3. Если вы используете SQL-запрос в источнике действия копирования или действии подстановки, ссылающейся на устаревшую связанную службу, необходимо преобразовать их в запрос SOQL. Дополнительные сведения о запросе SOQL из Salesforce в качестве исходного типа и языка запросов объектов Salesforce (SOQL).

  4. readBehavior заменяется на includeDeletedObjects в источнике действия копирования или в действии подстановки. Подробные сведения о конфигурации см. в разделе Salesforce в качестве исходного типа.

Различия между Salesforce и Salesforce (устаревшая версия)

Соединитель Salesforce предлагает новые функциональные возможности и совместим с большинством функций соединителя Salesforce (устаревшая версия). В таблице ниже показаны различия между Salesforce и Salesforce (устаревшая версия).

Salesforce Salesforce (устаревшая версия)
Поддержка SOQL в Salesforce Bulk API 2.0.
Для запросов SOQL:
• Предложения GROUP BY, LIMIT, ORDER BY, OFFSET или TYPEOF не поддерживаются.
• Агрегатные функции, такие как COUNT() не поддерживаются, можно использовать отчеты Salesforce для их реализации.
• Функции даты в предложениях GROUP BY не поддерживаются, но поддерживаются в предложении WHERE.
• Составные поля адресов или составные поля географического расположения не поддерживаются. В качестве альтернативы запросите отдельные компоненты составных полей.
• Запросы отношений "родители к дочерним" не поддерживаются, в то время как поддерживаются запросы отношений "дочерний к родителям".
Поддержка синтаксиса SQL и SOQL.
Объекты, содержащие двоичные поля, не поддерживаются. Поддерживаются объекты, содержащие двоичные поля, например объект Вложения.
Поддержка объектов в пакетном API. Дополнительные сведения см. в этой статье. Поддержка объектов, которые не поддерживаются api массовой рассылки, например CaseStatus.
Отчет о поддержке, выбрав идентификатор отчета. Поддержка синтаксиса запроса отчета, например {call "<report name>"}.

Список хранилищ данных, поддерживаемых в рамках функции копирования в качестве источников и приемников, см. в разделе Поддерживаемые хранилища данных.