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


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

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

Совет

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

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

Внимание

Новый соединитель Salesforce обеспечивает улучшенную встроенную поддержку Salesforce. Если вы используете устаревший соединитель Salesforce в решении, обновите соединитель Salesforce до 11 октября 2024 г. Дополнительные сведения о различиях между устаревшей и последней версией см. в этом разделе .

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

Этот соединитель 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

Сохраняя учетные данные в 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 Свойство type должно иметь значение SalesforceV2Object. Да
objectApiName Имя объекта Salesforce, из которого извлекаются данные. Применимой версией локальной среды выполнения интеграции является 5.44.8984.1 или более поздней. Нет для источника (если задан запрос в источнике), да для приемника
reportId Идентификатор отчета 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 Свойство type источника действия копирования должно иметь значение SalesforceV2Source. Да
query Используйте пользовательский запрос для чтения данных. С ограничениями можно использовать только запрос языка запросов объектов 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",
                "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 Свойство 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)
 maxConcurrentConnections Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений.  Без

Пример: приемник 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 при указании запроса.
Отчет о поддержке, выбрав идентификатор отчета. Поддержка синтаксиса запроса отчета, например {call "<report name>"}.

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