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:
- Das Tool „Daten kopieren“
- Azure-Portal
- Das .NET SDK
- Das Python SDK
- Azure PowerShell
- Die REST-API
- Die Azure Resource Manager-Vorlage
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.
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“:
Suchen Sie nach „Salesforce“, und wählen Sie den Salesforce Service Cloud-Connector aus.
Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.
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.
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.
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.