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.
Voraussetzungen
Anforderungen an den Arbeitsbereich:
- Der Arbeitsbereich muss für Unity Catalog aktiviert sein.
Computeanforderungen:
- Netzwerkkonnektivität zwischen Ihrem Databricks Runtime-Cluster oder SQL-Warehouse und den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
- Azure Databricks-Cluster müssen Databricks Runtime 15.2 oder höher und den Clusterzugriffsmodus „Freigegeben“ oder „Einzelbenutzer“ verwenden.
- SQL-Warehouses 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:
- Klicken Sie oben rechts in Data Cloud auf Setup.
- Klicken Sie unter Plattformtoolsauf Apps > App-Manager.
- Klicken Sie auf Neue verbundene App.
- Geben Sie einen Namen und eine Kontakt-E-Mail-Adresse ein.
- Aktivieren Sie OAuth-Einstellungen:
- 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
- (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 die Azure Databricks-Verbindung und den Fremdkatalog mit dem Katalog-Explorer erstellen möchten. Databricks empfiehlt die Verwendung des Katalog-Explorers, da dieser weniger manuelle Schritte erfordert als andere Methoden. - 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)
- Durchführen von Anforderungen jederzeit (refresh_token, offline_access)
- Klicken Sie auf Speichern.
- Klicken Sie auf Weiter.
- Geben Sie die Rückruf-URL im folgenden Format ein:
- Klicken Sie auf der Übersichtsseite der verbundenen App auf Consumerdetails verwalten. Sie werden aufgefordert, sich zu authentifizieren.
- 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
- Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Katalog.
- Erweitern Sie im linken Bereich das Menü Externe Daten, und wählen Sie Verbindungen aus.
- Klicken Sie auf Neue Verbindung erstellen.
- Geben Sie einen benutzerfreundlichen Verbindungsnamen ein.
- Wählen Sie einen Verbindungstyp von Salesforce Data Cloud aus.
- Geben Sie die folgenden Verbindungseigenschaften für Ihre Salesforce Data Cloud-Instanz ein.
- Authentifizierungstyp:
OAuth
- Ist Sandbox
false
- (OAuth) Geheimer Clientschlüssel: Consumergeheimnis der mit Salesforce verbundenen App
- (OAuth) Client-ID: Consumerschlüssel der mit Salesforce verbundenen App
- (OAuth) Clientbereich:
cdp_api api cdp_query_api refresh_token offline_access
- Authentifizierungstyp:
- Klicken Sie auf Mit Salesforce anmelden.
- (OAuth) Sie werden aufgefordert, sich mit Ihren SSO-Anmeldeinformationen bei Salesforce Data Cloud anzumelden.
- Nach erfolgreicher Anmeldung werden Sie zurück zur Databricks-SeiteVerbindung erstellen geleitet. Die Schaltfläche Mit Salesforce anmelden wurde durch die Meldung
Successfully authorized
ersetzt. - (Optional) Fügen Sie einen Kommentar hinzu.
- Klicken Sie auf Erstellen.
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.
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}\"")
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.
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
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.
Hinweis
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 benötigen die Berechtigung CREATE CATALOG
für den Metastore und müssen entweder Besitzer der Verbindung sein oder die Berechtigung CREATE FOREIGN CATALOG
für diese haben.
Katalog-Explorer
- Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich auf Katalog, um den Katalog-Explorer zu öffnen.
- Klicken Sie oben rechts auf Katalog erstellen.
- 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.
- 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
- Abweichung
- Cast
- Contains, Startswith, Endswith
Datentypzuordnungen
Wenn Sie aus Salesforce Data Cloud in Spark lesen, werden die Datentypen wie folgt zugeordnet:
Salesforce Data Cloud-Typ | Spark-Typ |
---|---|
Boolean | BooleanType |
Datum | DateType |
Datetime | TimestampType |
E-Mail, Telefon, Text, URL | StringType |
Zahl, Prozent | DecimalType(38, 18) |
Begrenzungen
- Pro Databricks-Katalog wird nur ein Salesforce-Datenbereich unterstützt.