Share via


Gegevens kopiëren van en naar Salesforce met behulp van Azure Data Factory of Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u kopieeractiviteit gebruikt in Azure Data Factory- en Azure Synapse-pijplijnen om gegevens van en naar Salesforce te kopiëren. Het is gebaseerd op het artikel Overzicht van kopieeractiviteit met een algemeen overzicht van de kopieeractiviteit.

Belangrijk

De nieuwe Salesforce-connector biedt verbeterde systeemeigen Salesforce-ondersteuning. Als u de verouderde Salesforce-connector in uw oplossing gebruikt, moet u uw Salesforce-connector vóór 11 oktober 2024 upgraden. Raadpleeg deze sectie voor meer informatie over het verschil tussen de verouderde en de nieuwste versie.

Ondersteunde mogelijkheden

Deze Salesforce-connector wordt ondersteund voor de volgende mogelijkheden:

Ondersteunde mogelijkheden IR
Copy-activiteit (bron/sink) (1) (2)
Activiteit Lookup (1) (2)

(1) Azure Integration Runtime (2) Zelf-hostende Integration Runtime

Zie de tabel Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen of sinks.

Deze Salesforce-connector ondersteunt met name het volgende:

  • Salesforce Developer-, Professional-, Enterprise- of Unlimited-edities.
  • Gegevens kopiëren van en naar aangepast domein (aangepast domein kan worden geconfigureerd in zowel productie- als sandboxomgevingen).

U kunt expliciet de API-versie instellen die wordt gebruikt voor het lezen/schrijven van gegevens via apiVersion de eigenschap in de gekoppelde service. Wanneer u gegevens naar Salesforce kopieert, gebruikt de connector BULK API 2.0.

Vereisten

  • DE API-machtiging moet zijn ingeschakeld in Salesforce.

  • U moet de connected apps configureren in de Salesforce-portal die naar dit officiële document verwijzen of naar onze stapsgewijze richtlijn in de aanbeveling in dit artikel.

    Belangrijk

    • De gebruiker van de uitvoering moet alleen de API-machtiging hebben.
    • De verlooptijd van het toegangstoken kan worden gewijzigd via sessiebeleid in plaats van het vernieuwingstoken.

Limieten voor Salesforce Bulk API 2.0

We gebruiken Salesforce Bulk API 2.0 om gegevens op te vragen en op te nemen. In Bulk-API 2.0 worden batches automatisch voor u gemaakt. U kunt maximaal 15.000 batches verzenden per periode van 24 uur. Als batches de limiet overschrijden, treden er fouten op.

In Bulk-API 2.0 verbruiken alleen taken batches. Querytaken niet. Zie Hoe aanvragen worden verwerkt in de ontwikkelaarshandleiding voor bulk-API 2.0 voor meer informatie.

Zie de sectie 'Algemene limieten' in Salesforce-limieten voor ontwikkelaars voor meer informatie.

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde service maken met Salesforce met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde service te maken voor Salesforce in de gebruikersinterface van Azure Portal.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar Salesforce en selecteer de Salesforce-connector.

    Schermopname van de Salesforce-connector.

  3. Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.

    Schermopname van de configuratie van de gekoppelde service voor Salesforce.

Configuratiedetails van connector

De volgende secties bevatten details over eigenschappen die worden gebruikt om entiteiten te definiëren die specifiek zijn voor de Salesforce-connector.

Eigenschappen van gekoppelde service

De volgende eigenschappen worden ondersteund voor de gekoppelde Salesforce-service.

Eigenschappen Beschrijving Vereist
type De typeeigenschap moet worden ingesteld op SalesforceV2. Ja
environmentUrl Geef de URL van het Salesforce-exemplaar op.
Geef "https://<domainName>.my.salesforce.com" bijvoorbeeld op om gegevens uit het aangepaste domein te kopiëren. Meer informatie over het configureren of weergeven van uw aangepaste domein dat naar dit artikel verwijst.
Ja
authenticationType Type verificatie dat wordt gebruikt om verbinding te maken met Salesforce.
De toegestane waarde is OAuth2ClientCredentials.
Ja
clientId Geef de client-id van de verbonden Salesforce OAuth 2.0-app op. Ga naar dit artikel voor meer informatie Ja
clientSecret Geef het clientgeheim van de verbonden Salesforce OAuth 2.0-app op. Ga naar dit artikel voor meer informatie Ja
apiVersion Geef de salesforce bulk-API 2.0-versie op die u wilt gebruiken, 52.0bijvoorbeeld. De Bulk-API 2.0 ondersteunt alleen API-versie >= 47.0. Zie het artikel voor meer informatie over de bulk-API 2.0-versie. Er treedt een fout op als u een lagere API-versie gebruikt. Ja
connectVia De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. Als dit niet is opgegeven, wordt de standaard Azure Integration Runtime gebruikt. Nee

Voorbeeld: Referenties opslaan

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

Voorbeeld: Referenties opslaan in 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"
        }
    }
}

Voorbeeld: Referenties opslaan in Key Vault, evenals environmentUrl en clientId

Door referenties op te slaan in Key Vault, evenals environmentUrl en clientId, kunt u de gebruikersinterface langer gebruiken om instellingen te bewerken. Het selectievakje Dynamische inhoud opgeven in JSON-indeling moet zijn ingeschakeld en u moet deze configuratie handmatig uitvoeren. Het voordeel van dit scenario is dat u alle configuratie-instellingen kunt afleiden uit de Key Vault in plaats van alles hier te parameteriseren.

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

Eigenschappen van gegevensset

Zie het artikel Gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets . Deze sectie bevat een lijst met eigenschappen die worden ondersteund door de Salesforce-gegevensset.

Als u gegevens van en naar Salesforce wilt kopiëren, stelt u de typeeigenschap van de gegevensset in op SalesforceV2Object. De volgende eigenschappen worden ondersteund.

Eigenschappen Beschrijving Vereist
type De eigenschap Type moet worden ingesteld op SalesforceV2Object. Ja
objectApiName De naam van het Salesforce-object waaruit gegevens moeten worden opgehaald. Nee voor bron (als 'query' in bron is opgegeven), Ja voor sink
reportId De id van het Salesforce-rapport waaruit gegevens moeten worden opgehaald. Het wordt niet ondersteund in sink. Er gelden beperkingen wanneer u rapporten gebruikt. Nee voor bron (als 'query' in de bron is opgegeven), biedt geen ondersteuning voor sink

Belangrijk

Het onderdeel '__c' van DE API-naam is nodig voor elk aangepast object.

Naam van salesforce-verbindings-API

Voorbeeld:

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

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van activiteiten. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door salesforce-bron en -sink.

Salesforce als brontype

Als u gegevens uit Salesforce wilt kopiëren, stelt u het brontype in de kopieeractiviteit in op SalesforceV2Source. De volgende eigenschappen worden ondersteund in de sectie bron van de kopieeractiviteit.

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de bron van de kopieeractiviteit moet worden ingesteld op SalesforceV2Source. Ja
query Gebruik de aangepaste query om gegevens te lezen. U kunt alleen een SOQL-query (Salesforce Object Query Language) met beperkingen gebruiken. Zie dit artikel voor SOQL-beperkingen. Als de query niet is opgegeven, worden alle gegevens van het Salesforce-object dat is opgegeven in ObjectApiName/reportId in de gegevensset opgehaald. Nee (als ObjectApiName/reportId in de gegevensset is opgegeven)
includeDeletedObjects Hiermee wordt aangegeven of u een query wilt uitvoeren op de bestaande records of alle records wilt opvragen, inclusief de verwijderde records. Als dit niet is opgegeven, is het standaardgedrag onwaar.
Toegestane waarden: false (standaard), true.
Nee

Belangrijk

Het onderdeel '__c' van DE API-naam is nodig voor elk aangepast object.

Lijst met naam van Salesforce-verbindings-API

Voorbeeld:

"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
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Salesforce als sinktype

Als u gegevens naar Salesforce wilt kopiëren, stelt u het sinktype in de kopieeractiviteit in op SalesforceV2Sink. De volgende eigenschappen worden ondersteund in de sectie sink voor kopieeractiviteiten.

Eigenschappen Beschrijving Vereist
type De typeeigenschap van de sink van de kopieeractiviteit moet worden ingesteld op SalesforceV2Sink. Ja
writeBehavior Het schrijfgedrag voor de bewerking.
Toegestane waarden zijn Invoegen en Upsert.
Nee (standaard is Invoegen)
externalIdFieldName De naam van het externe id-veld voor de upsert-bewerking. Het opgegeven veld moet worden gedefinieerd als extern id-veld in het Salesforce-object. Het kan geen NULL-waarden bevatten in de bijbehorende invoergegevens. Ja voor 'Upsert'
writeBatchSize Het aantal rijen van gegevens dat in elke batch naar Salesforce is geschreven. Stel deze waarde voor tussen 10.000 en 200.000. Te weinig rijen in elke batch verminderen de kopieerprestaties. Te veel rijen in elke batch kunnen een time-out van de API veroorzaken. Nee (standaard is 100.000)
ignoreNullValues Hiermee wordt aangegeven of NULL-waarden van invoergegevens tijdens een schrijfbewerking moeten worden genegeerd.
Toegestane waarden zijn waar en onwaar.
- Waar: laat de gegevens in het doelobject ongewijzigd wanneer u een upsert- of updatebewerking uitvoert. Voeg een gedefinieerde standaardwaarde in wanneer u een invoegbewerking uitvoert.
- Onwaar: werk de gegevens in het doelobject bij naar NULL wanneer u een upsert- of updatebewerking uitvoert. Voeg een NULL-waarde in wanneer u een invoegbewerking uitvoert.
Nee (standaard is onwaar)
 maxConcurrentConnections De bovengrens van gelijktijdige verbindingen die tijdens de uitvoering van de activiteit tot stand zijn gebracht met het gegevensarchief. Geef alleen een waarde op wanneer u gelijktijdige verbindingen wilt beperken.  Nee

Voorbeeld: Salesforce Sink in een kopieeractiviteit

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

Toewijzing van gegevenstypen voor Salesforce

Wanneer u gegevens kopieert uit Salesforce, worden de volgende toewijzingen gebruikt van Salesforce-gegevenstypen naar tussentijdse gegevenstypen binnen de service intern. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe de kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.

Salesforce-gegevenstype Tussentijdse servicegegevenstype
Automatisch nummer String
Selectievakje Booleaanse waarde
Valuta Decimal
Datum Datum en tijd
Datum/tijd Datum en tijd
Email String
Id String
Opzoekrelatie String
Selectielijst met meerdere selecties String
Nummer Decimaal
Procent Decimal
Telefoonnummer String
Picklist String
Tekst String
Tekstgebied String
Tekstgebied (lang) String
Tekstgebied (rich) String
Tekst (versleuteld) String
URL String

Notitie

Het salesforce-nummertype wordt toegewezen aan het decimale type in Azure Data Factory- en Azure Synapse-pijplijnen als een tijdelijk gegevenstype voor de service. Het decimale type respecteert de gedefinieerde precisie en schaal. Voor gegevens waarvan de decimalen de gedefinieerde schaal overschrijden, wordt de waarde ervan afgerond in preview-gegevens en kopiëren. Als u dergelijke precisieverlies in Azure Data Factory- en Azure Synapse-pijplijnen wilt voorkomen, kunt u overwegen om de decimalen te verhogen tot een redelijk grote waarde op de pagina Aangepaste velddefinitie bewerken van Salesforce.

Eigenschappen van opzoekactiviteit

Als u meer wilt weten over de eigenschappen, controleert u de lookup-activiteit.

De gekoppelde Salesforce-service upgraden

Hier volgen stappen waarmee u uw gekoppelde service en gerelateerde query's kunt upgraden:

  1. Configureer de verbonden apps in de Salesforce-portal door te verwijzen naar vereisten.

  2. Maak een nieuwe gekoppelde Salesforce-service en configureer deze door te verwijzen naar de eigenschappen van de gekoppelde service. U moet ook handmatig bestaande gegevenssets bijwerken die afhankelijk zijn van de oude gekoppelde service, waarbij elke gegevensset wordt bewerkt om de nieuwe gekoppelde service te gebruiken. Pijplijnactiviteiten die verwijzen naar de bijgewerkte gegevenssets gebruiken automatisch de bijgewerkte gekoppelde servicereferentie.

  3. Als u SQL-query gebruikt in de bron van de kopieeractiviteit of de opzoekactiviteit die verwijst naar de verouderde gekoppelde service, moet u deze converteren naar de SOQL-query. Meer informatie over SOQL-query's van Salesforce als brontype en Salesforce Object Query Language (SOQL).

  4. readBehavior wordt vervangen door includeDeletedObjects in de bron van de kopieeractiviteit of de opzoekactiviteit. Zie Salesforce als brontype voor de gedetailleerde configuratie.

Verschillen tussen Salesforce en Salesforce (verouderd)

De Salesforce-connector biedt nieuwe functionaliteiten en is compatibel met de meeste functies van salesforce-connector (verouderd). In de volgende tabel ziet u de functieverschillen tussen Salesforce en Salesforce (verouderd).

Salesforce Salesforce (verouderd)
Ondersteuning voor SOQL in Salesforce Bulk API 2.0.
Voor SOQL-query's:
• GROUP BY, LIMIT, ORDER BY, OFFSET of TYPEOF-componenten worden niet ondersteund.
• Statistische functies zoals COUNT() worden niet ondersteund. U kunt Salesforce-rapporten gebruiken om ze te implementeren.
• Datumfuncties in GROUP BY-componenten worden niet ondersteund, maar worden wel ondersteund in de WHERE-component.
• Samengestelde adresvelden of samengestelde geolocatievelden worden niet ondersteund. Als alternatief voert u een query uit op de afzonderlijke onderdelen van samengestelde velden.
• Query's voor bovenliggende naar onderliggende relaties worden niet ondersteund, terwijl onderliggende-naar-bovenliggende relatiequery's worden ondersteund.
Ondersteuning voor zowel SQL- als SOQL-syntaxis.
Objecten die binaire velden bevatten, worden niet ondersteund. Objecten die binaire velden bevatten, worden ondersteund, zoals bijlageobject.
Ondersteuning voor objecten in bulk-API. Zie dit artikel voor meer informatie. Ondersteuningsobjecten die niet worden ondersteund met bulk-API, zoals CaseStatus.
Ondersteuningsrapport door een rapport-id te selecteren. Ondersteuning voor querysyntaxis van rapporten, zoals {call "<report name>"}.

Zie Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de kopieeractiviteit.