Kopiera data från och till Salesforce med Hjälp av Azure Data Factory eller Azure Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du använder kopieringsaktivitet i Azure Data Factory och Azure Synapse-pipelines för att kopiera data från och till Salesforce. Den bygger på översiktsartikeln Kopieringsaktivitet som visar en allmän översikt över kopieringsaktiviteten.

Viktigt!

Den nya Salesforce-anslutningsappen ger förbättrat inbyggt Salesforce-stöd. Om du använder den äldre Salesforce-anslutningsappen i din lösning, som endast stöds för bakåtkompatibilitet, kan du läsa artikeln Salesforce Connector (äldre).

Funktioner som stöds

Den här Salesforce-anslutningsappen stöds för följande funktioner:

Funktioner som stöds IR
aktiviteten Kopiera (källa/mottagare) (1) (2)
Sökningsaktivitet (1) (2)

(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning

En lista över datalager som stöds som källor eller mottagare finns i tabellen Datalager som stöds.

Mer specifikt stöder den här Salesforce-anslutningsappen:

  • Salesforce Developer-, Professional-, Enterprise- eller Unlimited-utgåvor.
  • Kopiera data från och till en anpassad domän (Anpassad domän kan konfigureras i både produktions- och sandbox-miljöer).

Du kan uttryckligen ange den API-version som används för att läsa/skriva data via apiVersion egenskapen i den länkade tjänsten. När du kopierar data till Salesforce använder anslutningsappen BULK API 2.0.

Förutsättningar

  • API-behörigheten måste vara aktiverad i Salesforce.

  • Du behöver konfigurera Anslut ed Apps i Salesforce-portalen som refererar till det här officiella dokumentet eller vår stegvisa riktlinje i rekommendationen i den här artikeln.

    Viktigt!

    • Körningsanvändaren måste ha behörigheten ENDAST API.
    • Förfallotiden för åtkomsttoken kan ändras via sessionsprinciper i stället för uppdateringstoken.

Gränser för Salesforce Bulk API 2.0

Vi använder Salesforce Bulk API 2.0 för att fråga efter och mata in data. I Bulk API 2.0 skapas batchar automatiskt åt dig. Du kan skicka upp till 15 000 batchar per rullande 24-timmarsperiod. Om batcharna överskrider gränsen visas fel.

I Bulk API 2.0 använder endast inmatningsjobb batchar. Frågejobb gör det inte. Mer information finns i Hur begäranden bearbetas i utvecklarguiden för mass-API 2.0.

Mer information finns i avsnittet "Allmänna gränser" i Salesforce-utvecklargränser.

Kom igång

Om du vill utföra aktiviteten Kopiera med en pipeline kan du använda något av följande verktyg eller SDK:er:

Skapa en länkad tjänst till Salesforce med hjälp av användargränssnittet

Använd följande steg för att skapa en länkad tjänst till Salesforce i Användargränssnittet för Azure-portalen.

  1. Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:

  2. Sök efter Salesforce och välj Salesforce-anslutningsappen.

    Skärmbild av Salesforce-anslutningsappen.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Skärmbild av den länkade tjänstkonfigurationen för Salesforce.

Anslut eller konfigurationsinformation

Följande avsnitt innehåller information om egenskaper som används för att definiera entiteter som är specifika för Salesforce-anslutningsappen.

Länkade tjänstegenskaper

Följande egenskaper stöds för den länkade Salesforce-tjänsten.

Property Beskrivning Obligatoriskt
type Typegenskapen måste anges till SalesforceV2. Ja
environmentUrl Ange URL:en för Salesforce-instansen.
Ange till exempel "https://<domainName>.my.salesforce.com" att kopiera data från den anpassade domänen. Lär dig hur du konfigurerar eller visar din anpassade domän som refererar till den här artikeln.
Ja
authenticationType Typ av autentisering som används för att ansluta till Salesforce.
Det tillåtna värdet är OAuth2ClientCredentials.
Ja
clientId Ange klient-ID för Salesforce OAuth 2.0-Anslut appen. Mer information finns i den här artikeln Ja
clientSecret Ange klienthemligheten för Salesforce OAuth 2.0-Anslut appen. Mer information finns i den här artikeln Ja
apiVersion Ange den Salesforce Bulk API 2.0-version som ska användas, t.ex. 52.0. Bulk API 2.0 stöder endast API-version >= 47.0. Mer information om mass-API 2.0-versionen finns i artikeln. Om du använder en lägre API-version resulterar det i ett fel. Ja
connectVia Den integrationskörning som ska användas för att ansluta till datalagret. Om den inte anges använder den standardkörningen för Azure-integrering. Nej

Exempel: Lagra autentiseringsuppgifter

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

Exempel: Lagra autentiseringsuppgifter i 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"
        }
    }
}

Exempel: Lagra autentiseringsuppgifter i Key Vault, samt environmentUrl och clientId

Observera att du inte längre kan använda användargränssnittet för att redigera inställningar genom att göra det. Kryssrutan Ange dynamiskt innehåll i JSON-format markeras och du måste redigera den här konfigurationen helt för hand. Fördelen är att du kan härleda ALLA konfigurationsinställningar från Key Vault i stället för att parametrisera något här.

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

Egenskaper för datauppsättning

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i artikeln Datauppsättningar . Det här avsnittet innehåller en lista över egenskaper som stöds av Salesforce-datauppsättningen.

Om du vill kopiera data från och till Salesforce anger du datauppsättningens typegenskap till SalesforceV2Object. Följande egenskaper stöds.

Property Beskrivning Obligatoriskt
type Typegenskapen måste anges till SalesforceV2Object. Ja
objectApiName Salesforce-objektnamnet som du vill hämta data från. Nej för källan (om "SOQLQuery" i källan har angetts), Ja för mottagare
reportId ID:t för Salesforce-rapporten som du vill hämta data från. Det stöds inte i mottagare. Observera att det finns begränsningar när du använder rapporter. Nej för källan (om "SOQLQuery" i källan har angetts) stöder inte mottagare

Viktigt!

Den "__c" delen av API-namnet behövs för alla anpassade objekt.

Namn på Salesforce-anslutnings-API

Exempel:

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

Kopiera egenskaper för aktivitet

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i artikeln Pipelines . Det här avsnittet innehåller en lista över egenskaper som stöds av Salesforce-källa och mottagare.

Salesforce som källtyp

Om du vill kopiera data från Salesforce anger du källtypen i kopieringsaktiviteten till SalesforceV2Source. Följande egenskaper stöds i avsnittet kopieringsaktivitetskälla.

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetskällan måste anges till SalesforceV2Source. Ja
SOQLQuery Använd den anpassade frågan för att läsa data. Du kan bara använda FRÅGAN Salesforce Object Query Language (SOQL) med begränsningar. Information om SOQL-begränsningar finns i den här artikeln. Om frågan inte anges hämtas alla data för Salesforce-objektet som anges i "ObjectApiName/reportId" i datauppsättningen. Nej (om "ObjectApiName/reportId" i datauppsättningen har angetts)
includeDeletedObjects Anger om du vill köra frågor mot befintliga poster eller fråga alla poster, inklusive de borttagna. Om det inte anges är standardbeteendet falskt.
Tillåtna värden: false (standard), true.
Nej

Viktigt!

Den "__c" delen av API-namnet behövs för alla anpassade objekt.

Namnlista för Salesforce-anslutnings-API

Exempel:

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

Salesforce som mottagartyp

Om du vill kopiera data till Salesforce anger du mottagartypen i kopieringsaktiviteten till SalesforceV2Sink. Följande egenskaper stöds i avsnittet kopieringsaktivitetsmottagare.

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetsmottagaren måste anges till SalesforceV2Sink. Ja
writeBehavior Skrivbeteendet för åtgärden.
Tillåtna värden är Insert och Upsert.
Nej (standard är Infoga)
externalIdFieldName Namnet på det externa ID-fältet för upsert-åtgärden. Det angivna fältet måste definieras som "Externt ID-fält" i Salesforce-objektet. Det kan inte ha NULL-värden i motsvarande indata. Ja för "Upsert"
writeBatchSize Radantalet data som skrivits till Salesforce i varje batch. Föreslå att du anger det här värdet från 10 000 till 200 000. För lite rader i varje batch minskar kopieringsprestandan. För många rader i varje batch kan orsaka API-timeout. Nej (standardvärdet är 100 000)
ignoreNullValues Anger om null-värden ska ignoreras från indata under en skrivåtgärd.
Tillåtna värden är sanna och falska.
- Sant: Lämna data i målobjektet oförändrade när du utför en upsert- eller uppdateringsåtgärd. Infoga ett definierat standardvärde när du utför en infogningsåtgärd.
- Falskt: Uppdatera data i målobjektet till NULL när du utför en upsert- eller uppdateringsåtgärd. Infoga ett NULL-värde när du utför en infogningsåtgärd.
Nej (standardvärdet är falskt)
 maxConcurrent Anslut ions Den övre gränsen för samtidiga anslutningar som upprättats till datalagret under aktivitetskörningen. Ange endast ett värde när du vill begränsa samtidiga anslutningar.  Nej

Exempel: Salesforce-mottagare i en kopieringsaktivitet

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

Datatypsmappning för Salesforce

När du kopierar data från Salesforce används följande mappningar från Salesforce-datatyper till mellanliggande datatyper inom tjänsten internt. Information om hur kopieringsaktiviteten mappar källschemat och datatypen till mottagaren finns i Mappningar av schema- och datatyper.

Salesforce-datatyp Tjänst interimsdatatyp
Automatiskt nummer String
Kryssruta Booleskt
Valuta Decimal
Date Datum/tid
Datum/tid Datum/tid
Email String
ID String
Uppslagsrelation String
Listruta för flera val String
Antal Decimal
Procent Decimal
Telefon String
Plocklista String
Text String
Textområde String
Textområde (lång) String
Textområde (RTF) String
Text (krypterad) String
webbadress String

Kommentar

Salesforce Number-typen mappas till decimaltyp i Azure Data Factory- och Azure Synapse-pipelines som en tillfällig tjänstdatatyp. Decimaltyp respekterar den definierade precisionen och skalan. För data vars decimaler överskrider den definierade skalan avrundas dess värde i förhandsversionsdata och kopieras. Om du vill undvika sådana precisionsförluster i Azure Data Factory- och Azure Synapse-pipelines kan du överväga att öka decimaltalen till ett ganska stort värde på sidan Redigera anpassad fältdefinition i Salesforce.

Egenskaper för uppslagsaktivitet

Mer information om egenskaperna finns i Sökningsaktivitet.

Uppgradera den länkade Salesforce-tjänsten

Här följer steg som hjälper dig att uppgradera din länkade tjänst och relaterade frågor:

  1. Konfigurera de anslutna apparna i Salesforce-portalen genom att referera till Krav.

  2. Skapa en ny Salesforce-länkad tjänst och konfigurera den genom att referera till länkade tjänstegenskaper.

  3. Om du använder SQL-frågan i kopieringsaktivitetskällan eller uppslagsaktiviteten som refererar till den äldre länkade tjänsten måste du konvertera dem till SOQL-frågan. Läs mer om SOQL-fråga från Salesforce som källtyp och Salesforce Object Query Language (SOQL).

  4. readBehavior ersätts med includeDeletedObjects i kopieringsaktivitetskällan eller uppslagsaktiviteten. Detaljerad konfiguration finns i Salesforce som en källtyp.

Skillnader mellan Salesforce och Salesforce (äldre)

Salesforce-anslutningsappen erbjuder nya funktioner och är kompatibel med de flesta funktioner i Salesforce-anslutningsappen (äldre). Tabellen nedan visar funktionsskillnaderna mellan Salesforce och Salesforce (äldre).

Salesforce Salesforce (äldre)
Stöd för SOQL i Salesforce Bulk API 2.0.
För SOQL-frågor:
• GROUP BY-, LIMIT-, ORDER BY-, OFFSET- eller TYPEOF-satser stöds inte.
• Mängdfunktioner som COUNT() stöds inte, du kan använda Salesforce-rapporter för att implementera dem.
• Datumfunktioner i GROUP BY-satser stöds inte, men de stöds i WHERE-satsen.
• Sammansatta adressfält eller sammansatta geoplatsfält stöds inte. Alternativt kan du köra frågor mot de enskilda komponenterna i sammansatta fält.
• Frågor om överordnad till underordnad relation stöds inte, medan frågor om underordnade till överordnade relationer stöds.
Stöd för både SQL- och SOQL-syntax.
Objekt som innehåller binära fält stöds inte. Objekt som innehåller binära fält stöds, till exempel Bifogat objekt.
Stöd för objekt i mass-API. Mer information finns i denna artikel. Stöd för objekt som inte stöds av Bulk API, till exempel CaseStatus.
Supportrapport genom att välja ett rapport-ID. Stöd för frågesyntax för rapporter, till exempel {call "<report name>"}.

En lista över datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i Datalager som stöds.