Dela via


Köra federerade frågor i Salesforce Data Cloud

Den här artikeln beskriver hur du konfigurerar Lakehouse Federation för att köra federerade frågor på Salesforce Data Cloud-data som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Vad är Lakehouse Federation?.

Om du vill ansluta till din Salesforce Data Cloud-databas med Lakehouse Federation måste du skapa följande i ditt Azure Databricks Unity Catalog-metaarkiv:

  • En anslutning till din Salesforce Data Cloud-databas.
  • En utländsk katalog som speglar din Salesforce Data Cloud-databas i Unity Catalog så att du kan använda Unity Catalog-frågesyntax och verktyg för datastyrning för att hantera Azure Databricks-användaråtkomst till databasen.

Innan du börjar

Krav för arbetsyta:

  • Arbetsytan är aktiverad för Unity Catalog.

Beräkningskrav:

  • Nätverksanslutning från beräkningsresursen till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
  • Azure Databricks-beräkning måste använda Databricks Runtime 15.2 eller senare och Delat eller Enskild användaråtkomstläge.
  • SQL-lager måste vara pro eller serverlösa och måste använda 2024.30 eller senare.

Behörigheter som krävs:

  • Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med CREATE CONNECTION behörighet i Unity Catalog-metaarkivet som är kopplat till arbetsytan.
  • Om du vill skapa en extern katalog måste du ha behörigheten CREATE CATALOG i metaarkivet och antingen vara ägare till anslutningen eller ha CREATE FOREIGN CATALOG behörighet för anslutningen.

Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.

Skapa en Salesforce-ansluten app

Med Salesforce-anslutna appar kan ett externt program integreras med Salesforce med hjälp av API:er och standardprotokoll. I det här avsnittet beskrivs hur du skapar en ansluten app med enkel inloggning så att Databricks kan autentisera med Salesforce.

Kommentar

Mer detaljerade instruktioner finns i Skapa en ansluten app i Salesforce Data Cloud-dokumentationen.

Gör följande för att skapa en Salesforce-ansluten app:

  1. I det övre högra hörnet av DataMoln klickar du på Installation.
  2. Under Plattformsverktyg klickar du på > för appar.
  3. Klicka på Ny ansluten app.
  4. Ange ett namn och en e-postadress för kontakt .
  5. Aktivera OAuth-inställningar:
    1. Ange motringnings-URL :en i följande format: https://<databricks_instance_url>/login/oauth/salesforce.html. Exempel: https://cust-success.cloud.databricks.com/login/oauth/salesforce.html.
    2. (Valfritt) Om du planerar att använda SQL för att skapa Azure Databricks-anslutningen och den externa katalogen i nästa steg måste din Salesforce Connected App också ha stöd för omdirigerings-URI:n https://login.salesforce.com/services/oauth2/success. Detta behövs inte om du planerar att använda Catalog Explorer för att skapa Azure Databricks-anslutningen och den externa katalogen. Databricks rekommenderar att du använder Catalog Explorer eftersom det kräver färre manuella steg än andra metoder.
    3. Lägg till följande omfång:
      • Få åtkomst till alla Data Cloud API-resurser (cdp_api)
      • Hantera användardata via API:er (API)
      • Utföra ANSI SQL-frågor på datamolndata (cdp_query_api)
      • Utföra begäranden när som helst (refresh_token, offline_access)
    4. Klicka på Spara.
    5. Klicka på Fortsätt.
  6. På översiktssidan Ansluten app klickar du på Hantera konsumentinformation. Du uppmanas att autentisera.
  7. Vid lyckad autentisering avslöjas konsumentnyckeln och konsumenthemligheten . Spara dessa värden. Du behöver dem när du skapar en Azure Databricks-anslutning.

Skapa en Azure Databricks-anslutning

En anslutning anger en sökväg och autentiseringsuppgifter för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller kommandot CREATE CONNECTION SQL i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.

Kommentar

Du kan också använda Databricks REST API eller Databricks CLI för att skapa en anslutning. Se kommandona POST /api/2.1/unity-catalog/connections och Unity Catalog.

Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION

Katalogutforskaren

  1. I din Azure Databricks-arbetsyta klickar du på katalogikonen .

  2. Längst upp i fönstret Catalog klickar du på ikonen Lägg till eller plusIkonen Lägg till och väljer Lägg till en anslutning på menyn.

    Från sidan Snabbåtkomst klickar du på knappen Externa data >, går till fliken Anslutningar och klickar på Skapa anslutning.

  3. Ange ett användarvänligt Anslutningsnamnpå sidan Anslutningsgrunder i guiden Konfigurera anslutning .

  4. Välj en anslutningstyp för Salesforce Data Cloud.

  5. (Valfritt) Lägg till en kommentar.

  6. På sidan Authentication anger du följande anslutningsegenskaper för ditt Salesforce Data Cloud:

    • (Valfritt) Välj som sandbox.
    • klient-ID: konsumentnyckel för ansluten app i Salesforce.
    • Klienthemlighet: Salesforce-ansluten appkonsumenthemlighet.
    • Klientomfång: cdp_api api cdp_query_api refresh_token offline_access
  7. Klicka på Logga in med Salesforce.

  8. (OAuth) Du ombeds att logga in på Salesforce Data Cloud med dina SSO-uppgifter.

  9. När du har loggat in dirigeras du tillbaka till guiden Databricks Konfigurera anslutning. Knappen Logga in med Salesforce har ersatts med ett Successfully authorized meddelande.

  10. Klicka på Skapa anslutning.

  11. catalog basics-sidan anger du ett namn för den externa katalogen. En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog.

  12. (Valfritt) Klicka på Testa anslutningen för att bekräfta att den fungerar.

  13. Klicka på Skapa katalog.

  14. På sidan Access väljer du de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomsteller klicka på Tilldela till arbetsytor, välj arbetsytor och klicka sedan på Tilldela.

  15. Ändra Ägare som kommer att kunna hantera åtkomst till alla objekt i katalogen. Börja skriva en huvudman i textrutan och klicka sedan på huvudmannen i de visade resultaten.

  16. Bevilja privilegier i katalogen. Klicka på Bevilja:

    1. Ange principals vem som ska ha åtkomst till objekt i katalogen. Börja skriva en huvudman i textrutan och klicka sedan på huvudmannen i de visade resultaten.
    2. Välj förbestämda rättigheter som ska beviljas varje huvudman. Alla kontoanvändare beviljas BROWSE som standard.
      • Välj dataläsare från den nedrullningsbara menyn för att bevilja read behörigheter för objekt i katalogen.
      • Välj dataredigeraren från den nedrullningsbara menyn för att bevilja read och modify behörigheter för objekt i katalogen.
      • Välj de behörigheter som ska beviljas manuellt.
    3. Klicka på Bevilja.
  17. Klicka på Nästa.

  18. På sidan metadata anger du taggar för nyckel/värde-par. Mer information finns i Tillämpa taggar på skyddsbara objekt i Unity Catalog.

  19. (Valfritt) Lägg till en kommentar.

  20. Klicka på Spara.

SQL

Databricks rekommenderar att du använder Catalog Explorer för att skapa anslutningen och den externa katalogen eftersom den kräver färre manuella steg än andra metoder.

Om du planerar att använda SQL för att skapa Azure Databricks-anslutningen och den externa katalogen måste din Salesforce Connected App ha stöd för omdirigerings-URI:n https://login.salesforce.com/services/oauth2/success. Detta behövs inte om du använder Catalog Explorer.

  1. Generera PKCE-kodverifierare och kodutmaningskoder. Du kan göra detta med hjälp av ett onlineverktyg som https://tonyxu-io.github.io/pkce-generator/ eller genom att köra följande Python-skript:

    %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. Gå till följande URL och autentisera med dina Salesforce-autentiseringsuppgifter för att hämta authorization_code (ersätt <client_id> och <code_challenge> med dina parametrar).

    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>
    

    En URL-kodad auktoriseringskod visas i den omdirigerade URL:en.

  3. Kör följande i en notebook-fil eller Databricks SQL-frågeredigeraren:

    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 rekommenderar att du använder Azure Databricks hemligheter i stället för oformaterade strängar för känsliga värden som autentiseringsuppgifter. Till exempel:

    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"
      );
    

    Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.

Skapa en utländsk katalog

Kommentar

Om du använder användargränssnittet för att skapa en anslutning till datakällan inkluderas skapande av utländsk katalog och du kan hoppa över det här steget.

En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. För att skapa en extern katalog använder du en anslutning till en datakälla som redan har definierats.

Om du vill skapa en utländsk katalog kan du använda Catalog Explorer eller kommandot CREATE FOREIGN CATALOG SQL i en Azure Databricks-anteckningsbok eller SQL-frågeredigeraren. Du kan också använda Databricks REST API eller Databricks CLI för att skapa en katalog. Se kommandona POST /api/2.1/unity-catalog/catalogs och Unity Catalog.

Behörigheter som krävs:CREATE CATALOG behörighet för metaarkivet och antingen ägarskap för anslutningen eller behörigheten CREATE FOREIGN CATALOG för anslutningen.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på ikonen KatalogCatalog för att öppna Katalogutforskaren.
  2. I det övre högra hörnet klickar du på Skapa katalog.
  3. Ange följande egenskaper för din Salesforce Data Cloud-katalog.
    • Katalognamn: Ett användarvänligt namn för katalogen.
    • Typ: Foreign.
    • Anslutningsnamn: Namnet på anslutningen som katalogen skapas på.
    • Dataområde: Ett Salesforce-datautrymme.
  4. Klicka på Skapa.

SQL

Kör följande SQL-kommando i en notebook-fil eller SQL-frågeredigeraren. Objekt inom hakparenteser är valfria.

CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');

Ersätt följande värden:

  • <catalog-name>:
  • <connection-name>:
  • <dataspace>: Salesforce-datautrymme. Exempel: default

Pushdowns som stöds

Följande pushdowns stöds:

  • Filter
  • Projektioner
  • Gräns
  • Aggregeringar
  • Motverka
  • Cast
  • Contains, Startswith, Endswith

Datatypsmappningar

När du läser från Salesforce Data Cloud till Spark mappar datatyper på följande sätt:

Salesforce Data Cloud-typ Spark-typ
Booleskt BooleanType
Datum DateType
Datetime Tidsstämpeltyp
E-post, telefon, text, url StringType
Tal, procent DecimalType(38, 18)

Begränsningar

  • Endast ett Salesforce-datautrymme per Databricks-katalog stöds.

Ytterligare resurser

Lakehouse Federation inte stöder skrivskyddade anslutningar till Salesforce Sales Cloud, men Med LakeFlow Connect kan du mata in data från Salesforce Sales Cloud till ett Databricks lakehouse. Se Samla in data från Salesforce.