Snowflake

Per collegare Looker a Snowflake:

  1. Crea un utente Looker su Snowflake e esegui il provisioning dell'accesso.
  2. Configura una connessione al database in Looker.

Crittografia del traffico di rete

È buona prassi criptare il traffico di rete tra l'applicazione Looker e il database. Valuta la possibilità di utilizzare una delle opzioni descritte nella pagina della documentazione Abilitare l'accesso sicuro ai database.

Creazione di un utente Looker su Snowflake

Ti consigliamo i seguenti comandi per creare l'utente Looker. Assicurati di eseguire ogni riga singolarmente.

Se vuoi, aggiungi la parola chiave ON FUTURE per mantenere le istruzioni GRANT negli oggetti appena creati. Ti consigliamo di eseguire questa operazione per le tabelle in tutti gli schemi che verranno utilizzati da Looker in modo da non dover eseguire nuovamente gli statement GRANT quando vengono create nuove tabelle.

-- 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;

Se incolli i comandi precedenti come batch nel riquadro di connessione Snowflake, seleziona la casella di controllo Tutte le query per assicurarti che tutte le righe vengano eseguite. Per impostazione predefinita, Snowflake esegue solo le righe selezionate.

La console Snowflake con la casella di controllo Tutte le query selezionata.

Creazione della connessione di Looker al database

Nella sezione Amministrazione di Looker, seleziona Connessioni e poi fai clic su Aggiungi connessione.

Compila i dettagli della connessione. La maggior parte delle impostazioni è comune alla maggior parte dei dialetti di database. Per informazioni, consulta la pagina della documentazione Connessione di Looker al tuo database. Di seguito sono descritte alcune impostazioni:

  • Nome: assegna un nome alla connessione. In questo modo il modello LookML farà riferimento alla connessione.
  • Dialetto: seleziona Snowflake.
  • Host: inserisci il nome host di Snowflake. L'aspetto sarà simile a <account_name>.snowflakecomputing.com. Consulta gli esempi di nomi di account Snowflake per regione per assicurarti di utilizzare il valore corretto per il tuo deployment.
  • Porta: il valore predefinito è 443.
  • Database: inserisci il database predefinito da utilizzare. Questo campo distingue tra lettere maiuscole e minuscole.
  • Schema: inserisci lo schema predefinito.
  • Autenticazione: seleziona Account database o OAuth:
    • Utilizza Account database per specificare il nome utente e la password dell'account utente Snowflake che verrà utilizzato per connettersi a Looker.
    • Utilizza OAuth se vuoi configurare OAuth per la connessione.
  • Abilita PDT: utilizza questo pulsante di attivazione/disattivazione per attivare le tabelle derivate permanenti (PDT). L'attivazione delle PDT mostra ulteriori campi PDT e la sezione Override PDT per la connessione.

  • Database temporaneo: se le PDT sono attivate, imposta questo campo su uno schema in cui l'utente dispone dei privilegi completi per creare, eliminare, rinominare e modificare le tabelle.

  • Connessioni massime per nodo: inizialmente, questa impostazione può essere lasciata sul valore predefinito. Scopri di più su questa impostazione nella sezione Numero massimo di connessioni per nodo della pagina della documentazione Connessione di Looker al database.

  • Stima dei costi: consente di eseguire stime dei costi per le query di esplorazione, stime dei costi per le query di SQL Runner e stime dei risparmi computazionali per le query di consapevolezza aggregate sulla connessione.

  • Fuso orario del database: il fuso orario utilizzato dal database Snowflake per archiviare date e ore. Il valore predefinito è UTC. Questa opzione è facoltativa.

  • Fuso orario query: il fuso orario in cui vuoi che vengano visualizzate le query. Ad esempio, Fuso orario orientale degli Stati Uniti (America - New York). Questa opzione è facoltativa.

  • Parametri JDBC aggiuntivi: aggiungi parametri JDBC aggiuntivi dal driver JDBC di Snowflake.

    • Aggiungi warehouse=<YOUR WAREHOUSE NAME>.
    • Inoltre, per impostazione predefinita, Looker imposta i seguenti parametri Snowflake in ogni sessione:

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

      Puoi ignorare ciascuno di questi parametri impostando un valore alternativo nel campo Parametri JDBC aggiuntivi, ad esempio: &AUTOCOMMIT=FALSE

Per verificare che la connessione sia andata a buon fine, fai clic su Test. Per informazioni sulla risoluzione dei problemi, consulta la pagina della documentazione Testare la connettività del database.

Per salvare queste impostazioni, fai clic su Connetti.

Designare i magazzini Snowflake in base a gruppi o utenti

Puoi utilizzare gli attributi utente di Looker per assegnare data warehouse Snowflake distinti a singoli utenti o gruppi di utenti di Looker. Questa opzione è utile, ad esempio, se hai utenti che richiedono diversi livelli di potenza di calcolo. Puoi assegnare un magazzino con risorse di calcolo maggiori solo agli utenti che ne hanno bisogno, mentre assegnare un magazzino con risorse inferiori agli utenti con esigenze minori.

Per designare i magazzini in base a gruppo o utente:

  1. Aggiungi i gruppi o gli utenti in Looker.
  2. Definisci un attributo utente in Looker in cui verranno archiviati i nomi dei magazzini Snowflake. Puoi assegnare a questo attributo un nome qualsiasi, ad esempio snowflake_wh.

    La pagina Attributi utente in Looker, che mostra l&#39;attributo utente del magazzino Snowflake.

  3. Nell'attributo utente appena definito, assegna i valori dei nomi dei magazzini a groups o users.

    La pagina Attributi utente in Looker, che mostra l&#39;attributo utente del magazzino Snowflake con i valori assegnati a un gruppo.

  4. Nel campo Parametri JDBC aggiuntivi della pagina Impostazioni connessione, aggiungi quanto segue, sostituendo snowflake_warehouse con il nome dell'attributo utente che hai definito:

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

    Ad esempio:

    La pagina Impostazioni connessione in Looker, che mostra il campo Parametri JDBC aggiuntivi con il parametro dell&#39;attributo utente del magazzino.

  5. Per testare le singole impostazioni di connessione, puoi eseguire sudo come utente a cui hai assegnato un valore del nome del magazzino.

Puoi trovare istruzioni più dettagliate per questa procedura sul blog di Red Pill Analytics.

La funzionalità di sospensione automatica di Snowflake

I magazzini Snowflake dispongono di una funzionalità di sospensione automatica abilitata per impostazione predefinita. Dopo un periodo specificato, il magazzino verrà sospeso automaticamente. Se il magazzino è sospeso, tutte le query generano un errore. Questo errore non è visibile nelle dashboard (di solito non vengono visualizzati dati), ma è visibile quando esegui una query con la pagina Esplora.

Snowflake dispone anche di una funzionalità di ripresa automatica che riprende il magazzino quando viene eseguita una query. Tuttavia, la ripresa del magazzino può richiedere fino a cinque minuti, causando l'interruzione della risposta delle query per cinque minuti prima del ritorno. Queste funzionalità non possono essere configurate in Looker. Attiva queste funzionalità nella scheda Magazzini dell'interfaccia utente di Snowflake.

La scheda Magazzini nell&#39;interfaccia utente di Snowflake, che mostra le caselle di controllo Sospendi automaticamente e Riprendi automaticamente

Supporto PDT

Per il supporto delle tabelle derivate permanenti, crea un account utente Snowflake per le PDT con accesso in scrittura al database e allo schema temporaneo che Looker utilizzerà per creare le PDT. Nella pagina Impostazioni delle connessioni di Looker, nella sezione Tabelle derivate permanenti (PDT), attiva l'opzione di attivazione/disattivazione Abilita PDT. Poi, nel campo Database temporaneo, inserisci il nome dello schema temporaneo che verrà utilizzato da Looker per creare le tabelle PDT. Poi, nella sezione PDT Overrides (Sostituzioni PDT), inserisci il nome utente e la password dell'utente PDT. Per ulteriori informazioni, consulta la pagina della documentazione Connessione di Looker al tuo database.

Le PDT non sono supportate per le connessioni Snowflake che utilizzano OAuth.

Per le connessioni Snowflake, Looker imposta il valore del parametro AUTOCOMMIT su TRUE (valore predefinito di Snowflake). AUTOCOMMIT è obbligatorio per i comandi SQL eseguiti da Looker per gestire il proprio sistema di registrazione delle PDT.

Configurazione di OAuth per le connessioni a Snowflake

Looker supporta OAuth per le connessioni a Snowflake, il che significa che ogni utente di Looker si autentica nel database e autorizza Looker a eseguire query sul database con il proprio account utente OAuth.

OAuth consente agli amministratori del database di eseguire le seguenti attività:

  • Controlla quali utenti di Looker eseguono query sul database
  • Applicare controlli dell'accesso basati sui ruoli utilizzando le autorizzazioni a livello di database
  • Utilizza i token OAuth per tutte le procedure e le azioni che accedono al database, anziché incorporare ID e password del database in più posizioni
  • Revocare l'autorizzazione per un determinato utente direttamente tramite il database

Con le connessioni Snowflake che utilizzano OAuth, gli utenti devono accedere di nuovo periodicamente quando i token OAuth scadono. La durata di validità dei token OAuth di Snowflake viene impostata tramite Snowflake stesso.

Tieni presente quanto segue per le connessioni OAuth a livello di database:

  • Se un utente lascia che il token OAuth scada, tutte le pianificazioni o gli avvisi di Looker di sua proprietà saranno interessati. Per evitare questo problema, Looker invierà un'email di notifica al proprietario di ogni pianificazione e di ogni avviso prima della scadenza dell'attuale token OAuth attivo. Looker invierà queste email di notifica 14 giorni, 7 giorni e 1 giorno prima della scadenza del token. L'utente può accedere alla propria pagina utente di Looker per autorizzare nuovamente Looker al database ed evitare interruzioni delle pianificazioni e degli avvisi. Per maggiori dettagli, consulta la pagina della documentazione Personalizzare le impostazioni dell'account utente.
  • Poiché le connessioni al database che utilizzano OAuth sono "per utente", anche i criteri di memorizzazione nella cache sono per utente e non solo per query. Ciò significa che, anziché utilizzare i risultati memorizzati nella cache ogni volta che viene eseguita la stessa query entro il periodo di memorizzazione nella cache, Looker li utilizzerà solo se lo stesso utente ha eseguito la stessa query entro il periodo di memorizzazione nella cache. Per ulteriori informazioni sulla memorizzazione nella cache, consulta la pagina di documentazione Caching queries (Query di memorizzazione nella cache).

  • Quando utilizzi OAuth, non puoi passare a ruoli diversi nell'account utente Snowflake. Come descritto nella documentazione di Snowflake, Snowflake utilizza il ruolo predefinito dell'account dell'utente Snowflake, a meno che il ruolo predefinito non sia ACCOUNTADMIN o SECURITYADMIN. Poiché questi ruoli sono bloccati per OAuth, Snowflake utilizzerà il ruolo PUBLIC. Per informazioni, consulta la documentazione di Snowflake.

  • Le tabelle derivate permanenti (PDT) non sono supportate per le connessioni a Snowflake con OAuth.

  • Quando un amministratore di Looker esegue sudo come un altro utente, utilizza il token di accesso OAuth dell'utente. Se il token di accesso dell'utente è scaduto, l'amministratore non può creare un nuovo token per conto dell'utente con accesso sudo. Per informazioni sull'utilizzo del comando sudo, consulta la pagina della documentazione relativa agli utenti.

Configurazione di un database Snowflake per OAuth con Looker

Per creare una connessione Snowflake a Looker utilizzando OAuth, devi configurare l'integrazione OAuth in Snowflake. È necessario un account utente Snowflake con autorizzazione ACCOUNTADMIN.

  1. Esegui il seguente comando in Snowflake, dove <looker_hostname> è il nome host dell'istanza di Looker:

      CREATE SECURITY INTEGRATION LOOKER
        TYPE = OAUTH
        ENABLED = TRUE
        OAUTH_CLIENT = LOOKER
        OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
    
  2. Recupero dell'ID client e del secret OAuth eseguendo il seguente comando:

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    La risposta conterrà OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET che ti serviranno in un secondo momento in questa procedura.

  3. In Looker, crea una nuova connessione al tuo magazzino Snowflake, come descritto nella sezione Creare la connessione di Looker al database di questa pagina. Quando crei la nuova connessione, seleziona l'opzione OAuth nel campo Autenticazione. Quando selezioni l'opzione OAuth, Looker mostra i campi ID client OAuth e Client secret OAuth.

  4. Incolla i valori OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET ottenuti dal database in precedenza in questa procedura.

  5. Completa il resto della procedura per la connessione di Looker al tuo database.

Dopo aver configurato la connessione di Looker al database, puoi testare la connessione stessa effettuando una delle seguenti operazioni:

  • Seleziona il pulsante Test nella parte inferiore della pagina Impostazioni connessioni, come descritto nella pagina della documentazione Connessione di Looker al database.
  • Seleziona il pulsante Test accanto alla voce della connessione nella pagina di amministrazione Connessioni, come descritto nella pagina della documentazione Connessioni.

Inoltre, puoi testare la connessione ed eseguirne il deployment in un modello seguendo questi passaggi:

  1. In Looker, vai alla modalità di sviluppo.
  2. Vai ai file del progetto per un progetto Looker che utilizza la connessione Snowflake.
  3. Apri un file modello e sostituisci il valore connection del modello con il nome della nuova connessione Snowflake, quindi salva il file modello.
  4. Apri una delle esplorazioni o delle dashboard del modello ed esegui una query. Quando provi a eseguire una query, Looker ti chiederà di accedere a Snowflake.
  5. Segui le istruzioni per accedere a Snowflake e inserisci le tue credenziali Snowflake.

Dopo aver eseguito l'accesso a Snowflake, Looker ti reindirizzerà alla query. Se la query viene eseguita correttamente, puoi committare il nuovo valore della connessione e implementare le modifiche in produzione.

Accedere a Snowflake per eseguire query

Una volta configurata la connessione Snowflake per OAuth, agli utenti verrà chiesto di accedere a Snowflake prima di eseguire query. Sono incluse le query provenienti da esplorazioni, dashboard, Look e SQL Runner.

L&#39;interfaccia utente di Looker, che mostra la richiesta di accesso OAuth.

Gli utenti possono anche accedere a Snowflake dalla sezione Credenziali di connessione OAuth nella pagina Account.

Per accedere al tuo account Snowflake utilizzando Looker, segui questi passaggi:

La pagina Account in Looker, che mostra la sezione Credenziali di connessione OAuth.

  1. Fai clic sul menu dell'utente di Looker.
  2. Seleziona Account.
  3. Nella pagina Account, vai alla sezione Credenziali di connessione OAuth e seleziona il pulsante Accedi per il database Snowflake appropriato.

Se selezioni Accedi, viene visualizzata una finestra di dialogo di accesso a Snowflake. Inserisci le tue credenziali Snowflake, seleziona Accedi e poi Consenti per concedere a Looker l'accesso al tuo account Snowflake.

Dopo aver eseguito l'accesso a Snowflake tramite Looker, puoi uscire o autorizzare nuovamente le tue credenziali in qualsiasi momento tramite la pagina Account, come descritto nella pagina della documentazione Personalizzare l'account utente.

Funzionalità supportate

Affinché Looker supporti alcune funzionalità, anche il dialetto del database deve supportarle.

Snowflake supporta le seguenti funzionalità a partire da Looker 24.20:

Funzionalità Supportato?
Livello di assistenza
Supportato
Looker (Google Cloud core)
Aggregati simmetrici
Tabelle derivate
Tabelle derivate SQL permanenti
Tabelle derivate native permanenti
Visualizzazioni stabili
Interruzioni delle query
Pivot basati su SQL
Fusi orari
SSL
Subtotali
Parametri aggiuntivi JDBC
Sensibilità alle maiuscole
Tipo di località
Tipo di elenco
Percentile
Percentile distinto
No
Processi di visualizzazione di SQL Runner
No
Tabella Describe di SQL Runner
Indici di SQL Runner Show
No
SQL Runner Select 10
Conteggio di SQL Runner
SQL Explain
Credenziali OAuth
Commenti contestuali
Pool di connessioni
Schizzi HLL
Aggregate Awareness
PDT incrementali
Millisecondi
Microsecondi
Viste materializzate
No
Conteggio approssimativo valori distinti
No

Passaggi successivi

Dopo aver collegato il database a Looker, configura le opzioni di accesso per gli utenti.