Копирование данных из 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:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для Salesforce с помощью пользовательского интерфейса
Выполните приведенные ниже действия, чтобы создать связанную службу для Salesforce с помощью пользовательского интерфейса на портале Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск по запросу "Salesforce" и выберите соединитель 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".
Пример:
{
"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".
Пример:
"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
Ниже приведены действия, которые помогут вам обновить связанную службу и связанные запросы:
Настройте подключенные приложения на портале Salesforce, указав необходимые условия.
Создайте связанную службу Salesforce и настройте ее, ссылаясь на свойства связанной службы.
Если вы используете SQL-запрос в источнике действия копирования или действии подстановки, ссылающейся на устаревшую связанную службу, необходимо преобразовать их в запрос SOQL. Дополнительные сведения о запросе SOQL из Salesforce в качестве исходного типа и языка запросов объектов Salesforce (SOQL).
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>"} . |
Связанный контент
Список хранилищ данных, поддерживаемых в рамках функции копирования в качестве источников и приемников, см. в разделе Поддерживаемые хранилища данных.