Delen via


Federatieve query's uitvoeren in Salesforce Data Cloud

Belangrijk

Deze functie is beschikbaar als openbare preview.

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 van de Unity Catalog-query en hulpprogramma's voor gegevensbeheer kunt gebruiken om azure Databricks-gebruikerstoegang tot de database te beheren.

Voordat u begint

Vereisten voor werkruimte:

  • Werkruimte ingeschakeld voor Unity Catalog.

Rekenvereisten:

  • Netwerkconnectiviteit van uw Databricks Runtime-cluster of SQL Warehouse naar de doeldatabasesystemen. Zie De aanbevelingen voor netwerken voor Lakehouse Federation.
  • Azure Databricks-clusters moeten Databricks Runtime 15.2 of hoger en de modus voor gedeelde of toegang tot één gebruiker gebruiken.
  • SQL-warehouses moeten Pro of Serverless 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 refererende catalogus wilt maken, moet u beschikken over de CREATE CATALOG machtiging voor de metastore en de eigenaar van de verbinding zijn of over de CREATE FOREIGN CATALOG bevoegdheid voor de verbinding beschikken.

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 refererende catalogus in de volgende stap, moet uw verbonden Salesforce-app ook de omleidings-URI https://login.salesforce.com/services/oauth2/successondersteunen. Dit is niet nodig als u Catalog Explorer wilt gebruiken om de Azure Databricks-verbinding en de refererende 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 Doorgaan.
  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.

Vereiste machtigingen: Metastore-beheerder of gebruiker met de CREATE CONNECTION bevoegdheid.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op Cataloguspictogram Catalogus.
  2. Vouw in het linkerdeelvenster het menu Externe gegevens uit en selecteer Verbindingen.
  3. Klik op Verbinding maken.
  4. Voer een gebruiksvriendelijke verbindingsnaam in.
  5. Selecteer een verbindingstype van Salesforce Data Cloud.
  6. Voer de volgende verbindingseigenschappen in voor uw Salesforce Data Cloud.
    • Verificatietype: OAuth
    • Is sandbox false
    • (OAuth) Clientgeheim: consumentengeheim voor verbonden apps in Salesforce
    • (OAuth) Client-id: Consumentensleutel voor verbonden Salesforce-app
    • (OAuth) Clientbereik: 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 doorgestuurd naar de databricks-pagina Verbinding maken. De knop Aanmelden met Salesforce is vervangen door een Successfully authorized bericht.
  10. (Optioneel) Voeg een opmerking toe.
  11. Klik op Create.

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 refererende 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 (vervangen <client_id> en <code_challenge> door uw parameters) op te halen.

    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 u aan Azure Databricks-geheimen te gebruiken in plaats van tekenreeksen zonder opmaak voor gevoelige waarden, zoals referenties. 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 refererende catalogus maken

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. Als u een refererende catalogus wilt maken, gebruikt u een verbinding met de gegevensbron die al is gedefinieerd.

Als u een refererende catalogus wilt maken, kunt u Catalog Explorer of de CREATE FOREIGN CATALOG SQL-opdracht gebruiken in een Azure Databricks-notebook of de SQL-queryeditor.

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 Cataloguspictogram Catalog om Catalog Explorer te openen.
  2. Klik rechtsboven 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
  • Grenswaarde
  • Aggregaties
  • Verschuiving
  • 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.