使用 Azure Data Factory 或 Azure Synapse Analytics 將數據從 Salesforce Service Cloud 複製至

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費啟動新的試用版

本文概述如何在 Azure Data Factory 和 Azure Synapse 管線中使用「複製活動」,將數據從 Salesforce Service Cloud 複製及複製到 Salesforce Service Cloud。 它會以 複製活動概觀 一文為基礎,提供複製活動的一般概觀。

重要

新的 Salesforce Service Cloud 連接器提供改良的原生 Salesforce Service Cloud 支援。 如果您在解決方案中使用舊版 Salesforce Service Cloud 連接器,則僅針對回溯相容性支援,請參閱 Salesforce Service Cloud 連接器(舊版) 一文。

支援的功能

下列功能支援此 Salesforce Service Cloud 連接器:

支援的功能 IR
複製活動 (來源/接收) (1) (2)
查閱活動 (1) (2)

① Azure 整合執行階段 ② 自我裝載整合執行階段

如需支援作為來源或接收的數據存放區清單,請參閱 支持的數據存放區 數據表。

具體而言,此 Salesforce Service Cloud 連接器支援:

  • Salesforce Developer、Professional、Enterprise 或 Unlimited 版本。
  • 將數據從和 複製到自定義網域 (自定義網域可以在生產環境與沙盒環境中設定)。

您可以透過連結服務中的 屬性,明確設定用來讀取/寫入數據的 apiVersion API 版本。 將數據複製到 Salesforce Service Cloud 時,連接器會使用 BULK API 2.0。

必要條件

  • 必須在 Salesforce 中啟用 API 許可權。

  • 您需要在 Salesforce 入口網站中設定 連線 應用程式,以參考此官方檔或本文建議中的逐步指導方針。

    重要

    • 執行用戶必須具有僅限 API 許可權。
    • 存取令牌到期時間可以透過會話原則變更,而不是重新整理令牌。

Salesforce 大量 API 2.0 限制

我們使用 Salesforce Bulk API 2.0 來查詢和內嵌數據。 在大量 API 2.0 中,會自動為您建立批次。 每個滾動 24 小時期間最多可以提交 15,000 個批次。 如果批次超過限制,您會看到失敗。

在大量 API 2.0 中,只有內嵌作業會取用批次。 查詢作業不會。 如需詳細資訊,請參閱 大量 API 2.0 開發人員指南中的要求處理方式

如需詳細資訊,請參閱 Salesforce 開發人員限制中的 <一般限制>一節。

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立 Salesforce Service Cloud 的鏈接服務

使用下列步驟,在 Azure 入口網站 UI 中建立 Salesforce Service Cloud 的鏈接服務。

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

  2. 搜尋 Salesforce,然後選取 Salesforce Service Cloud 連接器。

    Salesforce Service Cloud 連接器的螢幕快照。

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

    Salesforce Service Cloud 連結服務設定的螢幕快照。

連接器設定詳細資料

下列各節提供屬性的相關詳細數據,這些屬性是用來定義 Salesforce Service Cloud 連接器專屬的實體。

連結服務屬性

Salesforce Service Cloud 連結服務支援下列屬性。

屬性 描述 必要
type type 屬性必須設定為 SalesforceServiceCloudV2 Yes
environmentUrl 指定 Salesforce Service Cloud 實例的 URL。
例如,指定 "https://<domainName>.my.salesforce.com" 從自定義網域複製數據。 瞭解如何設定或檢視參考本文的自定義網域。
Yes
authenticationType 用來連線到 Salesforce Service Cloud 的驗證類型。
允許的值為 OAuth2ClientCredentials
Yes
clientId 指定 Salesforce OAuth 2.0 連線 ed 應用程式的用戶端識別碼。 如需詳細資訊,請移至這篇文章 Yes
clientSecret 指定 Salesforce OAuth 2.0 連線 應用程式的客戶端密碼。 如需詳細資訊,請移至這篇文章 Yes
apiVersion 指定要使用的 Salesforce Bulk API 2.0 版本,例如 52.0。 大量 API 2.0 僅支援 API 版本 >= 47.0。 若要瞭解大量 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"
        }
    }
}

範例:將認證儲存在 金鑰保存庫

{
    "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 Service Cloud 數據集所支持的屬性清單。

若要從 Salesforce Service Cloud 複製數據,請將數據集的類型屬性設定為 SalesforceServiceCloudV2Object。 支援下列屬性。

屬性 描述 必要
type type 屬性必須設定為 SalesforceServiceCloudV2Object Yes
objectApiName 要從中擷取數據的 Salesforce Service Cloud 物件名稱。 來源為否(如果已指定來源中的 “SOQLQuery”),接收則為 [是]
reportId 要從中擷取數據的 Salesforce Service Cloud 報表標識符。 接收中不支援它。 請注意,使用報表時有 限制 來源為否(如果已指定來源中的 “SOQLQuery”),則不支援接收

重要

任何自定義物件都需要 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 Service 雲端來源和接收所支持的屬性清單。

Salesforce Service Cloud 作為來源類型

若要從 Salesforce Service Cloud 複製數據,請將複製活動中的來源類型設定為 SalesforceServiceCloudV2Source。 複製活動 來源 區段中支援下列屬性。

屬性 描述 必要
type 複製活動來源的 type 屬性必須設定為 SalesforceServiceCloudV2Source Yes
SOQLQuery 使用自訂查詢來讀取資料。 您只能使用 具有限制的 Salesforce 物件查詢語言 (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",
                "SOQLQuery": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
                "includeDeletedObjects": false
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salesforce Service Cloud 作為接收類型

若要將數據複製到 Salesforce Service Cloud,請將複製活動中的接收類型設定為 SalesforceServiceCloudV2Sink。 複製活動 接收 區段中支援下列屬性。

屬性 描述 必要
type 複製活動接收的類型屬性必須設定為 SalesforceServiceCloudV2Sink Yes
writeBehavior 作業的寫入行為。
允許的值為 InsertUpsert
否 (預設值為 Insert)
externalIdFieldName upsert 作業的外部標識符欄位名稱。 指定的欄位必須在 Salesforce Service Cloud 物件中定義為「外部標識符字段」。 在對應的輸入數據中,它不能有 NULL 值。 是表示 “Upsert”
writeBatchSize 每個批次中寫入 Salesforce Service Cloud 的數據列計數。 建議將此值從 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 Service Cloud 的數據類型對應

當您從 Salesforce Service Cloud 複製數據時,下列對應會從 Salesforce Service Cloud 數據類型用於內部服務內的過渡數據類型。 若要瞭解複製活動如何將來源架構和數據類型對應至接收,請參閱 架構和數據類型對應

Salesforce Service Cloud 數據類型 服務過渡期數據類型
自動編號 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 Number 類型會對應至 Azure Data Factory 中的十進位類型,而 Azure Synapse 管線即服務過渡期數據類型。 十進位類型會接受定義的有效位數和小數字數。 對於小數字數超過已定義小數字數的數據,其值會在預覽數據和複製中四捨五入。 若要避免在 Azure Data Factory 和 Azure Synapse 管線中取得這類精確度遺失,請考慮在 Salesforce Service Cloud 的 [自定義欄位定義編輯 ] 頁面中,將小數位數增加為相當大的值。

查閱活動屬性

若要了解屬性的詳細資料,請參閱查閱活動

升級 Salesforce Service Cloud 連結服務

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

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

  2. 建立新的 Salesforce Service Cloud 連結服務,並藉由參考 鏈接服務屬性加以設定。

  3. 如果您在複製活動來源或參照舊版連結服務的查閱活動中使用 SQL 查詢,則必須將它們轉換成 SOQL 查詢。 深入瞭解 Salesforce Service Cloud 作為來源類型和Salesforce 對象查詢語言 (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 大量 API 2.0 內的 SOQL。
針對 SOQL 查詢:
• 不支援 GROUP BY、LIMIT、ORDER BY、OFFSET 或 TYPEOF 子句。
• 不支援 COUNT() 等聚合函數,您可以使用 Salesforce 報表來實作它們。
• 不支援 GROUP BY 子句中的日期函式,但在 WHERE 子句中支持它們。
• 不支援複合位址欄位或複合地理位置欄位。 或者,查詢複合欄位的個別元件。
• 不支援父對子關聯性查詢,而支援子對父關聯性查詢。
同時支援 SQL 和 SOQL 語法。
不支援包含二進位欄位的物件。 支援包含二進位欄位的物件,例如 Attachment 物件。
支援大量 API 中的物件。 如需詳細資訊,請參閱這篇文章 支援大量 API 不支持的物件,例如 CaseStatus。
選取報表標識碼來支援報表。 支援報表查詢語法,例如 {call "<report name>"}

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