共用方式為


使用 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 服務雲端的服務。

  1. 前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 Salesforce,然後選取 Salesforce 服務雲端連接器。

    Salesforce Service Cloud 連接器的螢幕擷取畫面。

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    Salesforce Service Cloud 連結服務組態的螢幕擷取畫面。

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 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" 部分。

Salesforce 連線 API 名稱

範例:

{
    "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" 部分。

Salesforce 連線 API 名稱清單

範例:

"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 作業的寫入行為。
允許的值為 InsertUpsert
否 (預設為 Insert)
externalIdFieldName upsert 作業的外部識別碼欄位名稱。 指定的欄位在 Salesforce 服務雲端物件中必須定義為「外部識別碼欄位」。 對應的輸入資料中不能有 NULL 值。 是 (用於 upsert)
writeBatchSize 每個批次中寫入 Salesforce 服務雲端的資料列計數。 建議將此值從 10,000 設定為 200,000。 每個批次中的資料列數太少,會降低複製效能。 每個批次中的資料列數太多,可能會導致 API 逾時。 否 (預設為 100,000)
ignoreNullValues 指出在寫入作業期間是否要忽略輸入資料中的 NULL 值。
允許的值為 truefalse
- 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
Email 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 連結服務

以下是可協助您升級連結服務和相關查詢的步驟:

  1. 參考必要條件,以在 Salesforce 入口網站中設定連線的應用程式。

  2. 參閱連結服務屬性,以建立新的 Salesforce Service Cloud 連結服務並加以設定。

  3. 如果您在複製活動來源或參照舊版連結服務的查閱活動中使用 SQL 查詢,則必須將其轉換為 SOQL 查詢。 從Salesforce Service Cloud 作為來源類型 (部分機器翻譯) 和 Salesforce Object Query Language (SOQL) (英文) 深入了解 SOQL 查詢。

  4. 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>"}

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區