Freigeben über


Ausführen von Verbundabfragen in Salesforce Data Cloud

In diesem Artikel wird beschrieben, wie Sie Lakehouse Federation einrichten, um Verbundabfragen von Salesforce Data Cloud-Daten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zu Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?.

Um mithilfe von Lakehouse Federation eine Verbindung mit Ihrer Salesforce Data Cloud-Datenbank herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity Catalog-Metastore erstellen:

  • Eine Verbindung mit Ihrer Salesforce Data Cloud-Datenbank.
  • Einen Fremdkatalog, der Ihre Salesforce Data Cloud-Datenbank in Unity Catalog spiegelt, sodass Sie die Abfragesyntax und Datengovernancetools von Unity Catalog zum Verwalten des Azure Databricks-Benutzerzugriffs auf die Datenbank verwenden können.

Welchen Salesforce-Connector sollte ich verwenden?

Databricks bietet mehrere Connectors für Salesforce. Es gibt zwei Zero-Copy-Connectors: den Salesforce Data Cloud-Dateifreigabekonnektor und den Salesforce Data Cloud-Abfrageverbundconnector. Auf diese Weise können Sie Daten in Salesforce Data Cloud abfragen, ohne sie zu verschieben. Es gibt auch einen Salesforce-Datenaufnahme-Connector, der Daten aus verschiedenen Produkten von Salesforce kopiert, einschließlich der Salesforce Data Cloud und der Salesforce Sales Cloud.

In der folgenden Tabelle sind die Unterschiede zwischen den Salesforce-Connectors in Databricks zusammengefasst:

Verbinder Anwendungsfall Unterstützte Salesforce-Produkte
Salesforce Data Cloud-Dateifreigabe Wenn Sie den Salesforce Data Cloud-Dateifreigabeconnector in Lakehouse Federation verwenden, ruft Databricks Salesforce Data-as-a-Service (DaaS)-APIs auf, um Daten direkt im zugrunde liegenden Cloudobjektspeicherort zu lesen. Abfragen werden auf Databricks-Berechnungseinheiten ausgeführt, ohne das JDBC-Protokoll zu verwenden.
Im Vergleich zur Abfrage-Föderation eignet sich die Dateifreigabe ideal für die Aggregation einer großen Datenmenge. Es bietet eine verbesserte Leistung zum Lesen von Dateien aus mehreren Datenquellen und bessere Pushdownfunktionen. Siehe Lakehouse Federation for Salesforce Data Cloud File Sharing.
Salesforce Data Cloud
Salesforce Data Cloud-Abfrageverbund Wenn Sie den Salesforce Data Cloud-Abfrageverbundkonnektor in Lakehouse Federation verwenden, nutzt Databricks JDBC, um eine Verbindung zu Quelldaten herzustellen, und leitet Abfragen an Salesforce weiter. Siehe Ausführen von Verbundabfragen in Salesforce Data Cloud. Salesforce Data Cloud
Salesforce-Datenintegration Der Salesforce-Aufnahmeconnector in Lakeflow Connect ermöglicht es Ihnen, vollständig verwaltete Aufnahmepipelinen aus Salesforce Platform-Daten zu erstellen, einschließlich Daten in Salesforce Data Cloud und Salesforce Sales Cloud. Dieser Connector maximiert den Wert, indem nicht nur CDP-Daten, sondern auch CRM-Daten in der Data Intelligence Platform genutzt werden. Siehe "Aufnehmen von Daten aus Salesforce". Salesforce Data Cloud, Salesforce Sales Cloud und mehr. Eine umfassende Liste der unterstützten Salesforce-Produkte finden Sie unter Welche Salesforce-Produkte unterstützt der Salesforce-Datenaufnahme-Connector?.

Bevor Sie beginnen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich muss für Unity Catalog aktiviert sein.

Computeanforderungen:

  • Netzwerkkonnektivität von Ihrer Rechnerressource zu den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Compute muss Databricks Runtime 15.2 oder höher verwenden und den Zugriffsmodus Standard oder Dedicated.
  • SQL-Lagerhäuser müssen pro oder serverlos sein und 2024.30 oder höher verwenden.

Erforderliche Berechtigungen:

  • Um eine Verbindung zu erstellen, müssen Sie Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“ für den Unity Catalog-Metastore sein, der an den Arbeitsbereich angefügt ist.
  • Um einen Fremdkatalog zu erstellen, müssen Sie über die Berechtigung „CREATE CATALOG“ für den Metastore verfügen und entweder der Besitzer der Verbindung sein oder über die Berechtigung „CREATE FOREIGN CATALOG“ für die Verbindung verfügen.

In jedem folgenden aufgabenbasierten Abschnitt werden zusätzliche Berechtigungsanforderungen angegeben.

Erstellen einer mit Salesforce verbundenen App

Mit Salesforce verbundene Apps ermöglichen einer externen Anwendung die Integration in Salesforce mithilfe von APIs und Standardprotokollen. In diesem Abschnitt wird beschrieben, wie Sie eine verbundene App mit SSO erstellen, damit Databricks sich bei Salesforce authentifizieren kann.

Hinweis

Ausführlichere Anweisungen finden Sie unter Erstellen einer verbundenen App in der Salesforce Data Cloud-Dokumentation.

Gehen Sie wie folgt vor, um eine mit Salesforce verbundene App zu erstellen:

  1. Klicken Sie oben rechts in Data Cloud auf Setup.
  2. Klicken Sie unter Plattformtoolsauf Apps > App-Manager.
  3. Klicken Sie auf Neue verbundene App.
  4. Geben Sie einen Namen und eine Kontakt-E-Mail-Adresse ein.
  5. Aktivieren Sie OAuth-Einstellungen:
    1. Geben Sie die Rückruf-URL im folgenden Format ein: https://<databricks_instance_url>/login/oauth/salesforce.html. Beispiel: https://cust-success.cloud.databricks.com/login/oauth/salesforce.html
    2. (Optional) Wenn Sie SQL verwenden möchten, um im nächsten Schritt die Azure Databricks-Verbindung und den Fremdkatalog zu erstellen, muss Ihre mit Salesforce verbundene App auch den Umleitungs-URI https://login.salesforce.com/services/oauth2/success unterstützen. Dies ist nicht erforderlich, wenn Sie den Katalog-Explorer zum Erstellen der Azure Databricks-Verbindung und des fremden Katalogs verwenden möchten. Databricks empfiehlt die Verwendung des Katalog-Explorers, da dieser weniger manuelle Schritte erfordert als andere Methoden.
    3. Fügen Sie die folgenden Bereiche hinzu:
      • Zugriff auf alle Data Cloud-API-Ressourcen (cdp_api)
      • Verwalten von Benutzerdaten über APIs (api)
      • Durchführen von ANSI SQL-Abfragen für Data Cloud-Daten (cdp_query_api)
      • Anfragen jederzeit stellen (refresh_token, offline_access)
    4. Klicken Sie auf Speichern.
    5. Klicken Sie auf Weiter.
  6. Klicken Sie auf der Übersichtsseite der verbundenen App auf Consumerdetails verwalten. Sie werden aufgefordert, sich zu authentifizieren.
  7. Nach erfolgreicher Authentifizierung werden Consumerschlüssel und Consumergeheimnis angezeigt. Speichern Sie diese Werte. Sie benötigen diese, wenn Sie eine Azure Databricks-Verbindung erstellen.

Erstellen einer Azure Databricks-Verbindung

Eine Verbindung gibt einen Pfad und Anmeldeinformationen für den Zugriff auf ein externes Datenbanksystem an. Zum Erstellen einer Verbindung können Sie den Katalog-Explorer oder den SQL-Befehl „CREATE CONNECTION“ in einem Azure Databricks-Notebook oder im Databricks SQL-Abfrage-Editor verwenden.

Hinweis

Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um eine Verbindung zu erstellen. Siehe POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. PlussymbolHinzufügen, und wählen Sie im Menü Verbindung hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Externe Daten >, wechseln Sie zur Registerkarte Verbindungen, und klicken Sie auf Verbindungerstellen.

  3. Geben Sie auf der Seite Verbindungsgrundlagen des Assistenten Verbindung einrichten einen benutzerfreundlichen Verbindungsnamen ein.

  4. Wählen Sie einen Verbindungstyp von Salesforce Data Cloud aus.

  5. (Optional) Fügen Sie einen Kommentar hinzu.

  6. Geben Sie auf der Seite " Authentifizierung " die folgenden Verbindungseigenschaften für Ihre Salesforce Data Cloud ein:

    • (Optional:) Wählen Sie Ist Sandkasten aus.
    • Client-ID: Verbraucherschlüssel der verbundenen App von Salesforce.
    • Geheimer Clientschlüssel: Consumergeheimnis der mit Salesforce verbundenen App.
    • Clientbereich: cdp_api api cdp_query_api refresh_token offline_access
  7. Klicken Sie auf "Mit Salesforce anmelden".

  8. (OAuth) Sie werden aufgefordert, sich mit Ihren SSO-Anmeldeinformationen bei Salesforce Data Cloud anzumelden.

  9. Nach erfolgreicher Anmeldung werden Sie zurück zum Databricks Assistenten zum Einrichten der Verbindung geleitet. Die Schaltfläche " Mit Salesforce anmelden " wurde durch eine Successfully authorized Nachricht ersetzt.

  10. Klicken Sie auf Neue Verbindung erstellen.

  11. Geben Sie auf der Seite Kataloggrundlagen einen Namen für den Fremdkatalog ein. Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können.

  12. Geben Sie den Salesforce-Datenbereich ein.

  13. (Optional) Klicken Sie auf Verbindung testen, um zu bestätigen, dass die Verbindung funktioniert.

  14. Klicken Sie auf Katalog erstellen.

  15. Wählen Sie auf der Seite Access die Arbeitsbereiche aus, in denen Benutzer auf den von Ihnen erstellten Katalog zugreifen können. Sie können Alle Arbeitsbereichen haben Zugriff auswählen oder auf Arbeitsbereichen zuweisen klicken, die Arbeitsbereiche auswählen und dann auf Zuweisen klicken.

  16. Ändern Sie den Eigentümer, der in der Lage sein wird, den Zugriff auf alle Objekte im Katalog zu verwalten. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Prinzipal.

  17. Gewähren Sie Berechtigungen für den Katalog. Klicken Sie auf Gewähren:

    1. Geben Sie die Prinzipale an, die Zugriff auf Objekte im Katalog haben sollen. Beginnen Sie mit der Eingabe eines Prinzipals im Textfeld, und klicken Sie dann in den zurückgegebenen Ergebnissen auf den Prinzipal.
    2. Wählen Sie die Berechtigungsvoreinstellungen aus, die den einzelnen Prinzipalen gewährt werden sollen. Standardmäßig werden allen Kontobenutzern BROWSE gewährt.
      • Wählen Sie Data Reader aus dem Dropdown-Menü aus, um read Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie Daten-Editor aus dem Dropdownmenü aus, um read und modify Berechtigungen für Objekte im Katalog zu gewähren.
      • Wählen Sie manuell die Berechtigungen aus, die Sie vergeben möchten.
    3. Klicken Sie auf Gewähren.
  18. Klicke auf Weiter.

  19. Geben Sie auf der Seite Metadaten Schlüssel-Wert-Paare für Tags an. Weitere Informationen finden Sie unter Anwenden von Tags auf sicherbare Unity-Katalog-Objekte.

  20. (Optional) Fügen Sie einen Kommentar hinzu.

  21. Klicken Sie auf Speichern.

SQL

Databricks empfiehlt die Verwendung des Katalog-Explorers zum Erstellen der Verbindung und des Fremdkatalogs, da dieser weniger manuelle Schritte erfordert als andere Methoden.

Wenn Sie SQL verwenden möchten, um die Azure Databricks-Verbindung und den Fremdkatalog zu erstellen, muss Ihre mit Salesforce verbundene App den Umleitungs-URI https://login.salesforce.com/services/oauth2/success unterstützen. Dies ist nicht erforderlich, wenn Sie den Katalog-Explorer verwenden.

  1. Generieren Sie Codes für die PKCE-Codeüberprüfung und -Codeabfrage. Dazu können Sie ein Onlinetool wie https://tonyxu-io.github.io/pkce-generator/ verwenden oder das folgende Python-Skript ausführen:

    %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. Rufen Sie die folgende URL auf, und authentifizieren Sie sich mit Ihren Salesforce-Anmeldeinformationen, um authorization_code abzurufen (ersetzen Sie <client_id> und <code_challenge> durch Ihre Parameter).

    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>
    

    Ein URL-codierter Autorisierungscode ist in der umgeleiteten URL sichtbar.

  3. Führen Sie in einem Notebook oder im Databricks SQL-Abfrage-Editor den folgenden Befehl aus:

    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 empfiehlt die Verwendung von Azure Databricks-Geheimnissen anstelle von Klartext-Zeichenfolgen für vertrauliche Werte wie Anmeldeinformationen. Zum Beispiel:

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

    Informationen zum Einrichten von Geheimnissen finden Sie unter Verwaltung von Geheimnissen.

Erstellen eines Fremdkatalogs

Hinweis

Wenn Sie die Benutzeroberfläche zum Erstellen einer Verbindung mit der Datenquelle verwenden, ist die Erstellung fremder Kataloge enthalten, und Sie können diesen Schritt überspringen.

Ein Fremdkatalog spiegelt eine Datenbank in einem externen Datensystem, sodass Sie Abfragen und die Verwaltung des Zugriffs auf Daten in dieser Datenbank mithilfe von Azure Databricks und Unity Catalog steuern können. Um einen fremden Katalog zu erstellen, verwenden Sie eine Verbindung mit der bereits definierten Datenquelle.

Zum Erstellen eines Fremdkatalogs können Sie den Katalog-Explorer oder den SQL-Befehl CREATE FOREIGN CATALOG in einem Azure Databricks-Notebook oder im SQL-Abfrage-Editor verwenden. Sie können auch die Databricks-REST-API oder die Databricks CLI verwenden, um einen Katalog zu erstellen. Siehe POST /api/2.1/unity-catalog/catalogs und Unity Catalog-Befehle.

Erforderliche Berechtigungen: Sie müssen über die Berechtigung „CREATE CATALOG” für den Metastore verfügen und entweder Besitzer der Verbindung sein oder die Berechtigung „CREATE FOREIGN CATALOG“ für sie haben.

Katalog-Explorer

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog zum Öffnen des Katalog-Explorers.
  2. Klicken Sie oben rechts auf Katalog erstellen.
  3. Geben Sie die folgenden Eigenschaften für Ihren Salesforce Data Cloud-Katalog ein.
    • Katalogname: Ein benutzerfreundlicher Name für den Katalog.
    • Typ: Foreign.
    • Verbindungsname: Der Name der Verbindung, unter der der Katalog erstellt wird.
    • Datenbereich: Ein Salesforce-Datenbereich.
  4. Klicken Sie auf Erstellen.

SQL

Führen Sie den folgenden SQL-Befehl in einem Notebook oder im SQL-Abfrage-Editor aus. Elemente in Klammern sind optional.

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

Ersetzen Sie die folgenden Werte:

  • <catalog-name>:
  • <connection-name>:
  • <dataspace>: Salesforce-Datenbereich. Beispiel: default.

Unterstützte Pushdowns

Die folgenden Pushdowns werden unterstützt:

  • Filter
  • Projektionen
  • Begrenzung
  • Aggregate
  • Offset
  • Umwandeln
  • Enthält, Beginnt mit, Endet mit

Datentypzuordnungen

Wenn Sie aus Salesforce Data Cloud in Spark lesen, werden die Datentypen wie folgt zugeordnet:

Salesforce Data Cloud-Typ Spark-Typ
Boolescher Wert Boolescher Typ
Datum Datumstyp
Datum und Uhrzeit Zeitstempeltyp
E-Mail, Telefon, Text, URL Zeichenkettentyp
Zahl, Prozent DecimalType(38, 18)

Begrenzungen

  • Es wird nur ein Salesforce-Datenbereich pro Databricks-Katalog unterstützt.
  • In Databricks Runtime 16.1 und älter werden Tabellen- und Schemanamen, bei denen zwischen Groß- und Kleinschreibung unterschieden wird, nicht unterstützt. Dazu gehören Namen mit Großbuchstaben in Salesforce Data Cloud. Beispiel: MyTable Wird nicht unterstützt.