Gegevens kopiëren van en naar Salesforce Service Cloud V1 met behulp van Azure Data Factory of 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 Synapse Analytics-pijplijnen om gegevens van en naar Salesforce Service Cloud te kopiëren. Het is gebaseerd op het artikel Overzicht van kopieeractiviteit met een algemeen overzicht van de kopieeractiviteit.
Belangrijk
De Salesforce Service Cloud V2-connector biedt verbeterde systeemeigen Salesforce Service Cloud-ondersteuning. Als u de Salesforce Service Cloud V1-connector in uw oplossing gebruikt, wordt u aangeraden om uw Salesforce Service Cloud-connector zo snel mogelijk bij te werken. Raadpleeg deze sectie voor meer informatie over het verschil tussen V2 en V1.
Ondersteunde mogelijkheden
Deze Salesforce Service Cloud-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 Service Cloud-connector ondersteunt met name:
- Salesforce Developer-, Professional-, Enterprise- of Unlimited-edities.
- Gegevens kopiëren van en naar Salesforce-productie, sandbox en aangepast domein.
De Salesforce-connector is gebouwd op basis van de Salesforce REST/Bulk-API. Bij het kopiëren van gegevens uit Salesforce gebruikt de connector standaard v45 en wordt automatisch gekozen tussen REST- en Bulk-API's op basis van de gegevensgrootte. Wanneer de resultatenset groot is, wordt Bulk-API gebruikt voor betere prestaties. Bij het schrijven van gegevens naar Salesforce gebruikt de connector v40 bulk-API. U kunt ook expliciet de API-versie instellen die wordt gebruikt voor het lezen/schrijven van gegevens via apiVersion
de eigenschap in de gekoppelde service.
Vereisten
DE API-machtiging moet zijn ingeschakeld in Salesforce.
Limieten voor Salesforce-aanvragen
Salesforce heeft limieten voor zowel het totale aantal API-aanvragen als gelijktijdige API-aanvragen. Let op de volgende punten:
- Als het aantal gelijktijdige aanvragen de limiet overschrijdt, treedt er een beperking op en ziet u willekeurige fouten.
- Als het totale aantal aanvragen de limiet overschrijdt, wordt het Salesforce-account gedurende 24 uur geblokkeerd.
Mogelijk ontvangt u in beide scenario's ook het foutbericht 'REQUEST_LIMIT_EXCEEDED'. Zie de sectie API-aanvraaglimieten 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:
- Het hulpprogramma voor het kopiëren van gegevens
- Azure Portal
- De .NET-SDK
- De Python-SDK
- Azure PowerShell
- De REST API
- Een Azure Resource Manager-sjabloon
Een gekoppelde service maken voor Salesforce Service Cloud met behulp van de gebruikersinterface
Gebruik de volgende stappen om een gekoppelde service te maken voor Salesforce Service Cloud in de gebruikersinterface van Azure Portal.
Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:
Zoek naar Salesforce en selecteer de Salesforce Service Cloud-connector.
Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.
Configuratiedetails van connector
De volgende secties bevatten informatie over eigenschappen die worden gebruikt voor het definiëren van Data Factory-entiteiten die specifiek zijn voor de Salesforce Service Cloud-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 SalesforceServiceCloud. | Ja |
environmentUrl | Geef de URL op van het Salesforce Service Cloud-exemplaar. - De standaardwaarde is "https://login.salesforce.com" . - Als u gegevens uit de sandbox wilt kopiëren, geeft u "https://test.salesforce.com" op. - Als u gegevens uit een aangepast domein wilt kopiëren, geeft u bijvoorbeeld "https://[domain].my.salesforce.com" op. |
Nee |
gebruikersnaam | Geef een gebruikersnaam op voor het gebruikersaccount. | Ja |
password | Geef een wachtwoord op voor het gebruikersaccount. Markeer dit veld als SecureString om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in Azure Key Vault. |
Ja |
securityToken | Geef een beveiligingstoken op voor het gebruikersaccount. Zie Beveiliging en de API voor meer informatie over beveiligingstokens in het algemeen. Het beveiligingstoken kan alleen worden overgeslagen als u het IP-adres van integration runtime toevoegt aan de lijst met vertrouwde IP-adressen in Salesforce. Als u Azure IR gebruikt, raadpleegt u IP-adressen van Azure Integration Runtime. Zie Een beveiligingstoken ophalen en opnieuw instellen voor instructies voor het ophalen en opnieuw instellen van een beveiligingstoken. Markeer dit veld als SecureString om het veilig op te slaan in Data Factory of verwijs naar een geheim dat is opgeslagen in Azure Key Vault. |
Nee |
apiVersion | Geef de salesforce REST/bulk-API-versie op die moet worden gebruikt, bijvoorbeeld 48.0 . De connector gebruikt standaard v45 om gegevens van Salesforce te kopiëren en gebruikt v40 om gegevens naar Salesforce te kopiëren. |
Nee |
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": "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"
}
}
}
Voorbeeld: Referenties opslaan 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"
}
}
}
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 Service Cloud-gegevensset.
Als u gegevens van en naar Salesforce Service Cloud wilt kopiëren, worden de volgende eigenschappen ondersteund.
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap moet worden ingesteld op SalesforceServiceCloudObject. | Ja |
objectApiName | De naam van het Salesforce-object waaruit gegevens moeten worden opgehaald. | Nee voor bron, Ja voor sink |
Belangrijk
Het onderdeel '__c' van DE API-naam is nodig voor elk aangepast object.
Voorbeeld:
{
"name": "SalesforceServiceCloudDataset",
"properties": {
"type": "SalesforceServiceCloudObject",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce Service Cloud linked service name>",
"type": "LinkedServiceReference"
}
}
}
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap van de gegevensset moet worden ingesteld op RelationalTable. | Ja |
tableName | Naam van de tabel in Salesforce Service Cloud. | Nee (als 'query' in de activiteitsbron is opgegeven) |
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 de bron en sink van Salesforce Service Cloud.
Salesforce Service Cloud als brontype
Als u gegevens uit Salesforce Service Cloud wilt kopiëren, worden de volgende eigenschappen ondersteund in de sectie bron van kopieeractiviteit.
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap van de bron van de kopieeractiviteit moet worden ingesteld op SalesforceServiceCloudSource. | Ja |
query | Gebruik de aangepaste query om gegevens te lezen. U kunt een SOQL-query (Salesforce Object Query Language) of SQL-92-query gebruiken. Zie meer tips in de sectie querytips . Als de query niet is opgegeven, worden alle gegevens van het Salesforce Service Cloud-object dat is opgegeven in objectApiName in de gegevensset opgehaald. | Nee (als objectApiName in de gegevensset is opgegeven) |
readBehavior | 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 het vorige. Toegestane waarden: query (standaard), queryAll. |
Nee |
Belangrijk
Het onderdeel '__c' van DE API-naam is nodig voor elk aangepast object.
Voorbeeld:
"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>"
}
}
}
]
Notitie
Salesforce Service Cloud-bron biedt geen ondersteuning voor proxy-instellingen in de zelf-hostende Integration Runtime, maar sink wel.
Salesforce Service Cloud als sinktype
Als u gegevens wilt kopiëren naar Salesforce Service Cloud, worden de volgende eigenschappen ondersteund in de sectie sink voor kopieeractiviteiten.
Eigenschappen | Beschrijving | Vereist |
---|---|---|
type | De typeeigenschap van de sink van de kopieeractiviteit moet worden ingesteld op SalesforceServiceCloudSink. | 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 Service Cloud-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 Service Cloud is geschreven. | Nee (standaard is 5.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:
"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
}
}
}
]
Querytips
Gegevens ophalen uit een Salesforce Service Cloud-rapport
U kunt gegevens ophalen uit Salesforce Service Cloud-rapporten door een query op te geven als {call "<report name>"}
. Een voorbeeld is "query": "{call \"TestReport\"}"
.
Verwijderde records ophalen uit de Prullenbak van de Salesforce Service Cloud
Als u een query wilt uitvoeren op de voorlopig verwijderde records uit de Prullenbak van de Salesforce-servicecloud, kunt u opgeven readBehavior
als queryAll
.
Verschil tussen SOQL en SQL-querysyntaxis
Wanneer u gegevens kopieert uit Salesforce Service Cloud, kunt u SOQL-query of SQL-query gebruiken. Houd er rekening mee dat deze twee verschillende syntaxis- en functionaliteitsondersteuning hebben, niet combineren. U wordt aangeraden de SOQL-query te gebruiken, die systeemeigen wordt ondersteund door Salesforce Service Cloud. De volgende tabel bevat de belangrijkste verschillen:
Syntaxis | SOQL-modus | SQL-modus |
---|---|---|
Kolomselectie | Moet de velden opsommen die moeten worden gekopieerd in de query, bijvoorbeeld SELECT field1, filed2 FROM objectname |
SELECT * wordt ondersteund naast kolomselectie. |
Aanhalingstekens | Namen van bestanden/objecten kunnen niet worden aangeroepen. | Veld-/objectnamen kunnen worden aangeroepen, bijvoorbeeld SELECT "id" FROM "Account" |
Datum-/tijdnotatie | Raadpleeg hier de details en voorbeelden in de volgende sectie. | Raadpleeg hier de details en voorbeelden in de volgende sectie. |
Booleaanse waarden | Vertegenwoordigd als False en True , bijvoorbeeld SELECT … WHERE IsDeleted=True . |
Vertegenwoordigd als 0 of 1, bijvoorbeeld SELECT … WHERE IsDeleted=1 . |
Kolomnaam wijzigen | Wordt niet ondersteund. | Ondersteund, bijvoorbeeld: SELECT a AS b FROM … . |
Relatie | Ondersteund, bijvoorbeeld Account_vod__r.nvs_Country__c . |
Wordt niet ondersteund. |
Gegevens ophalen met behulp van een where-component in de kolom DateTime
Wanneer u de SOQL- of SQL-query opgeeft, moet u rekening houden met het verschil in de datum/tijd-indeling. Voorbeeld:
-
SOQL-voorbeeld:
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-voorbeeld:
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')}'}
Fout bij MALFORMED_QUERY: Afgekapt
Als u de fout 'MALFORMED_QUERY: Afgekapt' krijgt, komt dit normaal gesproken doordat u de kolom JunctionIdList-type in gegevens hebt en Salesforce beperkingen heeft voor het ondersteunen van dergelijke gegevens met een groot aantal rijen. Probeer de kolom JunctionIdList uit te sluiten of het aantal te kopiëren rijen te beperken (u kunt partitioneren naar meerdere uitvoeringen van kopieeractiviteiten).
Toewijzing van gegevenstypen voor Salesforce Service Cloud
Wanneer u gegevens kopieert uit Salesforce Service Cloud, worden de volgende toewijzingen gebruikt van Salesforce Service Cloud-gegevenstypen naar tussentijdse gegevenstypen die intern in de service worden gebruikt. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe de kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.
Gegevenstype Salesforce Service Cloud | Tussentijdse servicegegevenstype |
---|---|
Automatisch nummer | String |
Selectievakje | Booleaanse waarde |
Valuta | Decimal |
Datum | Datum en tijd |
Datum/tijd | Datum en tijd |
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 type Salesforce Service Cloud Number 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 voorbeeldgegevens 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 Service Cloud.
Eigenschappen van opzoekactiviteit
Als u meer wilt weten over de eigenschappen, controleert u de lookup-activiteit.
Volgende stappen
Zie Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de kopieeractiviteit.