Delen via


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 de CREATE 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:

  1. Klik in de rechterbovenhoek van Data Cloud op Setup.
  2. Klik onder Platformhulpprogramma's op Apps > App Manager.
  3. Klik op Nieuwe verbonden app.
  4. Voer een naam en een e-mailadres van een contactpersoon in.
  5. OAuth-instellingen inschakelen:
    1. 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.
    2. (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.
    3. 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)
    4. Klik op Opslaan.
    5. Klik op Continue.
  6. Klik op de overzichtspagina van de verbonden app op Consumentendetails beheren. U wordt gevraagd om te verifiëren.
  7. 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

  1. Klik in uw Azure Databricks-werkruimte op cataloguspictogramCatalogus.

  2. Klik boven in het deelvenster Catalogus op het pictogram Toevoegen of pluspictogram 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.

  3. Voer op de pagina Verbindingsbeginselen van de Verbindingswizard Verbinding instellen een gebruiksvriendelijke verbindingsnaam in.

  4. Selecteer een verbindingstype van Salesforce Data Cloud.

  5. (Optioneel) Voeg een opmerking toe.

  6. 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
  7. Klik op Aanmelden met Salesforce.

  8. (OAuth) U wordt gevraagd u aan te melden bij Salesforce Data Cloud met behulp van uw SSO-referenties.

  9. 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.

  10. Klik op Verbinding maken.

  11. 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.

  12. (Optioneel) Klik op Verbinding testen om te bevestigen dat deze werkt.

  13. Klik op Maak de catalogus.

  14. 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.

  15. 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.

  16. Verleent rechten aan de catalogus. Klik op Verlenen:

    1. 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.
    2. 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 en modify bevoegdheden voor objecten in de catalogus toe te kennen.
      • Selecteer handmatig de bevoegdheden die u wilt verlenen.
    3. Klik op Verlenen.
  17. Klik op Volgende.

  18. Geef op de pagina Metagegevens de tags als sleutel-waardeparen op. Zie Tags toepassen op beveiligbare objecten van Unity Catalogvoor meer informatie.

  19. (Optioneel) Voeg een opmerking toe.

  20. 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/successondersteunen. Dit is niet nodig als u Catalog Explorer gebruikt.

  1. 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}\"")
    
  2. 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.

  3. 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

  1. Klik in uw Azure Databricks-werkruimte op CataloguspictogramCatalog om Catalog Explorer te openen.
  2. Klik in de rechterbovenhoek op Catalogus maken.
  3. 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.
  4. 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.