Snowflake

Per connettere Looker a Snowflake:

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

Crittografia del traffico di rete

Una delle best practice consiste nel criptare il traffico di rete tra l'applicazione Looker e il tuo database. Valuta una delle opzioni descritte nella pagina della documentazione Abilitazione dell'accesso sicuro al database.

Creazione di un utente Looker su Snowflake in corso...

Per creare l'utente Looker ti consigliamo di utilizzare i comandi seguenti. Assicurati di eseguire ogni riga singolarmente.

Se vuoi, aggiungi la parola chiave ON FUTURE per rendere persistenti le istruzioni GRANT sugli 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 le istruzioni 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 in gruppo i comandi precedenti nel riquadro della connessione Snowflake, seleziona la casella di controllo Tutte le query per assicurarti che vengano eseguite tutte le righe. Per impostazione predefinita, Snowflake esegue solo le linee selezionate.

Creazione della connessione Looker al tuo database

Nella sezione Admin (Amministrazione) di Looker, seleziona Connections (Connessioni) e fai clic su Add Connection (Aggiungi connessione).

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

  • Nome: assegna un nome alla connessione. Questo è il modo in cui il modello LookML farà riferimento alla connessione.
  • Dialect: seleziona Snowflake.
  • Host: inserisci il nome host Snowflake. 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 l'Account database per specificare il Nome utente e la Password dell'account utente Snowflake che verrà utilizzato per la connessione a Looker.
    • Utilizza OAuth per configurare OAuth per la connessione.
  • Abilita PDT: utilizza questo pulsante di attivazione/disattivazione per abilitare le tabelle derivate permanenti (PDT). L'abilitazione delle PDT rivela i campi PDT aggiuntivi e la sezione Override PDT per la connessione.
  • Database temporaneo: se le PDT sono abilitate, imposta questo campo su uno schema in cui l'utente disponga di tutti i privilegi per creare, rilasciare, rinominare e modificare le tabelle.
  • Numero massimo di connessioni per nodo: questa impostazione può essere lasciata inizialmente 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 tuo database.
  • Stima dei costi: attiva le stime dei costi per le query Esplora, le stime dei costi per le query SQL Runner e le stime del risparmio del calcolo per le query sulla consapevolezza aggregate sulla connessione.
  • Database Time Zone (Fuso orario database): il fuso orario utilizzato dal database Snowflake per archiviare date e orari. Il valore predefinito è UTC. Questa opzione è facoltativa.
  • Fuso orario query: il fuso orario in cui verranno visualizzate le query. Ad esempio Stati Uniti orientali (America - New York). Questa opzione è facoltativa.
  • Parametri JDBC aggiuntivi: aggiungi ulteriori parametri JDBC 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 sostituire ciascuno di questi parametri impostando un valore alternativo nel campo Parametri JDBC aggiuntivi, ad esempio: &AUTOCOMMIT=FALSE

Per verificare che la connessione venga stabilita, fai clic su Prova. Per informazioni sulla risoluzione dei problemi, consulta la pagina della documentazione relativa ai test di connettività dei database.

Per salvare queste impostazioni, fai clic su Connetti.

Specificare i warehouse Snowflake in base al gruppo o al singolo utente

Puoi utilizzare gli attributi utente di Looker per assegnare warehouse Snowflake separate a singoli utenti o gruppi di Looker. Questo è utile, ad esempio, se hai utenti che richiedono livelli di potenza di calcolo diversi. Puoi assegnare un warehouse con risorse di calcolo maggiori solo agli utenti che ne hanno bisogno, assegnando al contempo un warehouse con risorse minori agli utenti con minori esigenze.

Per designare i warehouse in base al gruppo o al singolo utente:

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

  3. Nell'attributo utente appena definito, assegna i valori del nome del warehouse ai gruppi o agli utenti.

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

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

    Ad esempio:

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

Puoi trovare istruzioni più dettagliate su questa procedura nel blog di Red Pill Analytics.

Funzionalità di sospensione automatica di Snowflake

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

Snowflake ha anche una funzionalità di ripristino automatico che ripristinerà il warehouse quando viene eseguita la query. Tuttavia, il ripristino del warehouse può richiedere fino a cinque minuti, causando un blocco delle query per cinque minuti prima di tornare. Impossibile configurare queste funzionalità in Looker. Attiva queste funzionalità nella scheda Magazzini nell'interfaccia utente di Snowflake.

Supporto PDT

Per il supporto delle tabelle derivate permanenti, crea un account utente Snowflake per le PDT con accesso in scrittura al database e lo 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 Abilita PDT. Quindi, nel campo Database temporaneo, inserisci il nome dello schema temporaneo che Looker utilizzerà per creare le PDT. Quindi, nella sezione Override PDT, inserisci il nome utente e la password dell'utente PDT. Per saperne di più, 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 (che è il valore predefinito di Snowflake). AUTOCOMMIT è obbligatorio per i comandi SQL eseguiti da Looker per mantenere il proprio sistema di registrazione PDT.

Configurazione di OAuth per le connessioni a Snowflake

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

OAuth consente agli amministratori dei database di:

  • Controlla quali utenti di Looker eseguono query sul database
  • Applica i controlli dell'accesso basati sui ruoli utilizzando le autorizzazioni Snowflake
  • Utilizza i token OAuth per tutti i processi e le azioni che accedono a Snowflake, anziché incorporare gli ID e le password Snowflake in più posizioni.
  • Revocare l'autorizzazione per un determinato utente tramite Snowflake

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

Tieni presente quanto segue per Snowflake con OAuth:

  • Se un utente lascia scadere il token Snowflake, questa operazione influirà su eventuali pianificazioni o avvisi di sua proprietà. Per evitare questo problema, Looker invia un'email di notifica al proprietario di ogni pianificazione e ogni avviso prima della scadenza dell'attuale token OAuth Snowflake attivo. Looker invierà queste email di notifica 14 giorni, 7 giorni e 1 giorno prima della scadenza del token. L'utente può andare alla 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 relativa alla personalizzazione delle impostazioni dell'account utente.
  • Poiché le connessioni Snowflake che utilizzano OAuth sono "per utente", i criteri di memorizzazione nella cache sono validi anche per utente e non solo per query. Ciò significa che, invece di utilizzare i risultati memorizzati nella cache ogni volta che la stessa query viene eseguita nel periodo di memorizzazione nella cache, Looker utilizzerà i risultati memorizzati nella cache solo se lo stesso utente ha eseguito la stessa query durante il periodo di memorizzazione nella cache. Per ulteriori informazioni sulla memorizzazione nella cache, consulta la pagina della documentazione relativa alla memorizzazione delle query nella cache.
  • Se 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à invece il ruolo PUBLIC. Per informazioni, consulta la documentazione di Snowflake.
  • Le tabelle derivate permanenti (PDT) non sono supportate per le connessioni Snowflake con OAuth.
  • Gli amministratori, quando eseguono il comando sudo come un altro utente, utilizzeranno il token di accesso OAuth di quell'utente. Se il token di accesso dell'utente è scaduto, l'amministratore non potrà creare un nuovo token per conto dell'utente sudo; l'utente dovrà accedere a Snowflake e autorizzare nuovamente Looker. 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 comando seguente in Snowflake, dove <looker_hostname> è il nome host della tua istanza Looker:

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

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    La risposta conterrà OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET che ti serviranno più avanti in questa procedura.

  3. In Looker, crea una nuova connessione al warehouse Snowflake, come descritto nella pagina della documentazione Connessione di Looker al tuo database. 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 che hai ottenuto dal database in precedenza di questa procedura.

  5. Completa il resto della procedura per connettere Looker al tuo database.

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

  • Seleziona il pulsante Test in fondo alla pagina Connections Settings (Impostazioni connessioni) come descritto nella pagina della documentazione relativa alla connessione di Looker al tuo database.
  • Seleziona il pulsante Test in base all'elenco della connessione nella pagina di amministrazione Connections (Connessioni), come descritto nella pagina della documentazione Connections (Connessioni).

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

  1. In Looker, vai a Modalità di sviluppo.
  2. Passa ai file di 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, poi salva il file del modello.
  4. Apri una delle esplorazioni o delle dashboard del modello ed esegui una query. Quando provi a eseguire una query, Looker ti chiede di accedere a Snowflake.
  5. Segui le istruzioni di accesso per Snowflake e inserisci le tue credenziali.

Una volta eseguito l'accesso a Snowflake, Looker ti riporterà alla query. Se la query viene eseguita correttamente, puoi eseguire il commit del nuovo valore della connessione ed eseguire il deployment delle modifiche in produzione.

Accesso a Snowflake per eseguire query

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

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

Per accedere al tuo account Snowflake utilizzando Looker:

  1. Fai clic sul menu utente di Looker.
  2. Seleziona Account.
  3. Nella pagina Account, scorri verso il basso fino alla sezione Credenziali di connessione OAuth e seleziona il pulsante Accedi relativo al database Snowflake che ti interessa.

Verrà visualizzata una finestra popup di accesso a Snowflake. Inserisci le tue credenziali Snowflake e seleziona Accedi, quindi seleziona Consenti per concedere a Looker l'accesso al tuo account Snowflake.

Una volta effettuato 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 Personalizzazione dell'account utente.

Supporto delle funzionalità

Affinché Looker possa supportare alcune funzionalità, è necessario che anche il dialetto del database le supporti.

A partire da Looker 24.8, Snowflake supporta le seguenti funzionalità:

Selezione delle Supportato?
Livello di assistenza
Supportato
Looker (Google Cloud core)
Aggregati simmetrici
Tabelle derivate
Tabelle derivate SQL permanenti
Tabelle derivate native permanenti
Visualizzazioni stabili
Eliminazione 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 SQL Runner
No
Descrivi tabella SQL Runner
Indici di visualizzazione SQL Runner
No
SQL Runner Select 10
Conteggio esecutori SQL
Spiegazione SQL
Credenziali OAuth
Commenti contestuali
Pooling di connessioni
Schizzi HLL
Awareness aggregato
PDT incrementali
Millisecondi
Microsecondi
Viste materializzate
No
Conteggio approssimativo distinto
No

Passaggi successivi

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