使用 Azure Data Factory 或 Azure Synapse Analytics 將資料從 Salesforce Service Cloud 複製並複製到 Salesforce Service Cloud
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
此文章概述如何使用 Azure Data Factory 和 Azure Synapse Analytics 管線中的「複製活動」,將資料從 Salesforce 服務雲端複製並複製到 Salesforce 服務雲端。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。
重要
新的 Salesforce Service Cloud 連接器提供改善的原生 Salesforce Service Cloud 支援。 如果您在解決方案中使用舊版 Salesforce Service Cloud 連接器,請在 2024 年 10 月 11 日之前升級 Salesforce Service Cloud 連接器。 如需舊版與最新版本之間差異的詳細資料,請參閱本節。
支援的功能
此 Salesforce Service Cloud 連接器支援下列功能:
支援的功能 | IR |
---|---|
複製活動 (來源/接收) | ① ② |
查閱活動 | ① ② |
① Azure 整合執行階段 ② 自我裝載整合執行階段
如需支援作為來源或接收器的資料存放區清單,請參閱支援的資料存放區表格。
具體而言,這個 Salesforce 服務雲端連接器支援:
- Salesforce Developer、Professional、Enterprise 或 Unlimited 版本。
- 將資料從自訂網域複製並複製到自訂網域 (可以同時在生產環境與沙箱環境中設定自訂網域)。
您可以透過連結服務中的 apiVersion
屬性,以明確設定用來讀取/寫入資料的 API 版本。 將資料複製到 Salesforce 雲端服務時,連接器會使用 BULK API 2.0。
必要條件
必須在 Salesforce 中啟用 API 權限。
您需要在 Salesforce 入口網站中設定連線應用程式,以參考此官方文件或本文建議中的逐步指導方針。
重要
- 執行使用者必須具有僅限 API 權限。
- 可以透過工作階段原則變更存取權杖到期時間 (而不是重新整理權杖)。
Salesforce Bulk API 2.0 限制
我們使用 Salesforce Bulk API 2.0 來查詢和內嵌資料。 會自動在 Bulk API 2.0 中為您建立批次。 每個輪替 24 小時期間最多可以提交 15,000 個批次。 如果批次超過限制,您會看到失敗。
在 Bulk API 2.0 中,只有內嵌作業會取用批次。 查詢作業不會取用批次。 如需詳細資料,請參閱 Bulk API 2.0 開發人員指南中的要求處理方式。
如需詳細資料,請參閱 Salesforce 開發人員限制中的「一般限制」一節。
開始使用
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立 Salesforce 服務雲端的連結服務
使用下列步驟,在 Azure 入口網站 UI 中建立連結至 Salesforce 服務雲端的服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 Salesforce,然後選取 Salesforce 服務雲端連接器。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供屬性的相關詳細資料,這些屬性是用來定義 Salesforce Service Cloud 連接器特定的實體。
連結服務屬性
以下是針對 Salesforce Service Cloud 連結服務支援的屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 類型屬性必須設 SalesforceServiceCloudV2。 | Yes |
environmentUrl | 指定 Salesforce 服務雲端執行個體的 URL。 例如,指定 "https://<domainName>.my.salesforce.com" 以從自訂網域複製資料。 請參閱本文章了解如何設定或檢視自訂網域。 |
Yes |
authenticationType | 用來連線至 Salesforce 服務雲端的驗證類型。 允許的值為 OAuth2ClientCredentials。 |
Yes |
clientId | 指定 Salesforce OAuth 2.0 連線應用程式的用戶端識別碼。 如需詳細資訊,請移至此文章 | Yes |
clientSecret | 指定 Salesforce OAuth 2.0 連線應用程式的用戶端密碼。 如需詳細資訊,請移至此文章 | Yes |
apiVersion | 指定要使用的 Salesforce Bulk API 2.0 版本,例如 52.0 。 Bulk API 2.0 僅支援 API 版本 >= 47.0。 若要了解 Bulk API 2.0 版本,請參閱文章。 如果您使用較低的 API 版本,則會導致失敗。 |
Yes |
connectVia | 用來連線到資料存放區的整合執行階段。 如果未指定,就會使用預設的 Azure Integration Runtime。 | No |
範例:儲存認證
{
"name": "SalesforceServiceCloudLinkedService",
"properties": {
"type": "SalesforceServiceCloudV2",
"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"
}
}
}
範例:在 Key Vault 中儲存認證
{
"name": "SalesforceServiceCloudLinkedService",
"properties": {
"type": "SalesforceServiceCloudV2",
"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"
}
}
}
資料集屬性
如需可用來定義資料集的區段和屬性完整清單,請參閱資料集一文。 本節提供 Salesforce 服務雲端資料集所支援的屬性清單。
若要將資料從 Salesforce 服務雲端複製並複製到 Salesforce 服務雲端,請將資料集的類型屬性設定為 SalesforceServiceCloudV2Object。 以下是支援的屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 類型屬性必須設為 SalesforceServiceCloudV2Object。 | Yes |
objectApiName | 要從其中擷取資料的 Salesforce Service Cloud 物件名稱。 適用的自我裝載整合執行階段版本是 5.44.8984.1 或更高版本。 | 否 (來源,如果已指定來源中的「查詢」);是 (接收) |
reportId | 要從其中擷取資料的 Salesforce Service Cloud 報告識別碼。 接收中不支援此功能。 請注意,使用報告時有限制。 適用的自我裝載整合執行階段版本是 5.44.8984.1 或更高版本。 | 否 (來源,如果已指定來源中的「查詢」);不支援接收 |
重要
所有自訂物件的 [API 名稱]都要有 "__c" 部分。
範例:
{
"name": "SalesforceServiceCloudDataset",
"properties": {
"type": "SalesforceServiceCloudV2Object",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce Service Cloud linked service name>",
"type": "LinkedServiceReference"
}
}
}
複製活動屬性
如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 Salesforce 服務雲端來源和接收所支援的屬性清單。
Salesforce 服務雲端作為來源類型
若要從 Salesforce 服務雲端複製資料,請將複製活動中的來源類型設定為 SalesforceServiceCloudV2Source。 複製活動的 [來源] 區段支援下列屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的類型屬性必須設定為 SalesforceServiceCloudV2Source。 | Yes |
query | 使用自訂查詢來讀取資料。 您只能使用具有限制的 Salesforce Object Query Language (SOQL) 查詢。 如需 SOQL 限制,請參閱這篇文章。 如果未指定查詢,將會在資料集內擷取 "objectApiName/reportId" 中所指定之 Salesforce 物件的所有資料。 | 否 (如果在資料集中指定 "objectApiName/reportId") |
includeDeletedObjects | 指出是要查詢現有記錄,還是要查詢包含已刪除記錄在內的所有記錄。 如果未指定,預設行為為 False。 允許的值:false (預設值)、true。 |
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": "SalesforceServiceCloudV2Source",
"query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
"includeDeletedObjects": false
},
"sink": {
"type": "<sink type>"
}
}
}
]
Salesforce 服務雲端作為接收器類型
若要從 Salesforce 服務雲端複製資料,請將複製活動中的接收類型設定為 SalesforceServiceCloudV2Sink。 複製活動的 [接收] 區段支援下列屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動接收的類型屬性屬性必須設定為 SalesforceServiceCloudV2Sink。 | Yes |
writeBehavior | 作業的寫入行為。 允許的值為 Insert 和 Upsert。 |
否 (預設為 Insert) |
externalIdFieldName | upsert 作業的外部識別碼欄位名稱。 指定的欄位在 Salesforce 服務雲端物件中必須定義為「外部識別碼欄位」。 對應的輸入資料中不能有 NULL 值。 | 是 (用於 upsert) |
writeBatchSize | 每個批次中寫入 Salesforce 服務雲端的資料列計數。 建議將此值從 10,000 設定為 200,000。 每個批次中的資料列數太少,會降低複製效能。 每個批次中的資料列數太多,可能會導致 API 逾時。 | 否 (預設為 100,000) |
ignoreNullValues | 指出在寫入作業期間是否要忽略輸入資料中的 NULL 值。 允許的值為 true 和 false。 - true:執行 upsert 或更新作業時,讓目的地物件中的資料保持不變。 執行插入作業時,插入已定義的預設值。 - false:執行 upsert 或更新作業時,將目的地物件中的資料更新為 NULL。 執行插入作業時,插入 NULL 值。 |
否 (預設值為 false) |
maxConcurrentConnections | 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 | 否 |
範例:複製活動中的 Salesforce Service Cloud 接收
"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": "SalesforceServiceCloudV2Sink",
"writeBehavior": "Upsert",
"externalIdFieldName": "CustomerId__c",
"writeBatchSize": 10000,
"ignoreNullValues": true
}
}
}
]
Salesforce 服務雲端的資料類型對應
當您從 Salesforce Service Cloud 複製資料時,從 Salesforce Service Cloud 資料類型到服務內部的過渡資料類型,皆會使用下列對應。 若要了解複製活動如何將來源結構描述和資料類型對應至接收,請參閱結構描述和資料類型對應。
Salesforce 服務雲端資料類型 | 服務過渡資料類型 |
---|---|
自動編號 | String |
核取方塊 | 布林值 |
貨幣 | Decimal |
Date | Datetime |
日期/時間 | Datetime |
String | |
識別碼 | String |
查閱關聯性 | String |
複選挑選清單 | String |
數字 | Decimal |
Percent | Decimal |
手機 | String |
Picklist | String |
Text | String |
文字區域 | String |
文字區域 (完整) | String |
文字區域 (豐富) | String |
文字 (加密) | String |
URL | String |
注意
Salesforce Service Cloud 編號型別會對應至 Azure Data Factory 中的十進位型別,Azure Synapse Analytics 管線即服務過渡資料類型。 十進位型別會接受定義的有效位數和小數位數別。 針對小數位數超過所定義小數位數的資料,其值將會在預覽資料和複製中四捨五入。 若要避免在 Azure Data Factory 和 Azure Synapse Analytics 管線中造成這種精確度方面的缺失,請考慮在 Salesforce 服務雲端的 [自訂欄位定義編輯] 頁面中,將小數位數增加為合適的大值。
查閱活動屬性
若要了解屬性的詳細資料,請參閱查閱活動。
升級 Salesforce Service Cloud 連結服務
以下是可協助您升級連結服務和相關查詢的步驟:
參考必要條件,以在 Salesforce 入口網站中設定連線的應用程式。
參閱連結服務屬性,以建立新的 Salesforce Service Cloud 連結服務並加以設定。
如果您在複製活動來源或參照舊版連結服務的查閱活動中使用 SQL 查詢,則必須將其轉換為 SOQL 查詢。 從Salesforce Service Cloud 作為來源類型 (部分機器翻譯) 和 Salesforce Object Query Language (SOQL) (英文) 深入了解 SOQL 查詢。
readBehavior 會取代為複製活動來源或查閱活動中的 includeDeletedObjects。 如需詳細設定,請參閱 Salesforce Service Cloud 作為來源類型。
Salesforce Service Cloud 與 Salesforce Service Cloud (舊版) 之間的差異
Salesforce Service Cloud 連接器提供新功能,並與 Salesforce Service Cloud (舊版) 連接器的大部分功能相容。 下表顯示 Salesforce Service Cloud 與 Salesforce Service Cloud (舊版) 之間的差異。
Salesforce 服務雲端 | Salesforce Service Cloud (舊版) |
---|---|
支援 Salesforce Bulk API 2.0 內的 SOQL。 針對 SOQL 查詢: • 不支援 GROUP BY、LIMIT、ORDER BY、OFFSET 或 TYPEOF 子句。 • 不支援 COUNT() 等彙總函式,您可以使用 Salesforce 報表來加以實作。 • 不支援 GROUP BY 子句中的日期函式,但在 WHERE 子句中則可支援。 • 不支援複合位址欄位或複合地理位置欄位。 或者,查詢複合欄位的個別元件。 • 不支援父對子關聯性查詢,而支援子對父關聯性查詢。 |
同時支援 SQL 和 SOQL 語法。 |
指定查詢時,不支援包含二進位欄位的物件。 | 指定查詢時,支援包含二進位欄位的物件。 |
指定查詢時,支援大量 API 中的物件。 | 指定查詢時,支援大量 API 不支援的物件。 |
選取報表識別碼來支援報表。 | 支援報表查詢語法,例如 {call "<report name>"} 。 |
相關內容
如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。