Kopieren von Daten aus und nach Salesforce Service Cloud mit Azure Data Factory oder Synapse Analytics (Legacy)

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

In diesem Artikel wird beschrieben, wie Sie die Copy-Aktivität in Azure Data Factory- und Synapse Analytics-Pipelines verwenden, um Daten aus und nach Salesforce Service Cloud zu kopieren. Er baut auf dem Artikel zur Übersicht über die Kopieraktivität auf, der eine allgemeine Übersicht über die Kopieraktivität enthält.

Wichtig

Der Dienst umfasst einen neuen Salesforce Service Cloud-Connector, der bessere native Salesforce Service Cloud-Unterstützung bietet. Ausführliche Informationen dazu finden Sie im Artikel Salesforce Service Cloud-Connector.

Unterstützte Funktionen

Dieser Salesforce Service Cloud Connector wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR
Kopieraktivität (Quelle/Senke) ① ②
Lookup-Aktivität ① ②

① Azure Integration Runtime ② Selbstgehostete Integration Runtime

Eine Liste der Datenspeicher, die als Quellen oder Senken unterstützt werden, finden Sie in der Tabelle der unterstützten Datenspeicher.

Dieser Salesforce Service Cloud-Connector unterstützt insbesondere Folgendes:

  • Salesforce Developer, Professional, Enterprise oder Unlimited Edition.
  • Datenkopiervorgänge aus der und in die Produktionsumgebung, den Sandkasten und die benutzerdefinierte Domäne von Salesforce.

Der Salesforce-Connector baut auf der Salesforce REST/Bulk-API auf. Beim Kopieren von Daten aus Salesforce verwendet der Connector standardmäßig v45 und wählt basierend auf der Datengröße automatisch zwischen REST-API und Bulk-API. Bei einem umfangreichen Resultset wird die Bulk-API verwendet, um eine bessere Leistung zu erzielen. Beim Schreiben von Daten in Salesforce verwendet der Connector v40 der Bulk-API. Sie können die zum Lesen/Schreiben von Daten verwendete API-Version auch explizit über die Eigenschaft apiVersion im verknüpften Dienst festlegen.

Voraussetzungen

API-Berechtigungen müssen in Salesforce aktiviert sein.

Anforderungslimits in Salesforce

Salesforce weist Grenzwerte sowohl für die Gesamtanzahl von API-Anforderungen als auch für die Anzahl gleichzeitiger API-Anforderungen auf. Beachten Sie folgende Punkte:

  • Wenn die Anzahl von gleichzeitigen Anforderungen das Limit überschreitet, setzt eine Drosselung ein, und es werden zufällig generierte Fehler angezeigt.
  • Wenn die Gesamtanzahl von Anforderungen das Limit überschreitet, wird das Salesforce-Konto 24 Stunden lang gesperrt.

In beiden Szenarien erhalten Sie möglicherweise auch die Fehlermeldung „REQUEST_LIMIT_EXCEEDED“. Weitere Informationen finden Sie im Abschnitt „API Request Limits“ (API-Anforderungslimits) im Dokument Salesforce Developer Limits (Salesforce-Entwicklerlimits).

Erste Schritte

Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:

Erstellen eines verknüpften Diensts mit Salesforce Service Cloud über die Benutzeroberfläche

Verwenden Sie die folgenden Schritte, um einen mit Salesforce Service Cloud verknüpften Dienst in der Benutzeroberfläche des Azure-Portals zu erstellen.

  1. Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zur Registerkarte „Verwalten“, wählen Sie „Verknüpfte Dienste“ aus, und klicken Sie dann auf „Neu“:

  2. Suchen Sie nach „Salesforce“, und wählen Sie den Salesforce Service Cloud-Connector aus.

    Select the Salesforce Service Cloud connector.

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Configure a linked service to Salesforce Service Cloud.

Details zur Connectorkonfiguration

Die folgenden Abschnitte enthalten Details zu Eigenschaften, die zum Definieren von Data Factory-Entitäten speziell für den Salesforce Service Cloud-Connector verwendet werden.

Eigenschaften des verknüpften Diensts

Folgende Eigenschaften werden für den mit Salesforce verknüpften Dienst unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft muss auf SalesforceServiceCloud festgelegt werden. Ja
environmentUrl Geben Sie die URL der Salesforce Service Cloud-Instanz an.
– Der Standardwert ist "https://login.salesforce.com".
– Um Daten aus einem Sandkasten zu kopieren, geben Sie "https://test.salesforce.com" an.
– Geben Sie zum Kopieren von Daten aus einer benutzerdefinierten Domäne z.B. "https://[domain].my.salesforce.com" an.
Nein
username Geben Sie einen Benutzernamen für das Benutzerkonto an. Ja
password Geben Sie ein Kennwort für das Benutzerkonto an.

Markieren Sie dieses Feld als einen „SecureString“, um es sicher zu speichern, oder verweisen Sie auf ein in Azure Key Vault gespeichertes Geheimnis.
Ja
securityToken Geben Sie ein Sicherheitstoken für das Benutzerkonto an.

Allgemeine Informationen zu Sicherheitstoken finden Sie unter Security and the API(Sicherheit und die API). Das Sicherheits Token kann nur übersprungen werden, wenn Sie die IP-Adresse der Integration Runtime zur Liste vertrauenswürdige IP-Adressen in Salesforce hinzufügen. Weitere Informationen zur Verwendung von Azure Integration Runtime (Azure IR) finden Sie unter IP-Adressen von Azure Integration Runtime.

Anleitungen zum Abrufen und Zurücksetzen eines Sicherheitstokens finden Sie unter Get a security token (Abrufen eines Sicherheitstokens). Markieren Sie dieses Feld als SecureString, um es sicher in Data Factory zu speichern, oder verweisen Sie auf ein in Azure Key Vault gespeichertes Geheimnis.
Nein
apiVersion Geben Sie die zu verwendende Salesforce REST/Bulk-API-Version an, z. B. 48.0. Standardmäßig verwendet der Connector v45 zum Kopieren von Daten aus Salesforce und v40 zum Kopieren von Daten in Salesforce. Nein
connectVia Die Integration Runtime, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Wenn keine Option angegeben ist, wird die standardmäßige Azure Integration Runtime verwendet. Nein

Beispiel: Speichern von Anmeldeinformationen

{
    "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"
        }
    }
}

Beispiel: Speichern von Anmeldeinformationen in Key Vault

{
    "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"
        }
    }
}

Dataset-Eigenschaften

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie im Artikel zu Datasets. Dieser Abschnitt enthält eine Liste der Eigenschaften, die vom Salesforce Service Cloud-Dataset unterstützt werden.

Wenn Sie Daten aus oder in Salesforce Service Cloud kopieren möchten, werden die folgenden Eigenschaften unterstützt.

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft muss auf SalesforceServiceCloudObject festgelegt werden. Ja
objectApiName Der Name des Salesforce-Objekts, aus dem Daten abgerufen werden sollen. Quelle: Nein, Senke: Ja

Wichtig

Der Teil „__c“ von API Name wird für benutzerdefinierte Objekte benötigt.

Salesforce connection API Name

Beispiel:

{
    "name": "SalesforceServiceCloudDataset",
    "properties": {
        "type": "SalesforceServiceCloudObject",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce Service Cloud linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}
Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft des Datasets muss auf RelationalTable festgelegt werden. Ja
tableName Name der Tabelle in Salesforce Service Cloud. Nein (wenn „query“ in der Aktivitätsquelle angegeben ist)

Eigenschaften der Kopieraktivität

Eine vollständige Liste mit den Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie im Artikel Pipelines. Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der Salesforce Service Cloud-Quelle und -Senke unterstützt werden.

Salesforce Service Cloud als Quelltyp

Wenn Sie Daten aus Salesforce Service Cloud kopieren möchten, werden die folgenden Eigenschaften im Abschnitt source der Kopieraktivität unterstützt.

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Quelle der Kopieraktivität muss auf SalesforceServiceCloudSource festgelegt werden. Ja
Abfrage Verwendet die benutzerdefinierte Abfrage zum Lesen von Daten. Sie können eine Abfrage vom Typ Salesforce Object Query Language (SOQL) oder eine SQL-92-Abfrage verwenden. Weitere Tipps finden Sie im Abschnitt Tipps zu Abfragen. Wenn die Abfrage nicht angegeben ist, werden alle Daten des Salesforce Service Cloud-Objekts abgerufen, die im Dataset unter „objectApiName“ angegeben sind. Nein (wenn „objectApiName“ im Dataset angegeben ist)
readBehavior Gibt an, ob die vorhandenen Datensätze oder alle Datensätze (einschließlich gelöschter Datensätze) abgefragt werden sollen. Wird diese Option nicht angegeben, wird standardmäßig das erste Verhalten angewendet.
Zulässige Werte: query (Standard), queryAll
Nein

Wichtig

Der Teil „__c“ von API Name wird für benutzerdefinierte Objekte benötigt.

Salesforce connection API Name list

Beispiel:

"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>"
            }
        }
    }
]

Hinweis

Die Salesforce Service Cloud-Quelle unterstützt keine Proxyeinstellungen in der selbst gehosteten Integration Runtime, aber eine Senke schon.

Salesforce Service Cloud als Senkentyp

Wenn Sie Daten in Salesforce Service Cloud kopieren möchten, werden die folgenden Eigenschaften im Abschnitt sink der Kopieraktivität unterstützt.

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Senke der Kopieraktivität muss auf SalesforceServiceCloudSink festgelegt werden. Ja
writeBehavior Das Schreibverhalten für den Vorgang.
Zulässige Werte: Insert und Upsert.
Nein (Standardwert ist „Insert“)
externalIdFieldName Der Name des externen ID-Felds für den upsert-Vorgang. Das angegebene Feld muss als „Externes ID-Feld“ im Salesforce Service Cloud-Objekt definiert werden. Es kann keine NULL-Werte in den entsprechenden Eingabedaten haben. Ja für „Upsert“
writeBatchSize Die Zeilenanzahl der Daten, die in jedem Batch in Salesforce Service Cloud geschrieben werden. Nein (Standardwert ist 5000)
ignoreNullValues Gibt an, ob NULL-Werte aus Eingabedaten während eines Schreibvorgangs ignoriert werden sollen.
Zulässige Werte sind true und false.
- true: Daten im Zielobjekt bleiben unverändert, wenn Sie einen upsert- oder update-Vorgang ausführen. Fügt beim Ausführen eines insert-Vorgangs einen definierten Standardwert ein.
- false: Daten im Zielobjekt werden auf NULL aktualisiert, wenn Sie einen upsert- oder update-Vorgang ausführen. Fügt beim Ausführen eines insert-Vorgangs einen NULL-Wert ein.
Nein (Standardwert ist „false“)
 maxConcurrentConnections Die Obergrenze gleichzeitiger Verbindungen mit dem Datenspeicher während der Aktivitätsausführung. Geben Sie diesen Wert nur an, wenn Sie die Anzahl der gleichzeitigen Verbindungen begrenzen möchten.  Ohne

Beispiel:

"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
            }
        }
    }
]

Tipps zu Abfragen

Abrufen von Daten aus einem Salesforce Service Cloud-Bericht

Sie können Daten aus Salesforce Service Cloud-Berichten abrufen, indem Sie eine Abfrage als {call "<report name>"} angeben. z. B. "query": "{call \"TestReport\"}".

Abrufen von gelöschten Datensätzen aus dem Salesforce Service Cloud-Papierkorb

Zum Abfragen der vorläufig gelöschten Datensätze aus dem Salesforce Service Cloud-Papierkorb können Sie in der Abfrage readBehavior als queryAll angeben.

Unterschied zwischen SOQL- und SQL-Abfragesyntax

Beim Kopieren von Daten aus Salesforce Service Cloud können Sie eine SOQL- oder eine SQL-Abfrage verwenden. Beachten Sie, dass diese beiden Sprachen unterschiedliche Syntax aufweisen und unterschiedliche Funktionen unterstützen. Mischen Sie beides nicht. Es wird empfohlen, die SOQL-Abfrage zu verwenden, die nativ von Salesforce Service Cloud unterstützt wird. In der folgenden Tabelle werden die Hauptunterschiede aufgeführt:

Syntax SOQL-Modus SQL-Modus
Spaltenauswahl Die zu kopierenden Felder müssen in der Abfrage aufgezählt werden, z.B. SELECT field1, filed2 FROM objectname. SELECT * wird zusätzlich zur Spaltenauswahl unterstützt.
Anführungszeichen Feld-/Objektnamen dürfen nicht in Anführungszeichen eingeschlossen werden. Feld-/Objektnamen dürfen in Anführungszeichen eingeschlossen werden, z.B. SELECT "id" FROM "Account".
Datetime-Format Details finden Sie hier, Beispiele im nächsten Abschnitt. Details finden Sie hier, Beispiele im nächsten Abschnitt.
Boolesche Werte Dargestellt als False und True, z.B. SELECT … WHERE IsDeleted=True. Dargestellt als 0 oder 1, z.B. SELECT … WHERE IsDeleted=1.
Umbenennen von Spalten Wird nicht unterstützt. Unterstützt, z.B. SELECT a AS b FROM ….
Beziehung Unterstützt, z.B. Account_vod__r.nvs_Country__c. Wird nicht unterstützt.

Abrufen von Daten mithilfe einer Where-Klausel für die Spalte „DateTime“

Achten Sie beim Angeben der SOQL- oder SQL-Abfrage auf den Unterschied beim DateTime-Format. Beispiel:

  • SOQL-Beispiel: 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-Beispiel: 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')}'}

Fehler MALFORMED_QUERY: Abgeschnitten

Wenn der Fehler „MALFORMED_QUERY: Truncated“ auftritt, ist dies normalerweise darauf zurückzuführen, dass Sie die Spalte vom Typ JunctionIdList in den Daten verwenden und Salesforce die Unterstützung solcher Daten mit einer großen Anzahl von Zeilen einschränkt. Um dies zu verhindern, versuchen Sie, die Spalte JunctionIdList auszuschließen oder die Anzahl der zu kopierenden Zeilen zu begrenzen (Sie können in mehrere Kopiervorgänge partitionieren).

Datentypzuordnung für Salesforce Service Cloud

Beim Kopieren von Daten aus Salesforce Service Cloud werden die folgenden Zuordnungen von Salesforce Service Cloud-Datentypen zu den vom Dienst intern verwendeten Zwischendatentypen verwendet. Weitere Informationen dazu, wie die Kopieraktivität das Quellschema und den Datentyp zur Senke zuordnet, finden Sie unter Schema- und Datentypzuordnungen.

Salesforce Service Cloud-Datentyp Zwischendatentyp des Diensts
Auto Number String
Checkbox Boolean
Währung Decimal
Date Datetime
Date/Time Datetime
E‑Mail String
id String
Lookup Relationship String
Multi-Select Picklist String
Number Decimal
Percent Decimal
Phone String
Picklist String
Text String
Text Area String
Text Area (Long) String
Text Area (Rich) String
Text (Encrypted) String
URL String

Hinweis

Der Salesforce Service Cloud-Typ „Number“ entspricht dem Typ „Decimal“ in den Azure Data Factory- und Azure Synapse-Pipelines als Zwischendatentyp eines Dienstes. Der Typ „Dezimal“ berücksichtigt die definierte Genauigkeit und Skalierung. Für Daten, deren Dezimalstellen die definierte Skalierung überschreiten, wird der Wert in Vorschaudaten und -kopien abgerundet. Um einen solchen Genauigkeitsverlust in Azure Data Factory und Azure Synapse Pipelines zu vermeiden, sollten Sie die Dezimalstellen auf der Seite Custom Field Definition Edit von Salesforce Service Cloud auf einen ausreichenden Wert erhöhen.

Eigenschaften der Lookup-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter Lookup-Aktivität.

Nächste Schritte

Eine Liste der Datenspeicher, die als Quelles und Senken für die Kopieraktivität unterstützt werden, finden Sie in Unterstützte Datenspeicher.