Köra federerade frågor på Salesforce Data 360

Den här sidan beskriver hur du konfigurerar Lakehouse Federation för att köra federerade frågor på Salesforce Data 360-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 360-databas med Lakehouse Federation måste du skapa följande i azure Databricks Unity Catalog-metaarkivet:

  • En anslutning till din Salesforce Data 360-databas.
  • En sekundär katalog som speglar din Salesforce Data 360-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.

Vilken Salesforce-anslutning ska jag använda?

Databricks erbjuder flera kontakter för Salesforce. Det finns två zero-copy-anslutningar: fildelningsanslutningen Salesforce Data 360 (tidigare Data Cloud) och frågefederationsanslutningen Salesforce Data 360. Med dessa kan du köra frågor mot data i Salesforce Data 360 utan att flytta dem. Det finns också en Salesforce-inmatningsanslutning som kopierar data från olika Salesforce-produkter, inklusive Salesforce Data 360 och Salesforce Sales Cloud.

Följande tabell sammanfattar skillnaderna mellan Salesforce-kopplingarna i Databricks.

Anslutning Användningsfall Salesforce-produkter som stöds
Salesforce Data 360-fildelning När du använder fildelningsanslutningsappen Salesforce Data 360 i Lakehouse Federation anropar Databricks Api:er för Salesforce Data-as-a-Service (DaaS) för att läsa data direkt på den underliggande lagringsplatsen för molnobjekt. Frågor körs på Databricks-beräkning utan att använda JDBC-protokollet.
Jämfört med frågefederation är fildelning perfekt för federering av en stor mängd data. Det ger bättre prestanda för att läsa filer från flera datakällor och bättre pushdown-funktioner. Se Lakehouse Federation för Salesforce Data 360-fildelning.
Salesforce Data 360
Salesforce Data 360-frågefederation När du använder frågefederationsanslutningsappen Salesforce Data 360 i Lakehouse Federation använder Databricks JDBC för att ansluta till källdata och skickar frågor till Salesforce. Se Köra federerade frågor på Salesforce Data 360. Salesforce Data 360
** Salesforce-import Med Salesforce-inmatningsanslutningen i Lakeflow Connect kan du skapa fullständigt hanterade inmatningspipelines från Salesforce Platform-data. Den här anslutningsappen maximerar värdet genom att använda inte bara CDP-data utan även CRM-data i Data Intelligence Platform. Se Samla in data från Salesforce. Se Vilka Salesforce-produkter stöder Salesforce-inmatningsanslutningsappen?

Innan du börjar

Arbetsplatskrav:

  • Arbetsytan är aktiverad för Unity Catalog.

Beräkningsbehov:

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

Behörigheter 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 tillståndskrav specificeras i varje uppgiftsbaserad sektion som följer.

Skapa en Salesforce-ansluten app

Salesforce connected apps tillåter en extern applikation att integrera med Salesforce genom att använda API:er och standardprotokoll. Den här sektionen beskriver hur man skapar en ansluten app med SSO för att tillåta Databricks att autentisera med Salesforce.

Anmärkning

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

För att skapa en Salesforce-ansluten app, gör följande:

  1. I det övre högra hörnet av Data 360 klickar du på Installation.
  2. Under Plattformsverktyg klickar du på App Manager för appar>.
  3. Klicka på Ny Ansluten App.
  4. Ange ett namn och en kontakt e-postadress.
  5. Aktivera OAuth-inställningar:
    1. Ange Callback URL, i följande format: https://<databricks_instance_url>/login/oauth/salesforce.html. Till 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 Scopes:
      • Få åtkomst till alla Data 360 API-resurser (cdp_api)
      • Hanterar användardata via API:er (api)
      • Utföra ANSI SQL-frågor på Data 360-data (cdp_query_api)
      • Utför 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 kommer att bli uppmanad att autentisera dig.
  7. Vid lyckad autentisering avslöjas Consumer key och Consumer secret. 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.

Anmärkning

Du kan även 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: Metastore-admin eller användare med CREATE CONNECTION-behörighet.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på dataikonen.Katalog.

  2. Högst upp i Katalog-panelen, klicka på ikonen Lägg till eller plustecknetLägg till-ikonen och välj Lägg till en anslutning från menyn.

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

  3. På sidan Anslutningsgrundläggande i Installera anslutningsguiden anger du ett användarvänligt Anslutningsnamn.

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

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

  6. På sidan Autentisering anger du följande anslutningsegenskaper för Salesforce Data 360:

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

  8. (OAuth) Du blir ombedd att logga in på Salesforce Data 360 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. Ange Salesforce-datarymden.

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

  14. Klicka på Skapa katalog.

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

  16. Ändra ägaren som ska kunna hantera åtkomsten till alla objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.

  17. Tilldela behörigheter på katalogen. Klicka på Grant:

    1. Ange principals vem som ska ha åtkomst till objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.
    2. Välj förinställningarna för privilegier som ska beviljas varje huvudaktör . 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å Grant.
  18. Klicka på Nästa.

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

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

  21. 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 genom att använda ett onlinverktyg så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 auktorisationskod är synlig i den omdirigerade URL:en.

  3. Kör följande i en anteckningsbok eller Databricks SQL-frågeredigerare:

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

    För information om att ställa in hemligheter, se Secret management.

Skapa en utländsk katalog

Anmärkning

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 krävs:CREATE CATALOG behörighet på metastore och antingen äganderätt till anslutningen eller CREATE FOREIGN CATALOG privilegiet på anslutningen.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på dataikonen.Katalog 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 360-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 eller SQL-frågeredigeraren. Objekt inom parentes ä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>: Datenutrymme hos Salesforce. Till exempel, default.

Stödjer pushdowns

Följande nedtryckningar stöds:

  • Filterar
  • Prognoser
  • Gräns
  • Samlingar
  • Kompensera
  • Rollista
  • Innehåller, Börjar med, Slutar med

Datatypkopplingar

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

Salesforce Data 360-typ Gnista typ
Boolesk Booleskt Datatyp
Datum Datumtyp
Datum och tid Tidsstämpeltyp
E-post, Telefon, Text, URL Strängtyp
Nummer, Procent DecimalType(38, 18)

Begränsningar

  • Endast ett Salesforce-datautrymme per Databricks-katalog stöds.
  • I Databricks Runtime 16.1 och äldre versioner stöds inte skiftlägeskänsliga tabell- och schemanamn. Detta inkluderar namn som har stora bokstäver i Salesforce Data 360. Till exempel stöds inte MyTable.