Freigeben über


Kopieren von Daten aus und nach Salesforce V2 mit Azure Data Factory oder Azure Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tip

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. In Microsoft Fabric können Sie alle erforderlichen Aufgaben ausführen, 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 Kopieraktivität in Azure Data Factory- und Azure Synapse-Pipelines verwenden, um Daten aus und in Salesforce zu kopieren. Er baut auf dem Artikel zur Übersicht über die Kopieraktivität auf, der eine allgemeine Übersicht über die Kopieraktivität enthält.

Important

Der Salesforce V1-Connector wird entfernt. Sie werden empfohlen, den Salesforce-Connector von V1 auf V2 zu aktualisieren.

Unterstützte Funktionen

Der Salesforce-Connector wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR
Copy-Aktivität (Quelle/Senke) (1) (2)
Nachschlageaktivität (1) (2)

① 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-Connector unterstützt insbesondere Folgendes:

  • Salesforce Developer, Professional, Enterprise oder Unlimited Edition.
  • Kopieren von Daten aus und in eine benutzerdefinierte Domäne (eine benutzerdefinierte Domäne kann sowohl in Produktions- als auch in Sandboxumgebungen konfiguriert werden).

Sie können die zum Lesen/Schreiben von Daten verwendete API-Version explizit über die apiVersion-Eigenschaft im verknüpften Dienst festlegen. Beim Kopieren von Daten in Salesforce verwendet der Connector BULK API 2.0.

Prerequisites

  • API-Berechtigungen müssen in Salesforce aktiviert sein.

  • Sie müssen die Connected Apps im Salesforce-Portal konfigurieren, indem Sie sich auf dieses offizielle Dokument oder unsere Schritt-für-Schritt-Anleitung in der Empfehlung in diesem Artikel beziehen.

    Important

    • Der oder die ausführende Benutzer*in benötigt die Berechtigung „API Only“.
    • Die Ablaufzeit des Zugriffstokens kann über Sitzungsrichtlinien anstelle des Aktualisierungstokens geändert werden.

Grenzwerte der Salesforce-Bulk-API 2.0

Wir verwenden die Salesforce-Bulk-API 2.0 zum Abfragen und Erfassen von Daten. In der Bulk-API 2.0 werden Batches automatisch für Sie erstellt. Sie können bis zu 15.000 Batches pro rollierendem 24-Stunden-Zeitraum übermitteln. Wenn Batches den Grenzwert überschreiten, werden Fehler angezeigt.

In der Bulk-API 2.0 verbrauchen nur Erfassungsaufträge Batches, Abfrageaufträge jedoch nicht. Ausführliche Informationen finden Sie unter Verarbeiten von Anforderungen im Bulk API 2.0-Entwicklerhandbuch.

Weitere Informationen finden Sie im Abschnitt „Allgemeine Grenzwerte“ im Dokument Salesforce-Entwicklergrenzwerte.

Get started

Zum Ausführen der Kopieraktivität mit einer Pipeline können Sie eines der folgenden Tools oder SDKs verwenden:

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

Verwenden Sie die folgenden Schritte, um einen verknüpften Dienst mit Salesforce auf der Azure-Portal Benutzeroberfläche 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-Connector aus.

    Screenshot, der den Salesforce-Connector zeigt.

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

    Screenshot, der die Konfiguration des verknüpften Diensts für Salesforce zeigt.

Details zur Connectorkonfiguration

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

Eigenschaften des verknüpften Diensts

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

Property Description Required
type Die type-Eigenschaft muss auf SalesforceV2 festgelegt sein. Yes
environmentUrl Geben Sie die URL der Salesforce-Instanz an.
Geben Sie z. B. "https://<domainName>.my.salesforce.com" an, um Daten aus der benutzerdefinierten Domäne zu kopieren. In diesem Artikel erfahren Sie, wie Sie Ihre benutzerdefinierte Domäne konfigurieren oder anzeigen.
Yes
authenticationType Typ der Authentifizierung für die Verbindung mit Salesforce.
Der zulässige Wert ist OAuth2ClientCredentials.
Yes
clientId Geben Sie die Client-ID der verbundenen Salesforce OAuth 2.0-App an. Weitere Informationen finden Sie in diesem Artikel. Yes
clientSecret Geben Sie den geheimen Clientschlüssel der verbundenen Salesforce OAuth 2.0-App an. Weitere Informationen finden Sie in diesem Artikel. Yes
apiVersion Geben Sie die zu verwendende Salesforce Bulk API 2.0-Version an, z. B. 52.0. Die Bulk API 2.0 unterstützt nur API-Versionen >= 47.0. Weitere Informationen zur Bulk API 2.0 finden Sie in diesem Artikel. Wenn Sie eine niedrigere API-Version verwenden, tritt ein Fehler auf. Yes
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. No

Beispiel: Speichern von Anmeldeinformationen

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "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"
        }
    }
}

Beispiel: Speichern von Anmeldeinformationen im Key Vault

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "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"
        }
    }
}

Beispiel: Speichern von Anmeldeinformationen sowie environmentUrl und clientId in Key Vault

Durch das Speichern von Anmeldeinformationen sowie environmentUrl und clientId in Key Vault können Sie die Benutzeroberfläche zum Bearbeiten von Einstellungen länger verwenden. Das Kontrollkästchen Dynamische Inhalte im JSON-Format angeben muss aktiviert sein, und Sie müssen diese Konfiguration manuell bearbeiten. Der Vorteil dieses Szenarios ist, dass Sie alle Konfigurationseinstellungen aus Key Vault ableiten können, statt an dieser Stelle Parameter hinzuzufügen.

{
    "name": "SalesforceLinkedService",
    "properties": {
        "type": "SalesforceV2",
        "typeProperties": {
            "environmentUrl": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of environment URL in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "authenticationType": "OAuth2ClientCredentials",
            "clientId": {
                "type": "AzureKeyVaultSecret",
                "secretName": "<secret name of client ID in AKV>",
                "store": {
                    "referenceName": "<Azure Key Vault linked service>",
                    "type": "LinkedServiceReference"
                },
            },
            "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"
        }
    }
}

Dataseteigenschaften

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-Dataset unterstützt werden.

Legen Sie zum Kopieren von Daten aus und nach Salesforce die type-Eigenschaft des Datasets auf SalesforceV2Object fest. Die folgenden Eigenschaften werden unterstützt.

Property Description Required
type Die type-Eigenschaft muss auf SalesforceV2Object festgelegt sein. Yes
objectApiName Der Name des Salesforce-Objekts, aus dem Daten abgerufen werden sollen. Die zutreffende Version der selbstgehosteten Integration Runtime ist mindestens 5.44.8984.1. Nein: Quelle (wenn „Abfrage“ in der Quelle angegeben ist), Ja: Senke
reportId Die ID des Salesforce-Berichts, aus dem Daten abgerufen werden sollen. Es wird in der Senke nicht unterstützt. Das Verwenden von Berichten unterliegt Einschränkungen. Die zutreffende Version der selbstgehosteten Integration Runtime ist mindestens 5.44.8984.1. Nein: Quelle (wenn „Abfrage“ in der Quelle angegeben ist), Senke wird nicht unterstützt

Important

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

der API-Name für die Salesforce-Verbindung

Example:

{
    "name": "SalesforceDataset",
    "properties": {
        "type": "SalesforceV2Object",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

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-Quelle und -Senke unterstützt werden.

Salesforce als Quelltyp

Legen Sie zum Kopieren von Daten aus Salesforce den Quelltyp in der Kopieraktivität auf SalesforceV2Source fest. Die folgenden Eigenschaften werden im Abschnitt source der Kopieraktivität unterstützt.

Property Description Required
type Die type-Eigenschaft der Quelle der Kopieraktivität muss auf SalesforceV2Source festgelegt werden. Yes
query Verwendet die benutzerdefinierte Abfrage zum Lesen von Daten. Sie können nur salesforce Object Query Language (SOQL)- Abfrage verwenden. Wenn keine Abfrage angegeben ist, werden alle Daten des Salesforce-Objekts abgerufen, das in „objectApiName/reportId“ im Dataset angegeben ist. Nein (wenn „objectApiName/reportId“ im Dataset angegeben ist)
includeDeletedObjects Gibt an, ob die vorhandenen Datensätze oder alle Datensätze (einschließlich gelöschter Datensätze) abgefragt werden sollen. Wenn nicht angegeben, lautet das Standardverhalten „false“.
Zulässige Werte sind false (Standard) und true.
No
partitionOption Stellen Sie die Möglichkeit bereit, den optimalen Partitionierungsalgorithmus automatisch zu erkennen und anzuwenden, um den Lesedurchsatz bei Bedarf zu optimieren. Es wird empfohlen, AutoDetect für langlaufende Kopien anzugeben, die von Multithread-Lesevorgängen profitieren können. Der Standardwert ist AutoDetect. No

Important

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

Eine Liste der API-Namen für die Salesforce-Verbindung

Example:

"activities":[
    {
        "name": "CopyFromSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Salesforce input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SalesforceV2Source",
                "query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
                "includeDeletedObjects": false,
                "partitionOption": "AutoDetect"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salesforce als Senkentyp

Legen Sie zum Kopieren von Daten nach Salesforce den Senkentyp in der Kopieraktivität auf SalesforceV2Sink fest. Die folgenden Eigenschaften werden im Abschnitt sink der Kopieraktivität unterstützt.

Property Description Required
type Die type-Eigenschaft der Senke der Kopieraktivität muss auf SalesforceV2Sink festgelegt werden. Yes
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-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 geschrieben werden. Es wird empfohlen, einen Wert zwischen 10.000 und 200.000 festzulegen. Zu wenige Zeilen in jedem Batch beeinträchtigen die Kopierleistung. Zu viele Zeilen in jedem Batch können zu API-Timeouts führen. Nein (Standardwert: 100.000)
ignoreNullValues Gibt an, ob NULL-Werte aus Eingabedaten während eines Schreibvorgangs ignoriert werden sollen.
Zulässige Werte sind true und false.
- True: Lassen Sie die Daten im Zielobjekt unverändert, wenn Sie einen „Upsert“- oder „Update“-Vorgang ausführen. Fügt beim Ausführen eines insert-Vorgangs einen definierten Standardwert ein.
- False: Aktualisieren Sie die Daten im Zielobjekt auf NULL, 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.  No

Beispiel: Salesforce-Senke in einer Kopieraktivität

"activities":[
    {
        "name": "CopyToSalesforce",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Salesforce output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SalesforceV2Sink",
                "writeBehavior": "Upsert",
                "externalIdFieldName": "CustomerId__c",
                "writeBatchSize": 10000,
                "ignoreNullValues": true
            }
        }
    }
]

Datentypzuordnung für Salesforce

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

Salesforce-Datentyp Zwischendatentyp des Diensts
Auto Number String
Checkbox Boolean
Currency Decimal
Date DateTime
Date/Time DateTime
Email String
ID String
Lookup-Beziehung String
Multi-Select Picklist String
Number Decimal
Percent Decimal
Phone String
Picklist String
Text String
Textfeld String
Text Area (Long) String
Text Area (Rich) String
Text (verschlüsselt) String
URL String

Note

Der Salesforce-Typ „Zahl“ entspricht dem Typ „Dezimal“ 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 Benutzerdefinierte Felddefinition bearbeiten von Salesforce auf einen vernünftig großen Wert erhöhen.

Eigenschaften der Lookup-Aktivität

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

Salesforce Connector-Lebenszyklus und -Upgrade

Die folgende Tabelle zeigt die Veröffentlichungsphase und Änderungsprotokolle für verschiedene Versionen des Salesforce-Connectors:

Version Freigabestufe Änderungsprotokoll
Salesforce V1 Entfernt Nicht zutreffend.
Salesforce V2 GA-Version verfügbar • Unterstützung der OAuth2ClientCredentials-Authentifizierung anstelle der Standardauthentifizierung.

• Nur SOQL-Abfrage unterstützen.

• Unterstützen Berichte durch Auswählen einer Berichts-ID.

• Unterstützung von partitionOption in der Quelle der Kopieraktivität.

readBehavior wird durch includeDeletedObjects in der Kopieraktivitätsquelle oder der Nachschlageaktivität ersetzt.

Upgrade des Salesforce-Connectors von V1 auf V2

Die folgenden Schritte unterstützen Sie beim Upgrade Ihres Salesforce-Connectors:

  1. Konfigurieren Sie die verbundenen Apps im Salesforce-Portal wie unter Voraussetzungen beschrieben.

  2. Erstellen Sie einen neuen verknüpften Salesforce-Dienst, und konfigurieren Sie ihn wie unter Eigenschaften des verknüpften Diensts beschrieben. Sie müssen auch vorhandene Datasets, die auf dem alten verknüpften Dienst basieren, manuell aktualisieren und jedes Dataset bearbeiten, um stattdessen den neuen verknüpften Dienst zu verwenden.

  3. Wenn Sie eine SQL-Abfrage in der Quelle der Copy-Aktivität oder der Lookupaktivität verwenden, die sich auf den verknüpften V1-Dienst bezieht, müssen Sie sie in eine SOQL-Abfrage konvertieren. Weitere Informationen zu SOQL-Abfragen finden Sie unter Salesforce als Quelltyp und Salesforce Object Query Language (SOQL).

  4. Unterstützung von partitionOption in der Quelle der Kopieraktivität. Die detaillierte Konfiguration finden Sie unter Salesforce als Quelltyp.

  5. readBehavior wird in der Kopieraktivitätsquelle oder bei der Nachschlageaktivität durch includeDeletedObjects ersetzt. Die detaillierte Konfiguration finden Sie unter Salesforce als Quelltyp.

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