Share via


Kopiera data från och till Salesforce Service Cloud med Azure Data Factory eller Synapse Analytics (äldre)

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 Synapse Analytics-pipelines för att kopiera data från och till Salesforce Service Cloud. Den bygger på översiktsartikeln Kopieringsaktivitet som visar en allmän översikt över kopieringsaktiviteten.

Viktigt!

Den nya Salesforce Service Cloud-anslutningsappen ger förbättrad intern Support för Salesforce Service Cloud. Om du använder den äldre Salesforce Service Cloud-anslutningsappen i din lösning uppgraderar du din Salesforce Service Cloud-anslutning före den 11 oktober 2024. Mer information om skillnaden mellan den äldre och den senaste versionen finns i det här avsnittet .

Funktioner som stöds

Den här Salesforce Service Cloud-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 Service Cloud-anslutningsappen:

  • Salesforce Developer-, Professional-, Enterprise- eller Unlimited-utgåvor.
  • Kopiera data från och till Salesforce-produktion, sandbox-miljö och anpassad domän.

Salesforce-anslutningsappen bygger på Salesforce REST/Bulk API. När du kopierar data från Salesforce använder anslutningsappen som standard v45 och väljer automatiskt mellan REST- och Mass-API:er baserat på datastorleken – när resultatuppsättningen är stor används bulk-API:et för bättre prestanda. När du skriver data till Salesforce använder anslutningsappen v40 för mass-API. Du kan också uttryckligen ange den API-version som används för att läsa/skriva data via apiVersion egenskapen i den länkade tjänsten.

Förutsättningar

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

Gränser för Salesforce-begäranden

Salesforce har gränser för både totala API-begäranden och samtidiga API-begäranden. Observera följande:

  • Om antalet samtidiga begäranden överskrider gränsen sker begränsning och du ser slumpmässiga fel.
  • Om det totala antalet begäranden överskrider gränsen blockeras Salesforce-kontot i 24 timmar.

Du kan också få felmeddelandet "REQUEST_LIMIT_EXCEEDED" i båda scenarierna. Mer information finns i avsnittet "API-begärandensgrä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 Service Cloud med hjälp av användargränssnittet

Använd följande steg för att skapa en länkad tjänst till Salesforce Service Cloud 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 anslutningsappen Salesforce Service Cloud.

    Välj anslutningsappen Salesforce Service Cloud.

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

    Konfigurera en länkad tjänst till Salesforce Service Cloud.

Anslut eller konfigurationsinformation

Följande avsnitt innehåller information om egenskaper som används för att definiera Data Factory-entiteter som är specifika för Salesforce Service Cloud-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 SalesforceServiceCloud. Ja
environmentUrl Ange URL:en för Salesforce Service Cloud-instansen.
– Standardvärdet är "https://login.salesforce.com".
– Om du vill kopiera data från sandbox-miljön anger du "https://test.salesforce.com".
– Om du vill kopiera data från en anpassad domän anger du till exempel "https://[domain].my.salesforce.com".
Nej
användarnamn Ange ett användarnamn för användarkontot. Ja
password Ange ett lösenord för användarkontot.

Markera det här fältet som en SecureString för att lagra det på ett säkert sätt eller referera till en hemlighet som lagras i Azure Key Vault.
Ja
securityToken Ange en säkerhetstoken för användarkontot.

Mer information om säkerhetstoken i allmänhet finns i Säkerhet och API:et. Säkerhetstoken kan bara hoppas över om du lägger till Integration Runtimes IP-adress i listan över betrodda IP-adresser i Salesforce. När du använder Azure IR kan du läsa IP-adresser för Azure Integration Runtime.

Anvisningar om hur du hämtar och återställer en säkerhetstoken finns i Hämta en säkerhetstoken. Markera det här fältet som en SecureString för att lagra det på ett säkert sätt i Data Factory eller referera till en hemlighet som lagras i Azure Key Vault.
Nej
apiVersion Ange den Salesforce REST/Bulk API-version som ska användas, t.ex. 48.0. Som standard använder anslutningsappen v45 för att kopiera data från Salesforce och använder v40 för att kopiera data till Salesforce. Nej
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": "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"
        }
    }
}

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

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 datauppsättningen Salesforce Service Cloud.

Följande egenskaper stöds för att kopiera data från och till Salesforce Service Cloud.

Property Beskrivning Obligatoriskt
type Typegenskapen måste anges till SalesforceServiceCloudObject. Ja
objectApiName Salesforce-objektnamnet som du vill hämta data från. Nej för källa, Ja för mottagare

Viktigt!

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

Namn på Salesforce-anslutnings-API

Exempel:

{
    "name": "SalesforceServiceCloudDataset",
    "properties": {
        "type": "SalesforceServiceCloudObject",
        "typeProperties": {
            "objectApiName": "MyTable__c"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Salesforce Service Cloud linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}
Property Beskrivning Obligatoriskt
type Datamängdens typegenskap måste anges till RelationalTable. Ja
tableName Namnet på tabellen i Salesforce Service Cloud. Nej (om "fråga" i aktivitetskällan har angetts)

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 Service Cloud-källa och mottagare.

Salesforce Service Cloud som källtyp

Om du vill kopiera data från Salesforce Service Cloud stöds följande egenskaper i avsnittet kopieringsaktivitetskälla.

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetskällan måste anges till SalesforceServiceCloudSource. Ja
query Använd den anpassade frågan för att läsa data. Du kan använda FRÅGAN SALESFORCE Object Query Language (SOQL) eller SQL-92. Se fler tips i avsnittet frågetips . Om frågan inte har angetts hämtas alla data för Salesforce Service Cloud-objektet som anges i "objectApiName" i datauppsättningen. Nej (om "objectApiName" i datamängden har angetts)
readBehavior 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 det tidigare.
Tillåtna värden: fråga (standard), queryAll.
Nej

Viktigt!

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

Namnlista för Salesforce-anslutnings-API

Exempel:

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

Kommentar

Salesforce Service Cloud-källan stöder inte proxyinställningar i den lokalt installerade integrationskörningen, men mottagaren gör det.

Salesforce Service Cloud som mottagartyp

Om du vill kopiera data till Salesforce Service Cloud stöds följande egenskaper i avsnittet kopieringsaktivitetsmottagare.

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetsmottagaren måste anges till SalesforceServiceCloudSink. 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 Service Cloud-objektet. Det kan inte ha NULL-värden i motsvarande indata. Ja för "Upsert"
writeBatchSize Radantalet data som skrivits till Salesforce Service Cloud i varje batch. Nej (standardvärdet är 5 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:

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

Frågetips

Hämta data från en Salesforce Service Cloud-rapport

Du kan hämta data från Salesforce Service Cloud-rapporter genom att ange en fråga som {call "<report name>"}. Ett exempel är "query": "{call \"TestReport\"}".

Hämta borttagna poster från Papperskorgen för Salesforce Service Cloud

Om du vill köra frågor mot de mjukt borttagna posterna från Papperskorgen för Salesforce Service Cloud kan du ange readBehavior som queryAll.

Skillnad mellan SOQL- och SQL-frågesyntax

När du kopierar data från Salesforce Service Cloud kan du använda antingen SOQL-fråga eller SQL-fråga. Observera att dessa två har olika syntax och funktioner, blanda inte den. Du rekommenderas att använda SOQL-frågan, som stöds internt av Salesforce Service Cloud. I följande tabell visas de största skillnaderna:

Syntax SOQL-läge SQL-läge
Kolumnmarkering Du måste räkna upp fälten som ska kopieras i frågan, t.ex. SELECT field1, filed2 FROM objectname SELECT * stöds utöver kolumnval.
Citattecken Det går inte att citera fil-/objektnamn. Fält-/objektnamn kan citeras, t.ex. SELECT "id" FROM "Account"
Datetime format Mer information finns här och exempel i nästa avsnitt. Mer information finns här och exempel i nästa avsnitt.
Booleska värden Representerad som False och True, t.ex. SELECT … WHERE IsDeleted=True. Representeras som 0 eller 1, t.ex. SELECT … WHERE IsDeleted=1.
Kolumnbyte Stöds ej. Stöds, t.ex. SELECT a AS b FROM ….
Relation Stöds, t.ex. Account_vod__r.nvs_Country__c. Stöds ej.

Hämta data med hjälp av en where-sats i kolumnen DateTime

När du anger SOQL- eller SQL-frågan bör du vara uppmärksam på skillnaden i DateTime-format. Till exempel:

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

Fel för MALFORMED_QUERY: Trunkerad

Om du stöter på felet "MALFORMED_QUERY: Trunkerad" beror det normalt på att du har kolumnen JunctionIdList-typ i data och Salesforce har begränsningar för att stödja sådana data med ett stort antal rader. Du kan undvika detta genom att försöka exkludera kolumnen JunctionIdList eller begränsa antalet rader som ska kopieras (du kan partitionera till flera kopieringsaktivitetskörningar).

Datatypsmappning för Salesforce Service Cloud

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

Datatyp för Salesforce Service Cloud 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 Service Cloud 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. För att 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 i sidan Redigera anpassad fältdefinition i Salesforce Service Cloud.

Egenskaper för uppslagsaktivitet

Mer information om egenskaperna finns i Sökningsaktivitet.

Nästa steg

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