Snowflake

So verbinden Sie Looker mit Snowflake:

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

Looker-Nutzer auf Snowflake erstellen

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

Fügen Sie optional das Keyword ON FUTURE hinzu, um GRANT-Anweisungen für neu erstellte Objekte beizubehalten. Wir empfehlen, dies für Tabellen in allen Schemas auszuführen, die Looker verwendet. Sie müssen daher GRANT-Anweisungen nicht noch einmal ausführen, 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 obigen Befehle als Batch in das Snowflake-Verbindungsfeld einfügen, klicken Sie auf das Kästchen Alle Abfragen, um sicherzustellen, dass alle Zeilen ausgeführt werden. Standardmäßig führt Snowflake nur ausgewählte Zeilen aus:

Die Verbindung hinzufügen

Konfigurieren Sie die Datenbankverbindung über die Looker-Oberfläche: Wählen Sie im Abschnitt Admin von Looker die Option Verbindungen aus und klicken Sie dann auf Verbindung hinzufügen. Weitere Informationen finden Sie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden.

Geben Sie die Verbindungsinformationen in die erforderlichen Felder ein:

  • Name: Geben Sie der Verbindung einen Namen. So verweist das LookML-Modell auf die Verbindung.
  • Dialekt: Wählen Sie Schneeflocke aus.
  • Host: Geben Sie den Snowflake-Hostnamen ein. Es sieht so aus: <account_name>.snowflakecomputing.com. Prüfen Sie die Beispiele für Schneekonto-Daten nach Region, 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. Die Groß- und Kleinschreibung spielt dabei keine Rolle.
  • Nutzername und Passwort: Geben Sie den Nutzernamen und das Passwort des Nutzers ein, der eine Verbindung zu Looker herstellt.
  • Schema: Geben Sie das Standardschema ein.
  • Persistent abgeleitete Tabellen: Klicken Sie dieses Kästchen an, um persistente abgeleitete Tabellen (PDTs) zu aktivieren. Dadurch werden zusätzliche PDT-Felder und die Spalte PDT-Überschreibungen eingeblendet.
  • Temp Database (Temporäre Datenbank): Wenn PDTs aktiviert sind, legen Sie dieses Feld auf ein Schema fest, bei dem der Nutzer volle Berechtigungen zum Erstellen, Löschen, Umbenennen und Ändern von Tabellen hat.
  • Max. Verbindungen: Dies ist die optionale Größe des Verbindungspools. Sie können den Standardwert verwenden oder auf der Dokumentationsseite Verbindung mit Looker zur Datenbank herstellen im Abschnitt Max. Verbindungen nachlesen.
  • Kostenschätzung: Ermöglicht Kostenschätzungen für Abfragen zum Erkunden, Kostenschätzungen für SQL Runner-Abfragen und Schätzungen zur Einsparungen bei der Berechnung der Bekanntheit für zusammengefasste Abfragen für die Verbindung.
  • Datenbank-Zeitzone: Die Zeitzone, die in Ihrer Snowflake-Datenbank zum Speichern von Datum und Uhrzeit verwendet wird. Der Standardwert ist UTC. Dies ist optional.
  • Abfragezeitzone: Die Zeitzone, in der Ihre Abfragen angezeigt werden sollen. Beispiel: US Eastern (America – New York). Dies ist optional.
  • Zusätzliche Parameter: Fügen Sie über den JDBC-Treiber für Schneeflocke weitere JDBC-Parameter hinzu.

    • Fügen Sie warehouse=<YOUR WAREHOUSE NAME> hinzu.
    • Außerdem werden von Looker standardmäßig die folgenden Schneeflockenparameter für jede Sitzung festgelegt:

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

      Sie können beide überschreiben, indem Sie im Feld Zusätzliche Parameter einen anderen Wert festlegen. Beispiel: &AUTOCOMMIT=FALSE

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

Klicken Sie auf Verbindung hinzufügen, um die Verbindung zu speichern.

Snowflake-Warehouses pro Gruppe oder pro Nutzer festlegen

Mit den User-Attributen von Looker können Sie einzelnen Looker-Nutzern oder -Gruppen separate Snowflake-Warehouses zuweisen. Das ist beispielsweise nützlich, wenn Sie Nutzer haben, die unterschiedliche Rechenleistung benötigen. Sie können ein Warehouse mit größeren Rechenressourcen nur den Nutzern zuweisen, die es benötigen, und ein Warehouse mit weniger Ressourcen für Nutzer mit weniger Bedarf bereitstellen.

So legen Sie Warenlager auf Gruppen- oder Nutzerbasis fest:

  1. Fügen Sie die Gruppen oder Nutzer in Looker hinzu.
  2. Definieren Sie ein Nutzerattribut zum Speichern der Namen des Snowflake-Lagers:

  3. Weisen Sie im soeben definierten Nutzerattribut den Gruppen oder Nutzern die Werte für den Lagernamen zu:

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

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

Beispiel:

  1. Um die einzelnen Verbindungseinstellungen zu testen, können Sie sudo als Nutzer, dem Sie einen Warehouse-Namenswert zugewiesen haben.

Eine ausführliche Anleitung dazu finden Sie im Blog zu Red Pill Analytics.

Funktion „Autosuspend“ von Snowflake

In Snowflake-Lagern ist eine automatische Sperrungsfunktion aktiviert, die standardmäßig aktiviert ist. Nach Ablauf eines bestimmten Zeitraums wird das Lager automatisch wieder eingesetzt. Wenn das Lager gesperrt ist, geben alle Abfragen einen Fehler zurück. Dieser Fehler ist nicht über Dashboards sichtbar (es werden normalerweise keine Daten angezeigt), aber er wird angezeigt, wenn Sie eine Abfrage mit der Seite „Erkunden“ durchführen.

Snowflake hat auch eine Funktion zur automatischen Fortsetzung des Ladevorgangs. Das Fortsetzen des Lagers kann jedoch bis zu fünf Minuten dauern, sodass Abfragen fünf Minuten lang hängen bleiben, bevor sie zurückgegeben werden. Diese Funktionen können auf dem Tab Warehouses konfiguriert werden:

PDT-Unterstützung

Erstellen Sie für die persistente abgeleitete Tabelle ein Snowflake-Nutzerkonto für PDTs, die Schreibzugriff auf Ihre Datenbank und das Standardschema haben. Klicken Sie auf der Looker-Seite Verbindungseinstellungen das Kästchen Abgeleitete abgeleitete Tabellen an. Geben Sie dann in der Spalte 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 Schneeflockenverbindungen, die OAuth verwenden, nicht unterstützt.

Bei Snowflake-Verbindungen setzt Looker den Wert für den Parameter AUTOCOMMIT auf TRUE (Standardwert von Snowflake). AUTOCOMMIT ist für SQL-Befehle erforderlich, die Looker ausführt, um sein PDT-Registrierungssystem aufrechtzuerhalten.

OAuth für Snowflake-Verbindungen konfigurieren

Looker unterstützt OAuth für Snowflake-Verbindungen. Das bedeutet, dass sich jeder Looker-Nutzer bei Snowflake anmeldet und autorisiert Looker, Abfragen in der Datenbank mit seinem eigenen Snowflake-Nutzerkonto auszuführen.

Über OAuth können Datenbankadministratoren folgende Aufgaben ausführen:

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

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

Beachten Sie Folgendes für Snowflake mit OAuth:

  • Wenn ein Nutzer sein Snowflake-Token abläuft, sind alle Zeitpläne oder Benachrichtigungen, die ihm gehören, betroffen. Aus diesem Grund sendet Looker vor dem Ablauf des aktuell aktiven OAuth-Tokens von Snowflake eine Benachrichtigungs-E-Mail an den Inhaber jedes Zeitplans und jede Benachrichtigung. Looker sendet diese E-Mail-Benachrichtigungen 14 Tage, 7 Tage und 1 Tag vor Ablauf des Tokens. Der Nutzer kann seine Looker-Nutzerseite aufrufen, um Looker wieder für die Datenbank zu autorisieren und Unterbrechungen seiner Zeitpläne und Benachrichtigungen zu vermeiden. Weitere Informationen finden Sie auf der Dokumentationsseite Nutzerkonten personalisieren.
  • Da Snowflake-Verbindungen, die OAuth verwenden, pro Nutzer gelten, gelten die Caching-Richtlinien auch pro Nutzer und nicht nur pro Abfrage. Anstatt im Cache gespeicherte Ergebnisse bei derselben Abfrage innerhalb des Caching-Zeitraums zu verwenden, verwendet Looker die im Cache gespeicherten Ergebnisse nur, wenn derselbe Nutzer innerhalb des Caching-Zeitraums dieselbe Abfrage ausgeführt hat. Weitere Informationen zum Caching finden Sie auf der Dokumentationsseite Caching von Abfragen und Neuerstellung von PDTs mit Datengruppen.
  • Wenn Sie OAuth verwenden, können Sie nicht zu verschiedenen Rollen im Snowflake-Nutzerkonto wechseln. Wie in der Schneeflocken-Dokumentation beschrieben, verwendet Snowflake die Standardrolle des Kontos von Snowflake, es sei denn, die Standardrolle ist ACCOUNTADMIN oder SECURITYADMIN. Da diese Rollen für OAuth blockiert sind, verwendet Snowflake stattdessen die Rolle PUBLIC. Weitere Informationen finden Sie in der Schneeflocken-Dokumentation.
  • Persistent abgeleitete Tabellen (PDTs) werden für Snowflake-Verbindungen mit OAuth nicht unterstützt.
  • Administratoren, die das Sudo-Objekt eines anderen Nutzers verwenden, verwenden das OAuth-Zugriffstoken dieses Nutzers. Wenn das Zugriffstoken des Nutzers abgelaufen ist, kann der Administrator kein neues Token im Namen des sudo-Nutzers erstellen. Der Nutzer muss sich bei Snowflake anmelden und Looker neu autorisieren. 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 mit 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:
  CREATE SECURITY INTEGRATION LOOKER
    TYPE = OAUTH
    ENABLED = TRUE
    OAUTH_CLIENT = LOOKER
    OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';

Dabei ist <looker_hostname> der Hostname Ihrer Looker-Instanz.

  1. Rufen Sie die OAuth-Client-ID und das Secret mit dem folgenden Befehl 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.

  1. Erstellen Sie in Looker eine neue Verbindung zum Snowflake-Warehouse, wie auf der Dokumentationsseite Looker mit der Datenbank verbinden beschrieben. Klicken Sie beim Erstellen der neuen Verbindung auf das Kästchen OAuth verwenden. Wenn Sie OAuth verwenden auswählen, sehen Sie die Felder OAuth-Client-ID und OAuth-Clientschlüssel:

  2. Fügen Sie die Werte für OAUTH_CLIENT_ID und OAUTH_CLIENT_SECRET aus Schritt 2 ein.

  3. Führen Sie die restlichen Schritte unter Looker mit der Datenbank verbinden aus.

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

  • Klicken Sie unten auf der Seite Verbindungseinstellungen auf die Schaltfläche Diese Einstellungen testen, wie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden beschrieben.
  • Klicken Sie auf der Verwaltungsseite Verbindungen neben der Verbindung auf der Seite Verbindungen auf die Schaltfläche Test, wie auf der Dokumentationsseite Verbindungen beschrieben.

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

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

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

Bei Abfragen in Snowflake anmelden

Sobald die Snowflake-Verbindung für OAuth eingerichtet ist, werden die Nutzer aufgefordert, sich bei Snowflake anzumelden, bevor sie Abfragen ausführen können. Dazu gehören Abfragen aus „Entdecken“, „Dashboards“, „Looks“ und „SQL Runner“. Hier ein Beispiel mit „Entdecken“, das eine Snowflake-Verbindung verwendet, für die sich der Nutzer anmelden muss:

Nutzer können sich auch auf der Seite Konto im Abschnitt OAuth-Verbindungsdaten in Snowflake anmelden.

So melden Sie sich über Looker in Ihrem Snowflake-Konto an:

  1. Wählen Sie im Nutzermenü die Option Konto aus.
  2. Scrollen Sie nach unten zum Abschnitt OAuth-Verbindungsanmeldedaten und klicken Sie auf die Schaltfläche Anmelden für die gewünschte Snowflake-Datenbank.
  3. Geben Sie Ihre Anmeldedaten für Snowflake über Snowflake ein und klicken Sie auf Log In (Anmelden).
  4. Klicken Sie auf Zulassen, um Looker Zugriff auf Ihr Snowflake-Konto zu gewähren.

Nachdem Sie sich über Looker in Snowflake angemeldet haben, können Sie sich jederzeit auf der Seite Account (Konto) 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.

In der neuesten Version von Looker unterstützt Snowflake die folgenden Looker-Funktionen:

Nächste Schritte

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