Snowflake

So stellen Sie eine Verbindung zwischen Looker und Snowflake her:

  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 wird empfohlen, den Netzwerkverkehr zwischen der Looker-Anwendung und Ihrer Datenbank zu verschlüsseln. Prüfen Sie eine der Optionen, die auf der Dokumentationsseite Sicheren Datenbankzugriff ermöglichen beschrieben werden.

Looker-Nutzer in Snowflake erstellen

Wir empfehlen die folgenden Befehle zum Erstellen des Looker-Benutzers. Führen Sie jede Zeile einzeln aus.

Optional können Sie das Keyword ON FUTURE hinzufügen, um GRANT-Anweisungen für neu erstellte Objekte zu speichern. Wir empfehlen, diesen Befehl für Tabellen in allen Schemas auszuführen, die in Looker verwendet werden, damit Sie GRANT-Anweisungen nicht noch einmal ausführen müssen, wenn neue Tabellen erstellt werden.

-- 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 werden in Snowflake nur die ausgewählten Zeilen ausgeführt.

Die Snowflake-Konsole mit dem angeklickten 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 einen Namen für die Verbindung ein. 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 sicherzustellen, 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.
  • Authentifizierung: Wählen Sie Datenbankkonto oder OAuth aus:
    • Geben Sie unter Datenbankkonto den Nutzernamen und das Passwort des Snowflake-Nutzerkontos an, das für die Verbindung mit Looker verwendet werden soll.
    • 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 in diesem Feld ein Schema fest, in dem der Nutzer vollständige Berechtigungen zum Erstellen, Löschen, Umbenennen und Ändern von Tabellen hat.

  • Maximale Anzahl von 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: Hiermit werden Kostenschätzungen für Explore-Abfragen, Kostenschätzungen für SQL Runner-Abfragen und Kosteneinsparungen für Abfragen zur Aggregation von Daten für die Verbindung aktiviert.

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

  • Zeitzone der Abfrage: 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 Datenbankkonnektivität testen.

Klicken Sie auf Verbinden, um diese Einstellungen zu speichern.

Snowflake-Warehouses pro Gruppe oder Nutzer zuweisen

Mithilfe von Looker-Nutzerattributen können Sie einzelnen Looker-Nutzern oder -Gruppen separate Snowflake-Warehouses zuweisen. Dies ist beispielsweise nützlich, wenn Sie Nutzer haben, die unterschiedliche Rechenleistungen benötigen. Sie können ein Data Warehouse mit mehr Rechenressourcen nur den Nutzern zuweisen, die es benötigen, und Nutzern mit geringeren Anforderungen ein Data Warehouse mit weniger Ressourcen.

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 „Nutzerattribute“ in Looker mit dem Nutzerattribut des Snowflake-Lagers

  3. Weisen Sie im gerade definierten Nutzerattribut den Gruppen oder Nutzern die Werte für den Namen des Lagers zu.

    Die Seite „Nutzerattribute“ in Looker mit dem Nutzerattribut des Snowflake-Lagers 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“ und dem Parameter für das Attribut „Lagernutzer“.

  5. Um die Verbindungseinstellungen zu testen, können Sie sudo als Nutzer verwenden, dem Sie einen Wert für den Warehouse-Namen zugewiesen haben.

Eine ausführlichere Anleitung zu diesem Verfahren findest du im Red Pill Analytics-Blog.

Die Funktion „Autosuspend“ von Snowflake

Snowflake-Repositories haben eine Funktion zur automatischen Sperrung, die standardmäßig aktiviert ist. Nach einem bestimmten Zeitraum wird das Lager automatisch ausgesetzt. Wenn das Warehouse deaktiviert ist, führen alle Abfragen zu einem 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 Wiederaufnehmen des Speichers kann jedoch bis zu fünf Minuten dauern. In dieser Zeit reagieren Abfragen nicht. 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 legt Looker den Wert für den Parameter AUTOCOMMIT auf TRUE fest (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 für Snowflake-Verbindungen. Das bedeutet, dass sich jeder Looker-Nutzer mit seinem eigenen OAuth-Nutzerkonto in der Datenbank authentifiziert und Looker dazu autorisiert, Abfragen in der Datenbank auszuführen.

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

  • Überwachen, welche Looker-Benutzer Abfragen mit der Datenbank ausführen
  • Rollenbasierte Zugriffssteuerung mit Berechtigungen auf Datenbankebene erzwingen
  • 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 von Snowflake-OAuth-Tokens wird in Snowflake selbst festgelegt.

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

  • Wenn ein Nutzer sein OAuth-Token verfallen lässt, sind alle Looker-Zeitpläne oder -Benachrichtigungen davon betroffen, deren Eigentümer er ist. Um dies zu verhindern, sendet Looker dem Inhaber jedes Zeitplans und jeder Benachrichtigung eine Benachrichtigungs-E-Mail, bevor das aktuelle aktive OAuth-Token abläuft. Looker sendet diese E-Mail-Benachrichtigungen 14 Tage, 7 Tage und 1 Tag vor Ablauf des Tokens. Der Nutzer kann auf seiner Looker-Benutzerseite Looker für die Datenbank neu autorisieren, um Unterbrechungen bei seinen Zeitplänen und Benachrichtigungen zu vermeiden. Weitere Informationen finden Sie auf der Dokumentationsseite Nutzerkonteneinstellungen personalisieren.
  • Da Datenbankverbindungen, die OAuth nutzen, nutzerspezifisch sind, Caching-Richtlinien gelten auch pro Nutzer und nicht nur pro Abfrage. Anstatt also bei jeder Ausführung derselben Abfrage innerhalb des Caching-Zeitraums im Cache gespeicherte Ergebnisse zu verwenden, verwendet Looker im Cache gespeicherte Ergebnisse nur dann, wenn derselbe Nutzer die gleiche Abfrage innerhalb des Caching-Zeitraums 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 Kontos des Snowflake-Nutzers, 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 sich als anderer Nutzer im SUDO-Modus bewegt, verwendet er das OAuth-Zugriffstoken dieses Nutzers. 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. Dazu ist ein Snowflake-Nutzerkonto mit der Berechtigung „ACCOUNTADMIN“ erforderlich.

  1. Führen Sie in Snowflake den folgenden Befehl 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 OAUTH_CLIENT_ID und 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 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 den Rest des Verfahrens 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 Connections Settings (Verbindungseinstellungen) die Schaltfläche Test (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 in einem Modell bereitstellen. Gehen Sie dazu so vor:

  1. Wechseln Sie in Looker in den Entwicklungsmodus.
  2. Rufen Sie die Projektdateien für ein Looker-Projekt auf, das Ihre Snowflake-Verbindung verwendet.
  3. Öffnen Sie eine Modelldatei und ersetzen Sie den Wert connection 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 der Anleitung zur Anmeldung in 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

Wenn die Snowflake-Verbindung für OAuth eingerichtet wurde, werden Nutzer aufgefordert, sich bei Snowflake anzumelden, bevor sie Abfragen ausführen. Dazu gehören Abfragen aus Explores, Dashboards, Looks und SQL Runner.

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

Nutzer können sich auch auf der Seite Konto im Bereich OAuth-Anmeldedaten für die Verbindung in 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-Nutzermenü.
  2. Wählen Sie Konto aus.
  3. Rufen Sie auf der Seite Konto den Abschnitt OAuth-Anmeldedaten für die Verbindung auf und klicken Sie für die entsprechende Snowflake-Datenbank auf die Schaltfläche Anmelden.

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

Nachdem Sie sich über Looker in Snowflake angemeldet haben, können Sie sich jederzeit über die Seite Konto abmelden oder Ihre Anmeldedaten neu autorisieren, wie auf der Dokumentationsseite Personalisierung Ihres Nutzerkontos beschrieben.

Funktionsunterstützung

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

Snowflake unterstützt ab Looker 24.16 die folgenden Funktionen:

Funktion 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
Abfrage beenden
Ja
SQL-basierte Pivots
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 Describe Table
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 Ansichten
Nein
Ungefähre Anzahl einzelner Aufrufe
Nein

Nächste Schritte

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