Поделиться через


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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

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

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

Внимание

Соединитель Salesforce версии 2 обеспечивает улучшенную поддержку salesforce. Если вы используете соединитель Salesforce версии 1 в решении, рекомендуется обновить соединитель Salesforce до 30 июня 2025 г. Дополнительные сведения о различиях между версиями 2 и 1 см. в этом разделе .

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

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

Поддерживаемые возможности ИНФРАКРАСНЫЙ
Действие копирования (источник/приемник) (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 должно иметь значение SalesforceV2. Да
environmentUrl Укажите URL-адрес экземпляра Salesforce.
Например, укажите "https://<domainName>.my.salesforce.com" , чтобы скопировать данные из личного домена. Узнайте, как настроить или просмотреть личный домен, ссылающийся на эту статью.
Да
тип аутентификации Тип проверки подлинности, используемый для подключения к Salesforce.
Допустимое значение — OAuth2ClientCredentials.
Да
clientId Укажите идентификатор клиента подключенного приложения Salesforce OAuth 2.0. Дополнительные сведения см. в этой статье Да
клиентский секрет Укажите секрет клиента подключенного приложения 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. нет

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

{
    "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

Сохраняя учетные данные в Key Vault, а также environmentUrl и clientId, вы можете использовать пользовательский интерфейс для изменения параметров. Установите флажок "Указать динамическое содержимое в формате JSON" и необходимо вручную настроить эту конфигурацию. Преимуществом этого сценария является то, что можно наследить все параметры конфигурации из 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 должно иметь значение SalesforceV2Object. Да
objectApiName Имя объекта Salesforce, из которого извлекаются данные. Применимой версией локальной среды выполнения интеграции является 5.44.8984.1 или более поздней. Нет для источника (если задан запрос в источнике), да для приемника
идентификатор отчета Идентификатор отчета Salesforce для получения данных. Он не поддерживается в приемнике. При использовании отчетов существуют ограничения . Применимой версией локальной среды выполнения интеграции является 5.44.8984.1 или более поздней. Нет для источника (если задан запрос в источнике), не поддерживает приемник

Внимание

Для любых настраиваемых объектов имя 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 источника действия копирования должно иметь значение SalesforceV2Source. Да
запрос Используйте пользовательский запрос для чтения данных. Вы можете использовать только запрос языка запросов объектов Salesforce (SOQL ). Если запрос не указан, извлекается все данные объекта Salesforce, указанного в objectApiName/reportId в наборе данных. Нет (если параметр objectApiName/reportId в наборе данных указан)
включить удаленные объекты Указывает, следует ли запрашивать существующие записи или все записи, включая удаленные. Если оно не указано, поведение по умолчанию равно false.
Допустимые значения: false (по умолчанию), true.
нет

Внимание

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

Пример: приемник 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 Промежуточный тип данных службы
Автонумерация Строка
Флажок Логический
Валюта Десятичное число
Дата Дата/время
Дата и время Дата/время
Электронное письмо Строка
Идентификатор Строка
Связь для подстановки Строка
Список множественного выбора Строка
Число Десятичное число
Процент Десятичное число
Номер телефона Строка
Список выбора Строка
Текст Строка
Область текста Строка
Текстовое поле (длинное) Строка
Текстовое поле (расширенное) Строка
Текст (зашифрованный) Строка
URL-адрес Строка

Примечание.

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

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

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

Жизненный цикл и обновление соединителя Salesforce

В следующей таблице показаны этап выпуска и журналы изменений для различных версий соединителя Salesforce:

Версия Этап выпуска Журнал изменений
Salesforce версии 1 Дата окончания поддержки объявлена /
Salesforce версии 2 GA версия доступна • Поддержка проверки подлинности OAuth2ClientCredentials вместо базовой проверки подлинности.

• Поддержка только запроса SOQL.

• Поддержка отчета путем выбора идентификатора отчета.

readBehavior заменяется на includeDeletedObjects в операции копирования или в операции подстановки.

Обновление соединителя Salesforce с версии 1 до версии 2

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

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

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

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

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

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