Teilen über


Ausführen von Verbundabfragen auf Snowflake (OAuth)

Auf dieser Seite wird beschrieben, wie Sie lakehouse Federation einrichten, um Verbundabfragen für Snowflake-Daten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zur Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?

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

  • Eine Verbindung mit Ihrer Snowflake-Datenbank.
  • Einen Fremdkatalog, der Ihre Snowflake-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.

Auf dieser Seite wird beschrieben, wie Verbundabfragen für Snowflake-Daten mithilfe der integrierten OAuth-Integration von Snowflake ausgeführt werden. Weitere Authentifizierungsmethoden finden Sie auf den folgenden Seiten:

Sie können Verbundabfragen auf Snowflake mithilfe des Abfrageverbunds oder des Katalogverbunds ausführen.

Im Abfrageverbund überträgt JDBC die Abfrage des Unity-Katalogs an die externe Datenbank. Dies ist ideal für On-Demand-Berichte oder Machbarkeitsstudien an Ihren ETL-Pipelines.

Im Katalogverbund wird die Unity-Katalogabfrage direkt für den Dateispeicher ausgeführt. Dieser Ansatz ist hilfreich für die inkrementelle Migration ohne Codeanpassung oder als längerfristiges Hybridmodell für Organisationen, die einige Daten in Snowflake zusammen mit ihren im Unity-Katalog registrierten Daten verwalten müssen. Siehe "Snowflake-Katalogverbund aktivieren".

Abfrageverbund

Vorbemerkungen

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-Berechnungen müssen Databricks Runtime 13.3 LTS oder höher verwenden und im Standard- oder Dedizierten-Zugriffsmodus ausgeführt werden.
  • SQL-Lagerhäuser müssen pro oder serverlos sein und 2023.40 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 Sicherheitsintegration

Führen Sie in der Snowflake-Konsole CREATE SECURITY INTEGRATION aus. Ersetzen Sie die folgenden Werte:

  • <integration-name>: Ein eindeutiger Name für Ihre OAuth-Integration.

  • <workspace-url>: Eine Azure Databricks-Arbeitsbereich-URL. Sie müssen OAUTH_REDIRECT_URI auf https://<workspace-url>/login/oauth/snowflake.html festlegen, wobei <workspace-url> die eindeutige URL des Azure Databricks-Arbeitsbereichs ist, in dem Sie die Snowflake-Verbindung erstellen.

  • <duration-in-seconds>: Eine Zeitspanne für Aktualisierungs-Token.

    Important

    OAUTH_REFRESH_TOKEN_VALIDITY ist ein angepasstes Feld, das standardmäßig auf 90 Tage festgelegt ist. Nachdem das Aktualisierungstoken abgelaufen ist, müssen Sie die Verbindung erneut authentifizieren. Legen Sie eine angemessene Dauer in diesem Feld fest.

Beispiel:

CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;

Erstellen einer 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.

Note

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

Erforderliche Berechtigungen: Metastore-Admin oder Benutzer mit der Berechtigung CREATE CONNECTION.

  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 Quick access (Schnellzugriff) auf die Schaltfläche External data > (Externe Daten), navigieren Sie zur Registerkarte Connections (Verbindungen), und klicken Sie auf Create connection (Verbindung erstellen).

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

  4. Wählen Sie als Verbindungstypdie Option Snowflake aus.

  5. Wählen Sie für den Authentifizierungstyp im Dropdownmenü die Option OAuth aus.

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

  7. Klicke auf Weiter.

  8. Geben Sie die folgenden Authentifizierungs- und Verbindungsdetails für Ihr Snowflake-Lager ein.

    • Host: Zum Beispiel snowflake-demo.east-us-2.azure.snowflakecomputing.com

    • Port: Zum Beispiel 443

    • Benutzer: Zum Beispiel snowflake-user

    • Client-ID: Führen Sie in der Snowflake-Konsole aus SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>') , um die Client-ID für die Sicherheitsintegration abzurufen.

    • Geheimer Clientschlüssel: Führen Sie in der Snowflake-Konsole aus SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>') , um den geheimen Clientschlüssel für die Sicherheitsintegration abzurufen.

    • OAuth-Umfang: refresh_token session:role:<role-name>. Geben Sie die Snowflake-Rolle an, die in <role-name> verwendet werden soll.

    • Melden Sie sich mit Snowflake an: Klicken sie, und melden Sie sich mit Ihren OAuth-Anmeldeinformationen bei Snowflake an.

      Nach erfolgreicher Anmeldung werden Sie zurück zum Assistenten zum Einrichten der Verbindung geleitet.

  9. Klicken Sie auf Verbindung herstellen.

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

  11. (Optional) Klicken Sie auf Verbindung testen, um zu überprüfen, ob sie funktioniert.

  12. Klicken Sie auf Katalog erstellen.

  13. 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 Arbeitsbereiche haben Zugriff oder Arbeitsbereichen zuweisen, anschließend die Arbeitsbereiche und dann Zuweisen auswählen.

  14. Ä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 wählen Sie den Prinzipal dann in den zurückgegebenen Ergebnissen aus.

  15. 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 wählen Sie den Prinzipal dann in den zurückgegebenen Ergebnissen aus.
    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.
  16. Klicke auf Weiter.

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

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

  19. Klicken Sie auf "Speichern".

Datenbankbezeichner mit Beachtung von Groß-/Kleinschreibung

Das database-Feld des Fremdkatalogs ist einem Snowflake-Datenbankbezeichner zugeordnet. Wenn bei dem Snowflake-Datenbankbezeichner die Groß-/Kleinschreibung nicht beachtet wird, wird die Groß-/Kleinschreibung beibehalten, die Sie im Fremdkatalog <database-name> verwenden. Wenn beim Snowflake-Datenbankbezeichner jedoch die Groß-/Kleinschreibung beachtet wird, müssen Sie den Fremdkatalog <database-name> in doppelte Anführungszeichen einschließen, um die Groß-/Kleinschreibung beizubehalten.

Beispiel:

  • database wird in DATABASE umgewandelt

  • "database" wird in database umgewandelt

  • "database""" wird in database" umgewandelt

    Um ein doppeltes Anführungszeichen zu escapen, verwenden Sie ein weiteres doppeltes Anführungszeichen.

  • "database"" führt zu einem Fehler, da das doppelte Anführungszeichen nicht richtig maskiert ist.

Weitere Informationen finden Sie unter Bezeichneranforderungen in der Snowflake-Dokumentation.

Unterstützte Pushdowns

Die folgenden Pushdowns werden unterstützt:

  • Filters
  • Projections
  • Limit
  • Joins
  • Aggregiert (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
  • Funktionen (Zeichenfolgenfunktionen, mathematische Funktionen, Daten-, Zeit- und Zeitstempelfunktionen und andere verschiedene Funktionen wie Alias, Cast, SortOrder)
  • Windows-Funktionen (DenseRank, Rank, RowNumber)
  • Sorting

Datentypzuordnungen

Wenn Sie von Snowflake zu Spark lesen, werden die Datentypen wie folgt zugeordnet:

Snowflake-Typ Spark-Typ
Dezimalzahl, Zahl, numerisch DecimalType
bigint, byteint, int (Ganzzahl), integer, smallint (kleinste Ganzzahl), tinyint (sehr kleine Ganzzahl) IntegerType
float, float4, float8 FloatType
double, doppelte Präzision, real DoubleType
char, Zeichen, Zeichenfolge, Text, Zeit, varchar StringType
binary BinaryType
boolean BooleanType
date DateType
Datum, Zeitstempel, zeitstempel_ltz, zeitstempel_ntz, zeitstempel_tz TimestampType

Einschränkungen des Abfrageverbunds

  • Auf den Snowflake OAuth-Endpunkt muss über Azure Databricks-Steuerebenen-IPs zugegriffen werden können. Siehe ausgehende IPs aus Azure Databricks-Steuerebene. Snowflake unterstützt die Konfiguration von Netzwerkrichtlinien auf Sicherheitsintegrationsebene, die eine separate Netzwerkrichtlinie ermöglicht, die die direkte Konnektivität von der Azure Databricks-Kontrollebene zum OAuth-Endpunkt zur Autorisierung ermöglicht.
  • Proxy verwenden, Proxy Host, Proxy Port und Snowflake Rollen-Konfigurationsoptionen werden nicht unterstützt. Geben Sie die Snowflake-Rolle als Teil des OAuth-Bereichs an.

Weitere Ressourcen

Weitere Informationen finden Sie in den folgenden Artikeln in der Snowflake-Dokumentation: