Segui questi passaggi per collegare Looker a Snowflake:
- Crea un utente Looker su Snowflake ed esegui il provisioning dell'accesso.
- Configura una connessione al database in Looker.
Creazione di un utente Looker su Snowflake
Ti consigliamo i seguenti comandi per creare l'utente Looker. Assicurati di eseguire ogni riga singolarmente.
Facoltativamente, aggiungi la parola chiave
ON FUTURE
per salvare le istruzioniGRANT
in modo permanente negli oggetti appena creati. Ti consigliamo di eseguire questa operazione per le tabelle in tutti gli schemi utilizzati da Looker, quindi non è necessario eseguire nuovamente le istruzioniGRANT
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 linee selezionate.
Creazione della connessione di Looker al 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 di database. Per informazioni, consulta la pagina della documentazione Connessione di Looker al tuo database. Di seguito sono descritte alcune delle impostazioni riportate di seguito:
- Name (Nome): assegna un nome alla connessione. In questo modo il modello LookML fa riferimento alla connessione.
- Dialect: seleziona Fiocco di neve.
- Host: inserisci il nome host Snowflake. Sarà simile a
<account_name>.snowflakecomputing.com
. Controlla esempi di nomi di account Snowflake per regione per assicurarti di utilizzare il valore giusto 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 Database Account (Account di database) per specificare il Username e la Password dell'account utente Snowflake che verranno utilizzati per la connessione a Looker.
- Utilizza OAuth se vuoi configurare OAuth per la connessione.
- Abilita PDT: utilizza questa opzione di attivazione per abilitare le tabelle derivate persistenti (PDT). L'abilitazione delle PDT rivela i campi PDT aggiuntivi e la sezione PDT Overrides (Override PDT) per la connessione.
- Temp Database (Database temporaneo): se le PDT sono abilitate, imposta questo campo su uno schema in cui l'utente dispone di tutti i privilegi necessari per creare, eliminare, rinominare e modificare le tabelle.
- Numero massimo di connessioni per nodo: inizialmente è possibile lasciare il valore predefinito su questa impostazione. Scopri di più su questa impostazione nella sezione Max Connections per node (Numero massimo di connessioni per nodo) della pagina della documentazione Connessione di Looker al tuo database.
- Stima dei costi: abilita le stime dei costi per le query Esplora, le stime dei costi per le query SQL Runner e le stime dei risparmi sul calcolo per le query di awareness aggregate sulla connessione.
- Fuso orario database: il fuso orario utilizzato dal database Snowflake per archiviare date e ore. L'impostazione predefinita è UTC. Questa opzione è facoltativa.
- Fuso orario query: il fuso orario da visualizzare per le query. Ad esempio, Eastern US (America – New York). Questa opzione è facoltativa.
Parametri JDBC aggiuntivi. Aggiungi altri 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 ognuno di questi parametri impostando un valore alternativo nel campo Parametri JDBC aggiuntivi, ad esempio:
&AUTOCOMMIT=FALSE
- Aggiungi
Per verificare che la connessione sia riuscita, fai clic su Prova. Per informazioni sulla risoluzione dei problemi, consulta la pagina della documentazione Testare la connettività dei database.
Per salvare queste impostazioni, fai clic su Connetti.
Definire i warehouse Snowflake per ogni gruppo o per utente
Puoi utilizzare gli attributi utente Looker per assegnare warehouse Snowflake separati a singoli utenti o gruppi Looker. Questo è utile, ad esempio, se alcuni dei tuoi utenti richiedono livelli di potenza di calcolo diversi. Puoi assegnare un warehouse con maggiori risorse di calcolo solo agli utenti che ne hanno bisogno e allo stesso tempo assegnare un warehouse con risorse inferiori a utenti con esigenze minori.
Per designare i warehouse in base al gruppo o all'utente:
- Aggiungi i gruppi o gli utenti in Looker.
Definisci un attributo utente in Looker in cui verranno archiviati i nomi dei warehouse Snowflake. Puoi assegnare a questo attributo qualsiasi nome, ad esempio
snowflake_wh
.Nell'attributo utente appena definito, assegna i valori del nome warehouse ai gruppi o agli utenti.
Nel campo Ulteriori parametri JDBC della pagina Impostazioni di connessione, aggiungi quanto segue, sostituendo
snowflake_warehouse
con il nome dell'attributo dell'utente che hai definito:warehouse={{ _user_attributes['snowflake_warehouse'] }}
Ecco alcuni esempi:
Per testare le singole impostazioni di connessione, puoi sudo come utente a cui hai assegnato un valore di nome warehouse.
Per istruzioni più dettagliate su questa procedura, consulta il blog di Red Pill Analytics.
Funzionalità di sospensione automatica di Snowflake
I warehouse Snowflake hanno una funzionalità di sospensione automatica che è abilitata per impostazione predefinita. Dopo un periodo specificato, il warehouse si sospenderà automaticamente. Se il warehouse viene sospeso, tutte le query generano un errore. Questo errore non è visibile sulle dashboard (in genere non vengono mostrati dati), ma lo è quando esegui query con la pagina Esplora.
Snowflake ha anche una funzionalità di ripristino automatico che riprende il magazzino quando viene eseguita una query. Tuttavia, il ripristino del warehouse può richiedere fino a cinque minuti, con il conseguente blocco delle query per cinque minuti prima del ritorno. Queste funzionalità non possono essere configurate in Looker. Attiva queste funzionalità nella scheda Warehouses nell'interfaccia utente di Snowflake.
Supporto PDT
Per il supporto della tabella derivata permanente, crea un account utente Snowflake per le PDT che abbia accesso in scrittura al tuo database e allo schema predefinito. Nella pagina Connections Settings (Impostazioni connessioni) di Looker, attiva l'opzione Enable PDTs (Abilita PDT). Nella sezione Override PDT, inserisci il nome utente e la password dell'utente PDT. Per ulteriori informazioni, consulta la pagina Documentazione sulla 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. Il comando AUTOCOMMIT è necessario per i comandi SQL eseguiti da Looker per mantenere il proprio sistema di registrazione delle PDT.
Configurazione di OAuth per le connessioni Snowflake
Looker supporta le connessioni OAuth per Snowflake, il che significa che ogni utente Looker esegue l'autenticazione in Snowflake e autorizza Looker a eseguire query sul database con il proprio account utente Snowflake.
OAuth consente agli amministratori di database:
- Controlla quali utenti Looker stanno eseguendo 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 ID e password di Snowflake in più posizioni
- Revoca l'autorizzazione per un determinato utente tramite Snowflake
Con le connessioni Snowflake che utilizzano OAuth, gli utenti devono eseguire di nuovo l'accesso periodicamente alla scadenza dei token OAuth. La durata della validità dei token OAuth di Snowflake è impostata tramite lo stesso Snowflake.
Tieni presente quanto segue per Snowflake con OAuth:
- Se un utente lascia scadere il token Snowflake, tutte le pianificazioni o gli avvisi di sua proprietà saranno interessati. Per evitare questo problema, Looker invia un'email di notifica al proprietario di ogni pianificazione e ogni avviso prima della scadenza del token OAuth Snowflake attivo attuale. Looker invierà queste email di notifica 14 giorni, 7 giorni e 1 giorno prima della scadenza del token. L'utente può andare alla pagina dell'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 Personalizzazione delle impostazioni dell'account utente.
- Poiché le connessioni Snowflake che utilizzano OAuth sono "per utente", i criteri di memorizzazione nella cache si applicano anche a ogni utente e non solo a una query. Ciò significa che, invece di utilizzare i risultati memorizzati nella cache ogni volta che la stessa query viene eseguita all'interno del 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 cache delle query.
- 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 sia ACCOUNTADMIN o SAFEADMIN. Poiché questi ruoli sono bloccati per OAuth, Snowflake utilizzerà invece il ruolo PUBBLICO. Per informazioni, consulta la documentazione di Snowflake.
- Le tabelle derivate persistenti (PDT) non sono supportate per le connessioni Snowflake con OAuth.
- Quando eseguono questa operazione, gli amministratori utilizzeranno il token di accesso OAuth di tale utente. Se il token di accesso dell'utente è scaduto, l'amministratore non potrà creare un nuovo token per conto dell'utente sudoed; l'utente dovrà accedere a Snowflake e autorizzare nuovamente Looker. Per informazioni sull'utilizzo del comando
sudo
, consulta la pagina della documentazione Utenti.
Configurare 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.
Esegui il seguente comando in Snowflake, dove
<looker_hostname>
è il nome host della tua istanza di Looker:CREATE SECURITY INTEGRATION LOOKER TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = LOOKER OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
Recupera l'ID client e il secret OAuth eseguendo questo comando:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
La risposta avrà un
OAUTH_CLIENT_ID
e unOAUTH_CLIENT_SECRET
di cui avrai bisogno più avanti in questa procedura.In Looker, crea una nuova connessione al tuo 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 visualizza i campi ID client OAuth e Client secret OAuth.
Incolla i valori
OAUTH_CLIENT_ID
eOAUTH_CLIENT_SECRET
ricevuti dal database in precedenza in questa procedura.Completa il resto della procedura per la connessione di Looker al tuo database.
Dopo aver configurato la connessione di Looker al tuo database, puoi testare la connessione utilizzando una delle seguenti soluzioni:
- Seleziona il pulsante Test (Prova) in fondo alla pagina Connections Settings (Impostazioni connessioni), come descritto nella pagina della documentazione Connessione di Looker al tuo database.
- Seleziona il pulsante Test in corrispondenza dell'elenco delle connessioni nella pagina di amministrazione delle connessioni, come descritto nella pagina della documentazione Connessioni.
A questo punto, puoi testare la connessione ed eseguirne il deployment su un modello nel seguente modo:
- In Looker, vai alla modalità di sviluppo.
- Accedi ai file del progetto per un progetto Looker che utilizza la tua connessione Snowflake.
- Apri un file modello e sostituisci il valore del modello
connection
con il nome della nuova connessione Snowflake, quindi salva il file del modello. - 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.
- Segui le istruzioni per accedere a Snowflake e inserisci le tue credenziali Snowflake.
Dopo aver eseguito correttamente l'accesso a Snowflake, Looker tornerà alla tua query. Se la query viene eseguita correttamente, puoi commettere il nuovo valore di connessione ed eseguire il deployment delle modifiche in produzione.
Accedere a Snowflake per eseguire query
Dopo aver configurato la connessione Snowflake per OAuth, agli utenti verrà richiesto di accedere a Snowflake prima di eseguire le query. Sono incluse le query di Explore, delle dashboard, dei Look e di SQL Runner.
Gli utenti possono anche accedere a Snowflake dalla sezione Credenziali di connessione OAuth della loro pagina Account.
Per accedere al tuo account Snowflake utilizzando Looker:
- Fai clic sul menu utente di Looker.
- Seleziona Account.
- Nella pagina Account, scorri verso il basso fino alla sezione OAuth Connection Credentials (Credenziali di connessione OAuth) e seleziona il pulsante Log In (Accedi) per il database Snowflake desiderato.
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.
Dopo aver eseguito l'accesso a Snowflake tramite Looker, puoi uscire o autorizzare nuovamente le tue credenziali in qualsiasi momento dalla pagina Account, come descritto nella pagina della documentazione Personalizzazione dell'account utente.
Assistenza per le funzionalità
Affinché Looker supporti alcune funzionalità, anche il dialetto del tuo database deve supportarle.
A partire dalla Looker 23.8 di Snowflake supporta le seguenti funzionalità:
Funzionalità | Supportato? |
---|---|
Livello di assistenza | Richiesta supportata |
Looker (Google Cloud core) | Sì |
Aggregati simmetrici | Sì |
Tabelle derivate | Sì |
Tabelle derivate permanenti da SQL | Sì |
Tabelle derivate native permanenti | Sì |
Visualizzazioni stabili | Sì |
Termine query | Sì |
Pivot basati su SQL | Sì |
Fusi orari | Sì |
SSL | Sì |
Subtotali | Sì |
Parametri aggiuntivi JDBC | Sì |
Sensibilità alle maiuscole | Sì |
Tipo di località | Sì |
Tipo di elenco | Sì |
Percentile | Sì |
Distintivo percentile | No |
Processi di visualizzazione di SQL Runner | No |
Tabella di descrizione di SQL Runner | Sì |
Indici di SQL Runner | No |
SQL Runner Seleziona 10 | Sì |
Conteggio SQL Runner | Sì |
Spiegazione SQL | Sì |
Credenziali OAuth | Sì |
Commenti contestuali | Sì |
Pooling della connessione | Sì |
Disegni HLL | Sì |
Aggregate Awareness | Sì |
PDT incrementali | Sì |
Millisecondi | Sì |
Microsecondi | Sì |
Viste materializzate | No |
Conteggio approssimativo distinto | No |
Passaggi successivi
Dopo aver connesso il database a Looker, configura le opzioni di accesso per i tuoi utenti.