Копирование данных из облака Salesforce Service с помощью Фабрика данных Azure или Synapse Analytics (устаревшая версия)
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия копирования в конвейерах Фабрики данных Azure и Azure Synapse копировать данные в Salesforce Service Cloud и обратно. Это продолжение статьи с обзором действия копирования, в которой представлены общие сведения о действии копирования.
Внимание
Новый соединитель Salesforce Service Cloud обеспечивает улучшенную поддержку собственного облака Salesforce Service. Если вы используете устаревший соединитель Salesforce Service Cloud в решении, обновите соединитель Salesforce Service Cloud до 11 октября 2024 года. Дополнительные сведения о различиях между устаревшей и последней версией см. в этом разделе .
Поддерживаемые возможности
Этот соединитель Salesforce Service Cloud поддерживается для следующих возможностей:
Поддерживаемые возможности | IR |
---|---|
Действие копирования (источник/приемник) | (1) (2) |
Действие поиска | (1) (2) |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Список хранилищ данных, которые поддерживаются в качестве источников или приемников, см. в таблице Поддерживаемые хранилища данных.
В частности, этот соединитель Salesforce Service Cloud поддерживает следующее:
- Выпуски Salesforce Developer, Professional, Enterprise и Unlimited.
- Копирование данных в рабочую среду, песочницу или личный домен Salesforce, а также из них.
Соединитель Salesforce построен на основе API-интерфейса Salesforce REST/Bulk API. По умолчанию при копировании данных из Salesforce соединитель использует версию 45 и автоматически выбирает между REST и массовыми API на основе размера данных — если результирующий набор велик, массовый API используется для повышения производительности; при записи данных в Salesforce соединитель использует версию 40 массового API. Можно также явно задать версию API, используемую для чтения и записи данных через свойство apiVersion
в связанной службе.
Необходимые компоненты
В Salesforce требуется включить разрешение API.
Ограничения запросов Salesforce
Для Salesforce установлены ограничения на общее число запросов API и одновременных запросов API. Обратите внимание на следующие аспекты:
- Если количество одновременных запросов превышает ограничение, выполняется регулирование и возникают случайные ошибки.
- В случае превышения ограничения на общее число запросов учетная запись Salesforce блокируется на 24 часа.
Кроме того, в обоих случаях вы можете получить сообщение об ошибке "REQUEST_LIMIT_EXCEEDED". Дополнительные сведения см. в разделе API request limits (Ограничения запросов API) руководства об ограничениях для разработчика Salesforce.
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для Salesforce Service Cloud с помощью пользовательского интерфейса
Выполните приведенные ниже действия, чтобы создать связанную службу для Salesforce Service Cloud с помощью пользовательского интерфейса на портале Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск Salesforce и выберите соединитель Salesforce Service Cloud.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей службы "Фабрика данных", относящихся к соединителю Salesforce Service Cloud.
Свойства связанной службы
Для связанной службы Salesforce поддерживаются следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type нужно задать значение SalesforceServiceCloud. | Да |
environmentUrl | Укажите URL-адрес облачного экземпляра службы Salesforce Service Cloud. Значение по умолчанию — "https://login.salesforce.com" . Чтобы скопировать данные из песочницы, укажите "https://test.salesforce.com" . Чтобы скопировать данные из пользовательского домена, укажите URL-адрес, например "https://[domain].my.salesforce.com" . |
No |
username | Укажите имя пользователя для учетной записи пользователя. | Да |
password | Укажите пароль для учетной записи пользователя. Пометьте это поле как SecureString, чтобы безопасно хранить его, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. |
Да |
securityToken | Укажите маркер безопасности для учетной записи пользователя. Общие сведения о маркере безопасности см. в статье Security and the API (Безопасность и API). Маркер безопасности можно пропустить, только если добавить IP-адрес среды выполнения интеграции в список доверенных IP-адресов в Salesforce. При использовании Azure IR см. IP-адреса среды выполнения Azure. Инструкции по получению и сбросу маркера безопасности см. в Получение маркера безопасности. Пометьте это поле как SecureString, чтобы безопасно хранить его в фабрике данных, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. |
No |
версия_API | Укажите версию Salesforce REST/Bulk API для использования, например48.0 . По умолчанию соединитель использует V45 для копирования данных из Salesforce и использует V40 для копирования данных в Salesforce. |
No |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. | No |
Пример хранения учетных данных
{
"name": "SalesforceServiceCloudLinkedService",
"properties": {
"type": "SalesforceServiceCloud",
"typeProperties": {
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"securityToken": {
"type": "SecureString",
"value": "<security token>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Пример хранения учетных данных в хранилище ключей
{
"name": "SalesforceServiceCloudLinkedService",
"properties": {
"type": "SalesforceServiceCloud",
"typeProperties": {
"username": "<username>",
"password": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of password in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"securityToken": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of security token in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Свойства набора данных
Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных. В этом разделе содержится список свойств, поддерживаемых набором данных Salesforce Service Cloud.
Для копирования данных из Salesforce Service Cloud в облако и обратно поддерживаются следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type нужно задать значение SalesforceServiceCloudObject. | Да |
objectApiName | Имя объекта Salesforce, из которого извлекаются данные. | "Нет" для источника, "Да" для приемника |
Внимание
Для любых настраиваемых объектов имя API должно содержать приставку "__c".
Пример:
{
"name": "SalesforceServiceCloudDataset",
"properties": {
"type": "SalesforceServiceCloudObject",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce Service Cloud linked service name>",
"type": "LinkedServiceReference"
}
}
}
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type для набора данных должно иметь значение RelationalTable. | Да |
tableName | Имя таблицы в Salesforce Service Cloud. | Нет (если свойство query указано в источнике действия) |
Свойства действия копирования
Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником и приемником Salesforce Service Cloud.
Salesforce Service Cloud как тип источника
Чтобы скопировать данные из облака службы Salesforce, в разделе источник действия копирования поддерживаются следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type источника действия копирования должно иметь значение SalesforceServiceCloudSource. | Да |
query | Используйте пользовательский запрос для чтения данных. Вы можете использовать запрос, написанный на объектно-ориентированном языке запросов Salesforce (SOQL), или запрос SQL-92. Дополнительные советы см. в разделе Советы по запросам. Если запрос не указан, будут извлечены все данные объекта Salesforce Service Cloud, заданного в наборе данных в свойстве objectApiName. | Нет (если в наборе данных задано свойство objectApiName) |
readBehavior | Указывает, следует ли запрашивать существующие записи или все записи, включая удаленные. Если значение не задано, по умолчанию используется первое значение. Допустимые значения: query (по умолчанию), queryAll. |
No |
Внимание
Для любых настраиваемых объектов имя API должно содержать приставку "__c".
Пример:
"activities":[
{
"name": "CopyFromSalesforceServiceCloud",
"type": "Copy",
"inputs": [
{
"referenceName": "<Salesforce Service Cloud input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SalesforceServiceCloudSource",
"query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Примечание.
Источник Salesforce Service Cloud не поддерживает параметры прокси-сервера в локальной среде выполнения интеграции, но приемник их поддерживает.
Salesforce Service Cloud как тип приемника
Чтобы скопировать данные в облако службы Salesforce, в разделе приемника действия копирования поддерживаются следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type приемника действия копирования должно иметь значение SalesforceServiceCloudSink. | Да |
writeBehavior | Поведение операции при записи. Допустимые значения: Insert (Вставка) и Upsert (Вставка-обновление). |
Нет (по умолчанию используется Insert) |
externalIdFieldName | Имя поля для внешнего идентификатора при операции upsert. Указанное поле должно быть определено как "поле внешнего идентификатора" в облачном объекте службы Salesforce. Оно не может иметь значения NULL в соответствующих входных данных. | "Да" для операции Upsert (Вставка-обновление) |
writeBatchSize | Количество строк данных, записываемых в Salesforce Service Cloud одним пакетом. | Нет (значение по умолчанию — 5,000) |
ignoreNullValues | Указывает, следует ли игнорировать значения NULL из входных данных во время операции записи. Допустимые значения: true и false. - True: при выполнении операции upsert или обновления (update) оставьте данные в целевом объекте без изменений. При выполнении операции вставки (insert) вставьте определенное значение по умолчанию. - False: при выполнении операции upsert или обновления (update) обновите данные в целевом объекте до значения NULL. При выполнении операции вставки (insert) вставьте значение NULL. |
Нет (по умолчанию используется значение false) |
maxConcurrentConnections | Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений. | Без |
Пример:
"activities":[
{
"name": "CopyToSalesforceServiceCloud",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Salesforce Service Cloud output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SalesforceServiceCloudSink",
"writeBehavior": "Upsert",
"externalIdFieldName": "CustomerId__c",
"writeBatchSize": 10000,
"ignoreNullValues": true
}
}
}
]
Советы по запросам
Удаление данных из отчета Salesforce Service Cloud
Вы можете извлекать данные из отчетов Salesforce Service Cloud, указывая запросы в формате {call "<report name>"}
. Например, "query": "{call \"TestReport\"}"
.
Извлечение удаленных записей из корзины службы Salesforce Service Cloud
Чтобы запросить обратимо удаленные записи из корзины Salesforce Service Cloud, укажите readBehavior
как queryAll
.
Различия между синтаксисом запросов SOQL и SQL
При копировании данных из облака службы Salesforce можно использовать либо запрос SOQL, либо SQL Query. Обратите внимание, что эти два запроса имеют различную поддержку синтаксиса и функциональности, их не следует смешивать. Вы предлагаете использовать запрос SOQL, изначально поддерживаемый облаком службы Salesforce Service Cloud. Главные различия показаны в следующей таблице.
Синтаксис | Режим SOQL | Режим SQL |
---|---|---|
Выбор столбцов | Необходимо переименовать поля, копируемые в запросе, например SELECT field1, filed2 FROM objectname |
SELECT * поддерживается в дополнении к выделенному фрагменту столбца. |
Кавычки | Имена полей или объектов не заключаются в кавычки. | Имена полей или объектов заключаются в кавычки, например SELECT "id" FROM "Account" |
Формат «Дата и время» | Подробнее см. здесь, а примеры — в следующем разделе. | Подробнее см. здесь, а примеры — в следующем разделе. |
Логические значения | Представленные в виде False и True , например SELECT … WHERE IsDeleted=True . |
Представленные в значении 0 или 1, например SELECT … WHERE IsDeleted=1 . |
Переименование столбцов | Не поддерживается. | Поддерживается, например, SELECT a AS b FROM … . |
Отношение | Поддерживается, например, Account_vod__r.nvs_Country__c . |
Не поддерживается. |
Извлечение данных с использованием предложения where для столбца даты и времени
При указании запроса SOQL или SQL обратите внимание на различие в формате даты и времени. Например:
- Пример SOQL:
SELECT Id, Name, BillingCity FROM Account WHERE LastModifiedDate >= @{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-ddTHH:mm:ssZ')} AND LastModifiedDate < @{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-ddTHH:mm:ssZ')}
- Пример SQL:
SELECT * FROM Account WHERE LastModifiedDate >= {ts'@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}'} AND LastModifiedDate < {ts'@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'}
Ошибка MALFORMED_QUERY: усечено
Если вы столкнулись с ошибкой "MALFORMED_QUERY: truncated", обычно это связано с тем, что в данных имеется столбец типа JunctionIdList, а Salesforce имеет ограничение на поддержку таких данных с большим количеством строк. Чтобы устранить эту проблему, попробуйте исключить столбец JunctionIdList или ограничить число копируемых строк (можно разделить на несколько запусков действия копирования).
Сопоставление типов данных для облака службы Salesforce
При копировании данных из Salesforce Service Cloud используются указанные ниже сопоставления типов данных Salesforce Service Cloud с промежуточными типами данных, применяемыми внутри службы. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.
Тип данных Salesforce Service Cloud | Промежуточный тип данных службы |
---|---|
Автонумерация | Строка |
Флажок | Логический |
Валюта | Десятичное число |
Дата | Дата/время |
Дата и время | Дата/время |
Электронное письмо | Строка |
Идентификатор | Строка |
Связь для подстановки | Строка |
Список множественного выбора | Строка |
Число | Десятичн. |
Процент | Десятичное число |
Номер телефона | Строка |
Picklist | Строка |
Текст | Строка |
Область текста | Строка |
Текстовое поле (длинное) | Строка |
Текстовое поле (расширенное) | Строка |
Текст (зашифрованный) | Строка |
URL | Строка |
Примечание.
Тип облачного номера службы Salesforce сопоставляется с десятичным типом в конвейерах Фабрика данных Azure и Azure Synapse в качестве промежуточного типа данных службы. Десятичный тип учитывает определенную точность и масштаб. Для данных, десятичные разряды которых превышают определенный масштаб, значение будет округлено при предварительном просмотре и копировании данных. Чтобы избежать такой потери точности в Фабрика данных Azure и конвейерах Azure Synapse, рассмотрите возможность увеличения десятичных разрядов до достаточно большого значения на странице "Изменение определения настраиваемого поля" облака Salesforce Service Cloud.
Свойства действия поиска
Подробные сведения об этих свойствах см. в разделе Действие поиска.
Следующие шаги
Список хранилищ данных, поддерживаемых в рамках функции копирования в качестве источников и приемников, см. в разделе Поддерживаемые хранилища данных.