Snowflake

Gehen Sie folgendermaßen vor, um Looker mit Snowflake zu verbinden:

  1. Erstellen Sie einen Looker-Nutzer in Snowflake und stellen Sie den Zugriff bereit.
  2. Richten Sie in Looker eine Datenbankverbindung ein.

Netzwerk-Datenverkehr verschlüsseln

Es empfiehlt sich, den Netzwerkverkehr zwischen der Looker-Anwendung und Ihrer Datenbank zu verschlüsseln. Sehen Sie sich eine der Optionen an, die auf der Dokumentationsseite Sicheren Datenbankzugriff aktivieren beschrieben werden.

Looker-Benutzer in Snowflake erstellen

Wir empfehlen die folgenden Befehle zum Erstellen des Looker-Benutzers. Achten Sie darauf, jede Zeile einzeln auszuführen.

Fügen Sie optional das Schlüsselwort ON FUTURE hinzu, um GRANT-Anweisungen für neu erstellte Objekte beizubehalten. Wir empfehlen, diesen Befehl für Tabellen in allen von Looker verwendeten Schemas auszuführen, damit Sie GRANT-Anweisungen beim Erstellen neuer Tabellen nicht noch einmal ausführen müssen.

-- change role to ACCOUNTADMIN
use role ACCOUNTADMIN;

-- create role for looker
create role if not exists looker_role;
grant role looker_role to role SYSADMIN;
    -- Note that we are not making the looker_role a SYSADMIN,
    -- but rather granting users with the SYSADMIN role to modify the looker_role

-- create a user for looker
create user if not exists looker_user
password = <enter password here>;
grant role looker_role to user looker_user;
alter user looker_user
set default_role = looker_role
default_warehouse = looker_wh;

-- change role
use role SYSADMIN;

-- create a warehouse for looker (optional)
create warehouse if not exists looker_wh

-- set the size based on your dataset
warehouse_size = medium
warehouse_type = standard
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges
on warehouse looker_wh
to role looker_role;

-- grant read only database access (repeat for all database/schemas)
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;

-- rerun the following any time a table is added to the schema
grant select on all tables in schema <database>.<schema> to role looker_role;
-- or
grant select on future tables in schema <database>.<schema> to role looker_role;

-- create schema for looker to write back to
use database <database>;
create schema if not exists looker_scratch;
use role ACCOUNTADMIN;
grant ownership on schema looker_scratch to role SYSADMIN revoke current grants;
grant all on schema looker_scratch to role looker_role;

Wenn Sie die vorherigen Befehle als Batch in das Feld „Snowflake-Verbindung“ einfügen, aktivieren Sie das Kästchen Alle Abfragen, damit alle Zeilen ausgeführt werden. Standardmäßig fährt Snowflake nur auf den ausgewählten Linien.

Die Snowflake-Konsole mit aktiviertem Kästchen „Alle Abfragen“.

Looker-Verbindung zu Ihrer Datenbank erstellen

Wählen Sie in Looker im Bereich Admin die Option Verbindungen aus und klicken Sie dann auf Verbindung hinzufügen.

Geben Sie die Verbindungsdetails ein. Die meisten Einstellungen sind den meisten Datenbankdialekten gemeinsam. Weitere Informationen finden Sie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden. Einige der Einstellungen werden im Folgenden beschrieben:

  • Name: Geben Sie der Verbindung einen Namen. So referenziert das LookML-Modell die Verbindung.
  • Dialekt: Wählen Sie Snowflake aus.
  • Host: Geben Sie den Snowflake-Hostnamen ein. Es sieht in etwa so aus: <account_name>.snowflakecomputing.com. Sehen Sie sich die Beispiele für Snowflake-Kontonamen nach Region an, um sicherzugehen, dass Sie den richtigen Wert für Ihre Bereitstellung verwenden.
  • Port: Der Standardwert ist 443.
  • Datenbank: Geben Sie die zu verwendende Standarddatenbank ein. Bei diesem Feld wird zwischen Groß- und Kleinschreibung unterschieden.
  • Schema: Geben Sie das Standardschema ein.
  • Authentication (Authentifizierung): Wählen Sie Database Account oder OAuth aus.
    • Geben Sie unter Datenbankkonto den Nutzernamen und das Passwort des Snowflake-Nutzerkontos an, das für die Verbindung mit Looker verwendet wird.
    • Verwenden Sie OAuth, wenn Sie OAuth für die Verbindung konfigurieren möchten.
  • PDTs aktivieren: Mit dieser Ein/Aus-Schaltfläche können Sie persistente abgeleitete Tabellen (PDTs) aktivieren. Wenn Sie PDTs aktivieren, werden zusätzliche PDT-Felder und der Abschnitt PDT Overrides (PDT-Überschreibungen) für die Verbindung angezeigt.

  • Temporäre Datenbank: Wenn PDTs aktiviert sind, legen Sie dieses Feld auf ein Schema fest, bei dem der Nutzer uneingeschränkte Berechtigungen zum Erstellen, Löschen, Umbenennen und Ändern von Tabellen hat.

  • Maximale Verbindungen pro Knoten: Für diese Einstellung kann anfänglich die Standardeinstellung beibehalten werden. Weitere Informationen zu dieser Einstellung finden Sie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden im Abschnitt Maximale Verbindungen pro Knoten.

  • Kostenschätzung: Aktiviert Kostenschätzungen für Explore-Abfragen, Kostenschätzungen für SQL Runner-Abfragen und Schätzungen der Recheneinsparungen für aggregierte Bekanntheitsabfragen für die Verbindung.

  • Datenbankzeitzone: Die Zeitzone, in der Ihre Snowflake-Datenbank Datum und Uhrzeit speichert. Der Standardwert ist UTC. Dies ist optional.

  • Query Time Zone: Die Zeitzone, in der Ihre Abfragen angezeigt werden sollen. Beispiel: USA (Osten Amerika – New York). Dies ist optional.

  • Zusätzliche JDBC-Parameter: Fügen Sie zusätzliche JDBC-Parameter aus dem JDBC-Treiber von Snowflake hinzu.

    • Fügen Sie warehouse=<YOUR WAREHOUSE NAME> hinzu.
    • Außerdem legt Looker standardmäßig die folgenden Snowflake-Parameter für jede Sitzung fest:

      • TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ
      • JDBC_TREAT_DECIMAL_AS_INT=FALSE
      • TIMESTAMP_INPUT_FORMAT=AUTO
      • AUTOCOMMIT=TRUE

      Sie können jeden dieser Parameter überschreiben, indem Sie im Feld Zusätzliche JDBC-Parameter einen alternativen Wert festlegen, z. B. &AUTOCOMMIT=FALSE

Klicken Sie auf Testen, um zu prüfen, ob die Verbindung erfolgreich hergestellt wurde. Informationen zur Fehlerbehebung finden Sie auf der Dokumentationsseite Datenbankverbindung testen.

Klicken Sie auf Verbinden, um diese Einstellungen zu speichern.

Snowflake-Warehouses pro Gruppe oder Nutzer festlegen

Sie können Looker-Nutzerattribute verwenden, um einzelnen Looker-Nutzern oder -Gruppen separate Snowflake-Warenhäuser zuzuweisen. Dies ist beispielsweise nützlich, wenn Sie Nutzer haben, die unterschiedliche Rechenleistungen benötigen. Sie können ein Warehouse mit größeren Rechenressourcen nur den Nutzern zuweisen, die es benötigen, während Sie ein Warehouse mit weniger Ressourcen Nutzern mit geringerem Bedarf zuweisen.

So legen Sie Warenlager pro Gruppe oder Nutzer fest:

  1. Fügen Sie die Gruppen oder Nutzer in Looker hinzu.
  2. Definieren Sie in Looker ein Nutzerattribut, in dem die Snowflake-Warehouse-Namen gespeichert werden. Sie können diesem Attribut einen beliebigen Namen geben, z. B. snowflake_wh.

    Die Seite „Benutzerattribute“ in Looker mit dem Benutzerattribut des Snowflake-Warehouses.

  3. Weisen Sie die Werte für den Warehouse-Namen in dem Nutzerattribut, das Sie gerade definiert haben, den Gruppen oder den Nutzern zu.

    Die Seite „Benutzerattribute“ in Looker mit dem Benutzerattribut „Snowflake Warehouse“ mit Werten, die einer Gruppe zugewiesen sind.

  4. Fügen Sie auf der Seite Verbindungseinstellungen im Feld Zusätzliche JDBC-Parameter Folgendes hinzu. Ersetzen Sie dabei snowflake_warehouse durch den Namen des von Ihnen definierten Nutzerattributs:

      warehouse={{ _user_attributes['snowflake_warehouse'] }}
    

    Beispiel:

    Die Seite „Verbindungseinstellungen“ in Looker mit dem Feld „Zusätzliche JDBC-Parameter“ mit dem Warehouse-Benutzerattributparameter.

  5. Zum Testen der einzelnen Verbindungseinstellungen können Sie sudo als Nutzer verwenden, dem Sie einen Wert für den Warehouse-Namen zugewiesen haben.

Eine ausführlichere Anleitung zu diesem Eingriff finden Sie im Red Pill Analytics-Blog.

Die Funktion zur automatischen Sperrung von Snowflake

Snowflake-Warehouses haben eine Funktion zur automatischen Sperrung, die standardmäßig aktiviert ist. Nach einem bestimmten Zeitraum wird das Warehouse automatisch gesperrt. Wenn das Warehouse gesperrt wird, erzeugen alle Abfragen einen Fehler. Dieser Fehler ist in Dashboards nicht sichtbar (normalerweise werden keine Daten angezeigt), aber er ist bei Abfragen über die Explore-Seite sichtbar.

Snowflake verfügt auch über eine Funktion zur automatischen Wiederaufnahme, die das Warehouse bei der Abfrage wieder aktiviert. Das Fortsetzen des Warehouse kann jedoch bis zu fünf Minuten dauern, sodass Abfragen fünf Minuten lang nicht mehr reagieren, bevor sie zurückgegeben werden. Diese Funktionen können in Looker nicht konfiguriert werden. Aktivieren Sie diese Funktionen auf dem Tab Warehouses in der Snowflake-Benutzeroberfläche.

Der Tab „Warehouses“ in der Snowflake-Benutzeroberfläche mit den Kästchen „Auto fortsetzen“ und „Automatisch fortsetzen“

PDT-Unterstützung

Damit persistente abgeleitete Tabellen unterstützt werden, erstellen Sie ein Snowflake-Nutzerkonto für PDTs, das Schreibzugriff auf Ihre Datenbank und das temporäre Schema hat, das Looker zum Erstellen von PDTs verwendet. Aktivieren Sie auf der Looker-Seite Verbindungseinstellungen im Abschnitt Persistente abgeleitete Tabellen (PDTs) die Ein/Aus-Schaltfläche PDTs aktivieren. Geben Sie dann im Feld Temp database (Temporäre Datenbank) den Namen des temporären Schemas ein, das Looker zum Erstellen von PDTs verwendet. Geben Sie als Nächstes im Bereich PDT Overrides (PDT-Überschreibungen) den Nutzernamen und das Passwort des PDT-Nutzers ein. Weitere Informationen finden Sie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden.

PDTs werden für Snowflake-Verbindungen, die OAuth verwenden, nicht unterstützt.

Bei Snowflake-Verbindungen setzt Looker den Wert für den Parameter AUTOCOMMIT auf TRUE (der Standardwert von Snowflake). AUTOCOMMIT ist für SQL-Befehle erforderlich, die Looker zur Verwaltung des PDT-Registrierungssystems ausführt.

OAuth für Snowflake-Verbindungen konfigurieren

Looker unterstützt OAuth for Snowflake-Verbindungen. Das bedeutet, dass sich jeder Looker-Benutzer bei der Datenbank authentifiziert und Looker autorisiert, Abfragen in der Datenbank mit dem eigenen OAuth-Benutzerkonto des Benutzers auszuführen.

Mit OAuth können Datenbankadministratoren die folgenden Aufgaben ausführen:

  • Überwachen, welche Looker-Benutzer Abfragen mit der Datenbank ausführen
  • Rollenbasierte Zugriffssteuerung mithilfe von Berechtigungen auf Datenbankebene durchsetzen
  • OAuth-Tokens für alle Prozesse und Aktionen verwenden, die auf die Datenbank zugreifen, anstatt Datenbank-IDs und Passwörter an mehreren Stellen einzubetten
  • Autorisierung für einen bestimmten Nutzer direkt über die Datenbank widerrufen

Bei Snowflake-Verbindungen, die OAuth verwenden, müssen sich Nutzer regelmäßig neu anmelden, wenn ihre OAuth-Tokens ablaufen. Die Gültigkeitsdauer für Snowflake-OAuth-Tokens wird über Snowflake selbst festgelegt.

Beachten Sie Folgendes für OAuth-Verbindungen auf Datenbankebene:

  • Wenn ein Benutzer sein OAuth-Token ablaufen lässt, wirkt sich dies auf alle Looker-Zeitpläne oder ‐Benachrichtigungen aus, die ihm gehören. Um dies zu vermeiden, sendet Looker eine Benachrichtigungs-E-Mail an den Eigentümer jedes Zeitplans und jeder Benachrichtigung, bevor das aktuell aktive OAuth-Token abläuft. Looker sendet diese E-Mail-Benachrichtigungen 14 Tage, 7 Tage und 1 Tag vor Ablauf des Tokens. Der Benutzer kann seine Looker-Benutzerseite aufrufen, um Looker erneut für die Datenbank zu autorisieren und Unterbrechungen der Zeitpläne und Warnungen zu vermeiden. Weitere Informationen finden Sie auf der Dokumentationsseite Nutzerkontoeinstellungen personalisieren.
  • Da Datenbankverbindungen, die OAuth verwenden, nutzerbezogen sind, gelten die Caching-Richtlinien auch pro Nutzer und nicht nur pro Abfrage. Das bedeutet, dass Looker nicht bei jeder Ausführung derselben Abfrage innerhalb des Caching-Zeitraums im Cache gespeicherte Ergebnisse verwendet, sondern nur dann im Cache gespeicherte Ergebnisse, wenn innerhalb des Caching-Zeitraums derselbe Nutzer die gleiche Abfrage ausgeführt hat. Weitere Informationen zum Caching finden Sie auf der Dokumentationsseite Abfragen im Cache speichern.

  • Wenn Sie OAuth verwenden, können Sie im Snowflake-Nutzerkonto nicht zu anderen Rollen wechseln. Wie in der Snowflake-Dokumentation beschrieben, verwendet Snowflake die Standardrolle des Snowflake-Nutzerkontos, es sei denn, die Standardrolle ist ACCOUNTADMIN oder SECURITYADMIN. Da diese Rollen für OAuth blockiert sind, verwendet Snowflake stattdessen die Rolle ÖFFENTLICH. Weitere Informationen finden Sie in der Snowflake-Dokumentation.

  • Persistente abgeleitete Tabellen (PDTs) werden für Snowflake-Verbindungen mit OAuth nicht unterstützt.

  • Wenn ein Looker-Administrator im SUDO-Status als anderer Benutzer verwendet wird, verwendet der Administrator das OAuth-Zugriffstoken dieses Benutzers. Wenn das Zugriffstoken des Benutzers abgelaufen ist, kann der Administrator kein neues Token im Namen des Benutzers erstellen, für den er sich angemeldet hat. Informationen zur Verwendung des Befehls sudo finden Sie auf der Dokumentationsseite Nutzer.

Snowflake-Datenbank für OAuth mit Looker konfigurieren

Um eine Snowflake-Verbindung zu Looker mithilfe von OAuth zu erstellen, müssen Sie die OAuth-Integration in Snowflake einrichten. Dafür ist ein Snowflake-Nutzerkonto mit der Berechtigung ACCOUNTADMIN erforderlich.

  1. Führen Sie den folgenden Befehl in Snowflake aus, wobei <looker_hostname> der Hostname Ihrer Looker-Instanz ist:

      CREATE SECURITY INTEGRATION LOOKER
        TYPE = OAUTH
        ENABLED = TRUE
        OAUTH_CLIENT = LOOKER
        OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
    
  2. Rufen Sie mit dem folgenden Befehl die OAuth-Client-ID und das Secret ab:

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    Die Antwort enthält eine OAUTH_CLIENT_ID und eine OAUTH_CLIENT_SECRET, die Sie später in diesem Verfahren benötigen.

  3. Erstellen Sie in Looker eine neue Verbindung zu Ihrem Snowflake-Warehouse, wie im Abschnitt Looker-Verbindung zu Ihrer Datenbank erstellen auf dieser Seite beschrieben. Wählen Sie beim Erstellen der neuen Verbindung im Feld Authentifizierung die Option OAuth aus. Wenn Sie die Option OAuth auswählen, werden in Looker die Felder OAuth-Client-ID und OAuth-Clientschlüssel angezeigt.

  4. Fügen Sie die Werte OAUTH_CLIENT_ID und OAUTH_CLIENT_SECRET ein, die Sie zuvor in diesem Verfahren aus Ihrer Datenbank erhalten haben.

  5. Führen Sie die restlichen Schritte unter Looker mit Ihrer Datenbank verbinden aus.

Nachdem Sie die Looker-Verbindung zu Ihrer Datenbank konfiguriert haben, können Sie die Verbindung selbst testen, indem Sie einen der folgenden Schritte ausführen:

  • Wählen Sie unten auf der Seite Verbindungseinstellungen die Schaltfläche Testen aus, wie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden beschrieben.
  • Wählen Sie die Schaltfläche Testen aus, die neben dem Eintrag der Verbindung auf der Admin-Seite Verbindungen angezeigt wird, wie auf der Dokumentationsseite Verbindungen beschrieben.

Darüber hinaus können Sie die Verbindung testen und für ein Modell bereitstellen. Gehen Sie dazu so vor:

  1. Rufen Sie in Looker den Entwicklermodus auf.
  2. Gehen Sie zu den Projektdateien für ein Looker-Projekt, das Ihre Snowflake-Verbindung verwendet.
  3. Öffnen Sie eine Modelldatei und ersetzen Sie den connection-Wert des Modells durch den Namen der neuen Snowflake-Verbindung. Speichern Sie dann die Modelldatei.
  4. Öffnen Sie eines der Explores oder Dashboards des Modells und führen Sie eine Abfrage aus. Wenn Sie versuchen, eine Abfrage auszuführen, werden Sie von Looker aufgefordert, sich bei Snowflake anzumelden.
  5. Folgen Sie den Anmeldeaufforderungen für Snowflake und geben Sie Ihre Snowflake-Anmeldedaten ein.

Nachdem Sie sich erfolgreich bei Snowflake angemeldet haben, kehrt Looker zu Ihrer Abfrage zurück. Wenn die Abfrage korrekt ausgeführt wird, können Sie den neuen Verbindungswert per Commit übertragen und Ihre Änderungen in der Produktion bereitstellen.

In Snowflake anmelden, um Abfragen auszuführen

Sobald die Snowflake-Verbindung für OAuth eingerichtet ist, werden Nutzer aufgefordert, sich bei Snowflake anzumelden, bevor sie Abfragen ausführen. Dies schließt Abfragen aus Explores, Dashboards, Looks und SQL Runner ein.

Die Looker-Benutzeroberfläche mit der OAuth-Anmeldeaufforderung.

Nutzer können sich auch über den Abschnitt OAuth-Verbindungsanmeldedaten auf ihrer Kontoseite bei Snowflake anmelden.

Gehen Sie folgendermaßen vor, um sich mit Looker bei Ihrem Snowflake-Konto anzumelden:

Die Kontoseite in Looker mit dem Bereich „Anmeldedaten für die OAuth-Verbindung“.

  1. Klicken Sie auf das Looker-Benutzermenü.
  2. Wählen Sie Konto aus.
  3. Gehen Sie auf der Seite Account (Konto) zum Abschnitt OAuth Connection Credentials (OAuth-Anmeldedaten für die Verbindung) und wählen Sie die Schaltfläche Log In (Anmelden) für die entsprechende Snowflake-Datenbank aus.

Wenn Sie Anmelden auswählen, wird ein Snowflake-Anmeldedialogfeld angezeigt. Geben Sie Ihre Snowflake-Anmeldedaten ein, wählen Sie Anmelden und dann Zulassen aus, um Looker Zugriff auf Ihr Snowflake-Konto zu gewähren.

Sobald Sie sich über Looker bei Snowflake angemeldet haben, können Sie sich jederzeit über Ihre Kontoseite abmelden oder Ihre Anmeldedaten erneut autorisieren, wie auf der Dokumentationsseite Nutzerkonto personalisieren beschrieben.

Unterstützte Funktionen

Damit Looker einige Funktionen unterstützen kann, müssen diese auch von Ihrem Datenbankdialekt unterstützt werden.

Snowflake unterstützt ab Looker 24.10 die folgenden Funktionen:

Feature Unterstützt?
Supportstufe
Unterstützt
Looker (Google Cloud Core)
Ja
Symmetrische Summen
Ja
Abgeleitete Tabellen
Ja
Persistente SQL-Abgeleitete Tabellen
Ja
Nichtflüchtige native abgeleitete Tabellen
Ja
Stabile Ansichten
Ja
Anfrage wird abgebrochen
Ja
SQL-basierte Drehpunkte
Ja
Zeitzonen
Ja
SSL
Ja
Zwischensummen
Ja
Zusätzliche JDBC-Parameter
Ja
Groß-/Kleinschreibung beachten
Ja
Standorttyp
Ja
Listentyp
Ja
Perzentil
Ja
Unterschiedliches Perzentil
Nein
SQL Runner – Prozesse anzeigen
Nein
SQL Runner – Tabelle beschreiben
Ja
SQL Runner – Indexe anzeigen
Nein
SQL Runner – Select 10
Ja
Anzahl der SQL-Runner
Ja
SQL Explain
Ja
OAuth-Anmeldedaten
Ja
Kontextkommentare
Ja
Verbindungs-Pooling
Ja
HLL-Skizzen
Ja
Aggregatfunktion
Ja
Inkrementelle PDTs
Ja
Millisekunden
Ja
Mikrosekunden
Ja
Materialisierte Ansicht
Nein
Ungefähre Anzahl einzelner
Nein

Weitere Informationen

Nachdem Sie die Datenbank mit Looker verbunden haben, konfigurieren Sie die Anmeldeoptionen für Ihre Nutzer.