Federatieve query's uitvoeren in Salesforce Data Cloud
In dit artikel wordt beschreven hoe u Lakehouse Federation instelt om federatieve query's uit te voeren op Salesforce Data Cloud-gegevens die niet worden beheerd door Azure Databricks. Zie Wat is Lakehouse Federation? voor meer informatie over Lakehouse Federation.
Als u verbinding wilt maken met uw Salesforce Data Cloud-database met behulp van Lakehouse Federation, moet u het volgende maken in uw Azure Databricks Unity Catalog-metastore:
- Een verbinding met uw Salesforce Data Cloud-database.
- Een refererende catalogus die uw Salesforce Data Cloud-database in Unity Catalog weerspiegelt, zodat u de syntaxis en hulpprogramma's voor gegevensbeheer van Unity Catalog kunt gebruiken om Azure Databricks-gebruikers toegang tot de database te beheren.
Voordat u begint
Vereisten voor werkruimte:
- Werkruimte ingeschakeld voor Unity Catalog.
Rekenvereisten:
- Netwerkconnectiviteit van uw rekenresource naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
- Azure Databricks compute moet gebruikmaken van Databricks Runtime 15.2 of hoger en gedeelde of enkelgebruiker toegangsmodus.
- SQL-warehouses moeten pro of serverloos zijn en moeten 2024.30 of hoger gebruiken.
Vereiste machtigingen:
- Als u een verbinding wilt maken, moet u een metastore-beheerder of een gebruiker zijn met de
CREATE CONNECTION
bevoegdheid voor de Unity Catalog-metastore die is gekoppeld aan de werkruimte. - Als u een buitenlandse catalogus wilt maken, moet u de machtiging
CREATE CATALOG
voor de metastore hebben en ofwel de eigenaar van de verbinding zijn of deCREATE FOREIGN CATALOG
rechten voor de verbinding hebben.
Aanvullende machtigingsvereisten worden opgegeven in elke sectie op basis van taken die volgt.
Een verbonden Salesforce-app maken
Met Salesforce verbonden apps kan een externe toepassing worden geïntegreerd met Salesforce met behulp van API's en standaardprotocollen. In deze sectie wordt beschreven hoe u een verbonden app maakt met behulp van SSO, zodat Databricks kan worden geverifieerd met Salesforce.
Notitie
Zie Een verbonden app maken in de documentatie van Salesforce Data Cloud voor meer gedetailleerde instructies.
Ga als volgt te werk om een verbonden Salesforce-app te maken:
- Klik in de rechterbovenhoek van Data Cloud op Setup.
- Klik onder Platformhulpprogramma's op Apps > App Manager.
- Klik op Nieuwe verbonden app.
- Voer een naam en een e-mailadres van een contactpersoon in.
- OAuth-instellingen inschakelen:
- Voer de Callback-URL in de volgende indeling in:
https://<databricks_instance_url>/login/oauth/salesforce.html
. Voorbeeld:https://cust-success.cloud.databricks.com/login/oauth/salesforce.html
. - (Optioneel) Als u van plan bent om SQL te gebruiken voor het maken van de Azure Databricks-verbinding en de externe catalogus in de volgende stap, moet uw verbonden Salesforce-app ook ondersteuning bieden voor de omleidings-URI
https://login.salesforce.com/services/oauth2/success
. Dit is niet nodig als u Catalog Explorer wilt gebruiken om de Azure Databricks-verbinding en de externe catalogus te maken. Databricks raadt het gebruik van Catalog Explorer aan omdat hiervoor minder handmatige stappen nodig zijn dan andere methoden. - Voeg de volgende bereiken toe:
- Toegang tot alle Data Cloud API-resources (cdp_api)
- Gebruikersgegevens beheren via API's (API)
- ANSI SQL-query's uitvoeren op gegevens in de gegevenscloud (cdp_query_api)
- Aanvragen op elk gewenst moment uitvoeren (refresh_token, offline_access)
- Klik op Opslaan.
- Klik op Continue.
- Voer de Callback-URL in de volgende indeling in:
- Klik op de overzichtspagina van de verbonden app op Consumentendetails beheren. U wordt gevraagd om te verifiëren.
- Wanneer de verificatie is geslaagd, worden consumentensleutel en consumentengeheim onthuld. Sla deze waarden op. U hebt deze nodig wanneer u een Azure Databricks-verbinding maakt.
Een Azure Databricks-verbinding maken
Een verbinding geeft een pad en referenties op voor toegang tot een extern databasesysteem. Als u een verbinding wilt maken, kunt u Catalog Explorer of de CREATE CONNECTION
SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.
Notitie
U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een verbinding te maken. Zie POST /api/2.1/unity-catalog/connections en Unity Catalog-opdrachten.
Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION
bevoegdheid.
Catalogusverkenner
Klik in uw Azure Databricks-werkruimte op
Catalogus.
Klik boven in het deelvenster Catalogus op het pictogram
pictogram toevoegen en selecteer Een verbinding toevoegen in het menu.
U kunt ook op de pagina Snelle toegang op de knop Externe gegevens > klikken, naar het tabblad Verbindingen gaan en op Verbinding makenklikken.
Voer op de pagina Verbindingsbeginselen van de Verbindingswizard Verbinding instellen een gebruiksvriendelijke verbindingsnaam in.
Selecteer een verbindingstype van Salesforce Data Cloud.
(Optioneel) Voeg een opmerking toe.
Voer op de pagina Authentication de volgende verbindingseigenschappen in voor uw Salesforce Data Cloud:
- (Optioneel) Selecteer Is sandbox-.
- client-id: consumentensleutel voor verbonden apps in Salesforce.
- clientgeheim: het consumentengeheim van de verbonden app van Salesforce.
-
Klantbereik:
cdp_api api cdp_query_api refresh_token offline_access
Klik op Aanmelden met Salesforce.
(OAuth) U wordt gevraagd u aan te melden bij Salesforce Data Cloud met behulp van uw SSO-referenties.
Wanneer u zich hebt aangemeld, wordt u teruggeleid naar de Databricks-verbinding instellen wizard. De knop Aanmelden met Salesforce is vervangen door een
Successfully authorized
bericht.Klik op Verbinding maken.
Voer op de catalogus basisspagina een naam in voor de buitenlandse catalogus. Een refererende catalogus spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog.
(Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.
Klik op Maak de catalogus.
Selecteer op de pagina Access de werkruimten waarin gebruikers toegang hebben tot de catalogus die u hebt gemaakt. U kunt Alle werkruimten toegang geven, of klik op Toewijzen aan werkruimten, selecteer de werkruimten en klik vervolgens op Toewijzen.
Wijzig de Eigenaar die toegang heeft om alle objecten in de catalogus te beheren. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.
Verleent rechten aan de catalogus. Klik op Verlenen:
- Geef de Principals op die toegang hebben tot objecten in de catalogus. Begin een principal in het tekstvak te typen en klik vervolgens op de principal in de geretourneerde resultaten.
- Selecteer de vooraf ingestelde Bevoegdheden om aan elke principal toe te kennen. Alle accountgebruikers krijgen standaard
BROWSE
toegewezen.- Selecteer Gegevenslezer in de vervolgkeuzelijst om
read
bevoegdheden te verlenen voor objecten in de catalogus. - Selecteer Gegevenseditor in de vervolgkeuzelijst om
read
enmodify
bevoegdheden voor objecten in de catalogus toe te kennen. - Selecteer handmatig de bevoegdheden die u wilt verlenen.
- Selecteer Gegevenslezer in de vervolgkeuzelijst om
- Klik op Verlenen.
Klik op Volgende.
Geef op de pagina Metagegevens de tags als sleutel-waardeparen op. Zie Tags toepassen op beveiligbare objecten van Unity Catalogvoor meer informatie.
(Optioneel) Voeg een opmerking toe.
Klik op Opslaan.
SQL
Databricks raadt het gebruik van Catalog Explorer aan om de verbinding en de refererende catalogus te maken, omdat hiervoor minder handmatige stappen nodig zijn dan andere methoden.
Als u SQL wilt gebruiken om de Azure Databricks-verbinding en de externe catalogus te maken, moet uw verbonden Salesforce-app de omleidings-URI https://login.salesforce.com/services/oauth2/success
ondersteunen. Dit is niet nodig als u Catalog Explorer gebruikt.
Codecontrolecodes en codevraagcodes genereren. U kunt dit doen met behulp van een onlinehulpprogramma, zoals https://tonyxu-io.github.io/pkce-generator/ of door het volgende Python-script uit te voeren:
%python import base64 import re import os import hashlib code_verifier = base64.urlsafe_b64encode(os.urandom(40)).decode('utf-8') code_verifier = re.sub('[^a-zA-Z0-9]+', '', code_verifier) code_challenge = hashlib.sha256(code_verifier.encode('utf-8')).digest() code_challenge = base64.urlsafe_b64encode(code_challenge).decode('utf-8') code_challenge = code_challenge.replace('=', '') print(f"pkce_verifier = \"{code_verifier}\"") print(f"code_challenge = \"{code_challenge}\"")
Ga naar de volgende URL en verifieer met uw Salesforce-referenties om de
authorization_code
op te halen (vervang<client_id>
en<code_challenge>
door uw parameters).https://login.salesforce.com/services/oauth2/authorize ?client_id=<client_id> &redirect_uri=https://login.salesforce.com/services/oauth2/success &response_type=code &code_challenge=<code_challenge>
Een door URL gecodeerde autorisatiecode is zichtbaar in de omgeleide URL.
Voer het volgende uit in een notebook of de Sql-queryeditor van Databricks:
CREATE CONNECTION '<Connection name>' TYPE salesforce_data_cloud OPTIONS ( client_id '<Consumer key from Salesforce Connected App>', client_secret '<Consumer secret from Salesforce Connected App>', pkce_verifier '<pkce_verifier from the last step>', authorization_code '<URL decoded `authorization_code`, should end with == instead of %3D%3D>', oauth_redirect_uri "https://login.salesforce.com/services/oauth2/success", oauth_scope "cdp_api api cdp_query_api refresh_token offline access", is_sandbox "false" );
Databricks raadt aan om Azure Databricks secrets te gebruiken in plaats van platte tekst voor gevoelige waarden zoals inloggegevens. Voorbeeld:
CREATE CONNECTION '<Connection name>' TYPE salesforce_data_cloud OPTIONS ( client_id secret ('<Secret scope>','<Secret key client id>'), client_secret secret ('<Secret scope>','<Secret key client secret>'), pkce_verifier '<pkce_verifier from the last step>', authorization_code '<URL decoded `authorization_code`, should end with == instead of %3D%3D>', oauth_redirect_uri "https://login.salesforce.com/services/oauth2/success", oauth_scope "cdp_api api cdp_query_api refresh_token offline access", is_sandbox "false" );
Zie Geheimbeheer voor informatie over het instellen van geheimen.
Een buitenlandse catalogus maken
Notitie
Als u de gebruikersinterface gebruikt om een verbinding met de gegevensbron te maken, wordt het aanmaken van een vreemde catalogus opgenomen en kunt u deze stap overslaan.
Een refererende catalogus spiegelt een database in een extern gegevenssysteem, zodat u de toegang tot gegevens in die database kunt opvragen en beheren met behulp van Azure Databricks en Unity Catalog. Om een externe catalogus te maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.
Als u een buitenlandse catalogus wilt maken, kunt u Catalog Explorer of het CREATE FOREIGN CATALOG
SQL-commando gebruiken in een Azure Databricks-notebook of de SQL-queryeditor. U kunt ook de Databricks REST API of de Databricks CLI gebruiken om een catalogus te maken. Zie POST /api/2.1/unity-catalog/catalogs en Unity Catalog-opdrachten.
Vereiste machtigingen:CREATE CATALOG
machtiging voor de metastore en eigendom van de verbinding of de CREATE FOREIGN CATALOG
bevoegdheid voor de verbinding.
Catalogusverkenner
- Klik in uw Azure Databricks-werkruimte op
Catalog om Catalog Explorer te openen.
- Klik in de rechterbovenhoek op Catalogus maken.
- Voer de volgende eigenschappen in voor uw Salesforce Data Cloud-catalogus.
- Catalogusnaam: een gebruiksvriendelijke naam voor de catalogus.
-
Type:
Foreign
. - verbindingsnaam: de naam van de verbinding waarop de catalogus wordt gemaakt.
- Gegevensruimte: een Salesforce-gegevensruimte.
- Klik op Create.
SQL
Voer de volgende SQL-opdracht uit in een notebook of de SQL-queryeditor. Items tussen haakjes zijn optioneel.
CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');
Vervang de volgende waarden:
-
<catalog-name>
: -
<connection-name>
: -
<dataspace>
: Salesforce-gegevensruimte. Bijvoorbeeld:default
.
Ondersteunde pushdowns
De volgende pushdowns worden ondersteund:
- Filters
- Projecties
- Grens
- Aggregaties
- Afstand
- Cast
- Bevat, Startswith, Endswith
Toewijzingen van gegevenstypen
Wanneer u van Salesforce Data Cloud naar Spark leest, worden gegevenstypen als volgt toegewezen:
Salesforce Data Cloud-type | Spark-type |
---|---|
Booleaanse waarde | BooleanType |
Datum | DateType |
Datum/tijd | TimestampType |
E-mail, telefoon, tekst, URL | StringType |
Getal, percentage | DecimalType(38, 18) |
Beperkingen
- Er wordt slechts één Salesforce-gegevensruimte per Databricks-catalogus ondersteund.
Aanvullende informatiebronnen
Lakehouse Federation biedt geen ondersteuning voor alleen-lezenverbindingen met Salesforce Sales Cloud, maar Met LakeFlow Connect kunt u gegevens uit Salesforce Sales Cloud opnemen in een Databricks Lakehouse. Zie Gegevens opnemen uit Salesforce.