Kopiowanie danych z i do usługi Salesforce przy użyciu usługi Azure Data Factory lub Azure Synapse Analytics
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !
W tym artykule opisano sposób używania działania kopiowania w potokach usługi Azure Data Factory i Usługi Azure Synapse do kopiowania danych z i do usługi Salesforce. Jest on oparty na artykule Omówienie działania kopiowania, który przedstawia ogólne omówienie działania kopiowania.
Ważne
Nowy łącznik usługi Salesforce zapewnia ulepszoną natywną obsługę usługi Salesforce. Jeśli używasz starszego łącznika usługi Salesforce w swoim rozwiązaniu, uaktualnij łącznik usługi Salesforce przed 11 października 2024 r. Zapoznaj się z tą sekcją , aby uzyskać szczegółowe informacje na temat różnicy między starszą i najnowszą wersją.
Obsługiwane możliwości
Ten łącznik usługi Salesforce jest obsługiwany w następujących funkcjach:
Obsługiwane możliwości | IR |
---|---|
działanie Kopiuj (źródło/ujście) | (1) (2) |
Działanie Lookup | (1) (2) |
(1) Środowisko Azure Integration Runtime (2) Self-hosted Integration Runtime
Aby uzyskać listę magazynów danych obsługiwanych jako źródła lub ujścia, zobacz tabelę Obsługiwane magazyny danych.
W szczególności ten łącznik usługi Salesforce obsługuje następujące elementy:
- Wersje Salesforce Developer, Professional, Enterprise lub Unlimited.
- Kopiowanie danych z i do domeny niestandardowej (domena niestandardowa można skonfigurować zarówno w środowiskach produkcyjnych, jak i piaskownicy).
Możesz jawnie ustawić wersję interfejsu API używaną do odczytu/zapisu danych za pośrednictwem apiVersion
właściwości w połączonej usłudze. Podczas kopiowania danych do usługi Salesforce łącznik używa interfejsu API BULK 2.0.
Wymagania wstępne
Uprawnienia interfejsu API muszą być włączone w usłudze Salesforce.
Musisz skonfigurować portal Connected Apps w usłudze Salesforce odwołując się do tego oficjalnego dokumentu lub wskazówek krok po kroku w rekomendacji w tym artykule.
Ważne
- Użytkownik wykonywania musi mieć uprawnienie Tylko interfejs API.
- Czas wygaśnięcia tokenu dostępu można zmienić za pomocą zasad sesji zamiast tokenu odświeżania.
Limity interfejsu API zbiorczego usługi Salesforce 2.0
Do wykonywania zapytań i pozyskiwania danych używamy interfejsu API zbiorczego usługi Salesforce 2.0. W przypadku zbiorczego interfejsu API 2.0 partie są tworzone automatycznie. Można przesłać maksymalnie 15 000 partii na okres 24-godzinny. Jeśli partie przekraczają limit, wystąpią błędy.
W przypadku zbiorczego interfejsu API 2.0 tylko zadania pozyskiwania zużywają partie. Zadania zapytań nie są wykonywane. Aby uzyskać szczegółowe informacje, zobacz How Requests are Processed in the Bulk API 2.0 Developer Guide (Jak żądania są przetwarzane w przewodniku dla deweloperów interfejsu API zbiorczego 2.0).
Aby uzyskać więcej informacji, zobacz sekcję "Ogólne limity" w temacie Limity dla deweloperów usługi Salesforce.
Rozpocznij
Aby wykonać działanie Kopiuj za pomocą potoku, możesz użyć jednego z następujących narzędzi lub zestawów SDK:
- Narzędzie do kopiowania danych
- Witryna Azure Portal
- Zestaw SDK platformy .NET
- Zestaw SDK języka Python
- Azure PowerShell
- Interfejs API REST
- Szablon usługi Azure Resource Manager
Tworzenie połączonej usługi z usługą Salesforce przy użyciu interfejsu użytkownika
Wykonaj poniższe kroki, aby utworzyć połączoną usługę z usługą Salesforce w interfejsie użytkownika witryny Azure Portal.
Przejdź do karty Zarządzanie w obszarze roboczym usługi Azure Data Factory lub Synapse i wybierz pozycję Połączone usługi, a następnie kliknij pozycję Nowy:
Wyszukaj pozycję Salesforce i wybierz łącznik Salesforce.
Skonfiguruj szczegóły usługi, przetestuj połączenie i utwórz nową połączoną usługę.
Szczegóły konfiguracji łącznika
Poniższe sekcje zawierają szczegółowe informacje o właściwościach używanych do definiowania jednostek specyficznych dla łącznika usługi Salesforce.
Właściwości połączonej usługi
Następujące właściwości są obsługiwane w przypadku połączonej usługi Salesforce.
Właściwości | Opis | Wymagania |
---|---|---|
type | Właściwość type musi być ustawiona na SalesforceV2. | Tak |
environmentUrl | Określ adres URL wystąpienia usługi Salesforce. Na przykład określ "https://<domainName>.my.salesforce.com" , aby skopiować dane z domeny niestandardowej. Dowiedz się, jak skonfigurować lub wyświetlić domenę niestandardową, korzystając z tego artykułu. |
Tak |
authenticationType | Typ uwierzytelniania używanego do nawiązywania połączenia z usługą Salesforce. Dozwolona wartość to OAuth2ClientCredentials. |
Tak |
clientId | Określ identyfikator klienta połączonej aplikacji OAuth 2.0 usługi Salesforce. Aby uzyskać więcej informacji, przejdź do tego artykułu | Tak |
clientSecret | Określ wpis tajny klienta połączonej aplikacji OAuth 2.0 usługi Salesforce. Aby uzyskać więcej informacji, przejdź do tego artykułu | Tak |
apiVersion | Określ wersję interfejsu API zbiorczego usługi Salesforce w wersji 2.0, na przykład 52.0 . Interfejs API zbiorczy 2.0 obsługuje tylko wersję >interfejsu API = 47.0. Aby dowiedzieć się więcej o wersji zbiorczego interfejsu API 2.0, zobacz artykuł. Błąd występuje, jeśli używasz niższej wersji interfejsu API. |
Tak |
connectVia | Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. | Nie. |
Przykład: Przechowywanie poświadczeń
{
"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"
}
}
}
Przykład: przechowywanie poświadczeń w usłudze 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"
}
}
}
Przykład: przechowywanie poświadczeń w usłudze Key Vault, a także wartości environmentUrl i clientId
Dzięki przechowywaniu poświadczeń w usłudze Key Vault, a także wartości environmentUrl i clientId, możesz dłużej używać interfejsu użytkownika do edytowania ustawień. Pole wyboru Określ zawartość dynamiczną w formacie JSON musi być zaznaczone i musisz ręcznie wykonać tę konfigurację. Zaletą tego scenariusza jest możliwość uzyskania wszystkich ustawień konfiguracji z usługi Key Vault zamiast sparametryzowania niczego tutaj.
{
"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"
}
}
}
Właściwości zestawu danych
Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania zestawów danych, zobacz artykuł Zestawy danych. Ta sekcja zawiera listę właściwości obsługiwanych przez zestaw danych usługi Salesforce.
Aby skopiować dane z i do usługi Salesforce, ustaw właściwość type zestawu danych na SalesforceV2Object. Obsługiwane są następujące właściwości.
Właściwości | Opis | Wymagania |
---|---|---|
type | Właściwość type musi być ustawiona na SalesforceV2Object. | Tak |
objectApiName | Nazwa obiektu usługi Salesforce do pobrania danych. Odpowiednia wersja własnego środowiska Integration Runtime to 5.44.8984.1 lub nowsza. | Nie dla źródła (jeśli określono "zapytanie" w źródle), tak dla ujścia |
reportId | Identyfikator raportu usługi Salesforce do pobrania danych. Nie jest obsługiwany w ujściu. Istnieją ograniczenia dotyczące korzystania z raportów. Odpowiednia wersja własnego środowiska Integration Runtime to 5.44.8984.1 lub nowsza. | Nie dla źródła (jeśli określono "zapytanie" w źródle), nie obsługuje ujścia |
Ważne
Część "__c" nazwy interfejsu API jest wymagana dla dowolnego obiektu niestandardowego.
Przykład:
{
"name": "SalesforceDataset",
"properties": {
"type": "SalesforceV2Object",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce linked service name>",
"type": "LinkedServiceReference"
}
}
}
Właściwości działania kopiowania
Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz artykuł Pipelines (Potoki ). Ta sekcja zawiera listę właściwości obsługiwanych przez źródło i ujście usługi Salesforce.
Salesforce jako typ źródła
Aby skopiować dane z usługi Salesforce, ustaw typ źródła w działaniu kopiowania na salesforceV2Source. Poniższe właściwości są obsługiwane w sekcji źródła działania kopiowania.
Właściwości | Opis | Wymagania |
---|---|---|
type | Właściwość type źródła działania kopiowania musi być ustawiona na SalesforceV2Source. | Tak |
zapytanie | Użyj zapytania niestandardowego, aby odczytać dane. Zapytania SOQL (Salesforce Object Query Language) można używać tylko z ograniczeniami. Aby uzyskać informacje o ograniczeniach SOQL, zobacz ten artykuł. Jeśli zapytanie nie zostanie określone, zostaną pobrane wszystkie dane obiektu Salesforce określone w parametrze "objectApiName/reportId" w zestawie danych. | Nie (jeśli określono parametr "objectApiName/reportId" w zestawie danych) |
includeDeletedObjects | Wskazuje, czy należy wykonywać zapytania dotyczące istniejących rekordów, czy wykonywać zapytania dotyczące wszystkich rekordów, w tym usuniętych rekordów. Jeśli nie zostanie określony, domyślne zachowanie to false. Dozwolone wartości: false (wartość domyślna), true. |
Nie. |
Ważne
Część "__c" nazwy interfejsu API jest wymagana dla dowolnego obiektu niestandardowego.
Przykład:
"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 jako typ ujścia
Aby skopiować dane do usługi Salesforce, ustaw typ ujścia w działaniu kopiowania na salesforceV2Sink. Poniższe właściwości są obsługiwane w sekcji ujścia działania kopiowania.
Właściwości | Opis | Wymagania |
---|---|---|
type | Właściwość type ujścia działania kopiowania musi być ustawiona na SalesforceV2Sink. | Tak |
writeBehavior | Zachowanie zapisu dla operacji. Dozwolone wartości to Insert i Upsert. |
Nie (wartość domyślna to Wstaw) |
externalIdFieldName | Nazwa pola identyfikatora zewnętrznego dla operacji upsert. Określone pole musi być zdefiniowane jako "Pole identyfikatora zewnętrznego" w obiekcie Salesforce. Nie może mieć wartości NULL w odpowiednich danych wejściowych. | Tak dla "Upsert" |
writeBatchSize | Liczba wierszy zapisanych w usłudze Salesforce w każdej partii. Zasugeruj ustawienie tej wartości z zakresu od 10 000 do 200 000. Zbyt mało wierszy w każdej partii zmniejsza wydajność kopiowania. Zbyt wiele wierszy w każdej partii może spowodować przekroczenie limitu czasu interfejsu API. | Nie (wartość domyślna to 100 000) |
ignoreNullValues | Wskazuje, czy podczas operacji zapisu mają być ignorowane wartości NULL z danych wejściowych. Dozwolone wartości to true i false. - Prawda: pozostaw dane w obiekcie docelowym bez zmian podczas wykonywania operacji upsert lub update. Wstaw zdefiniowaną wartość domyślną podczas wykonywania operacji wstawiania. - Fałsz: Zaktualizuj dane w obiekcie docelowym na wartość NULL podczas wykonywania operacji upsert lub update. Wstaw wartość NULL podczas wykonywania operacji wstawiania. |
Nie (wartość domyślna to false) |
maxConcurrentConnections | Górny limit połączeń współbieżnych ustanowionych z magazynem danych podczas uruchamiania działania. Określ wartość tylko wtedy, gdy chcesz ograniczyć połączenia współbieżne. | Nie |
Przykład: ujście usługi Salesforce w działaniu kopiowania
"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
}
}
}
]
Mapowanie typów danych dla usługi Salesforce
Podczas kopiowania danych z usługi Salesforce następujące mapowania są używane z typów danych usługi Salesforce do typów danych tymczasowych w ramach usługi wewnętrznie. Aby dowiedzieć się, jak działanie kopiowania mapuje schemat źródłowy i typ danych na ujście, zobacz Mapowania schematu i typu danych.
Typ danych usługi Salesforce | Typ danych tymczasowych usługi |
---|---|
Automatyczny numer | String |
Pole wyboru | Wartość logiczna |
Waluta | Dziesiętne |
Date | DateTime |
Data/godzina | DateTime |
String | |
IDENTYFIKATOR | String |
Relacja odnośnika | String |
Lista wyboru wielokrotnego wyboru | String |
Liczba | Dziesiętny |
Procent | Dziesiętne |
Phone | String |
Picklist | String |
Tekst | String |
Obszar tekstu | String |
Obszar tekstu (długi) | String |
Obszar tekstu (sformatowany) | String |
Tekst (zaszyfrowany) | String |
URL | String |
Uwaga
Typ numeru usługi Salesforce jest mapowanie na typ dziesiętny w potokach usługi Azure Data Factory i Azure Synapse jako typ danych tymczasowych usługi. Typ dziesiętny honoruje zdefiniowaną precyzję i skalę. W przypadku danych, których miejsca dziesiętne przekraczają zdefiniowaną skalę, jego wartość jest zaokrąglona w danych podglądu i kopiowania. Aby uniknąć utraty dokładności w potokach usługi Azure Data Factory i Azure Synapse, rozważ zwiększenie liczby miejsc dziesiętnych do dość dużej wartości na stronie Edycja definicji pola niestandardowego w usłudze Salesforce.
Właściwości działania wyszukiwania
Aby dowiedzieć się więcej o właściwościach, sprawdź działanie Wyszukiwania.
Uaktualnianie połączonej usługi Salesforce
Poniżej przedstawiono kroki ułatwiające uaktualnienie połączonej usługi i powiązanych zapytań:
Skonfiguruj połączone aplikacje w portalu usługi Salesforce, korzystając z sekcji Wymagania wstępne.
Utwórz nową połączoną usługę Salesforce i skonfiguruj ją, odwołując się do właściwości połączonej usługi. Należy również ręcznie zaktualizować istniejące zestawy danych, które opierają się na starej połączonej usłudze, edytując każdy zestaw danych, aby zamiast tego używać nowej połączonej usługi.
Jeśli używasz zapytania SQL w źródle działania kopiowania lub działania wyszukiwania odwołującego się do starszej połączonej usługi, musisz przekonwertować je na zapytanie SOQL. Dowiedz się więcej na temat zapytań SOQL z usługi Salesforce jako typu źródłowego i języka SOQL (Salesforce Object Query Language).
element readBehavior jest zastępowany elementem includeDeletedObjects w źródle działania kopiowania lub działaniem wyszukiwania. Aby uzyskać szczegółową konfigurację, zobacz Salesforce jako typ źródła.
Różnice między usługami Salesforce i Salesforce (starsza wersja)
Łącznik usługi Salesforce oferuje nowe funkcje i jest zgodny z większością funkcji łącznika usługi Salesforce (starsza wersja). W poniższej tabeli przedstawiono różnice funkcji między usługami Salesforce i Salesforce (starsza wersja).
Salesforce | Salesforce (starsza wersja) |
---|---|
Obsługa protokołu SOQL w interfejsie API zbiorczym usługi Salesforce w wersji 2.0. W przypadku zapytań SOQL: • Klauzule GROUP BY, LIMIT, ORDER BY, OFFSET lub TYPEOF nie są obsługiwane. • Funkcje agregujące, takie jak COUNT() nie są obsługiwane, można użyć raportów usługi Salesforce do ich zaimplementowania. • Funkcje daty w klauzulach GROUP BY nie są obsługiwane, ale są obsługiwane w klauzuli WHERE. • Pola adresów złożonych lub złożone pola geolokalizacji nie są obsługiwane. Alternatywnie wykonaj zapytanie dotyczące poszczególnych składników pól złożonych. • Zapytania relacji nadrzędny-podrzędny nie są obsługiwane, natomiast obsługiwane są zapytania relacji podrzędnych-nadrzędnych. |
Obsługa składni SQL i SOQL. |
Obiekty zawierające pola binarne nie są obsługiwane podczas określania zapytania. | Obiekty zawierające pola binarne są obsługiwane podczas określania zapytania. |
Obsługa obiektów w interfejsie API zbiorczym podczas określania zapytania. | Obsługa obiektów, które nie są obsługiwane za pomocą interfejsu API zbiorczego podczas określania zapytania. |
Raport pomocy technicznej, wybierając identyfikator raportu. | Obsługa składni zapytań raportu, takich jak {call "<report name>"} . |
Powiązana zawartość
Aby uzyskać listę magazynów danych obsługiwanych jako źródła i ujścia działania kopiowania, zobacz Obsługiwane magazyny danych.