Snowflake

Per connettere Looker a Snowflake:

  1. Crea un utente Looker su Snowflake e fornisci l'accesso.
  2. Configura una connessione al database in Looker.

Crittografia del traffico di rete

È una best practice criptare il traffico di rete tra l'applicazione Looker e il tuo database. Valuta 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 o seleziona l'opzione Tutte le query nel pannello di connessione Snowflake 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.

Ti consigliamo di aggiungere la parola chiave ON FUTURE a ogni istruzione GRANT in modo che gli oggetti appena creati abbiano le stesse autorizzazioni senza che siano necessarie ulteriori azioni.

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

Creazione della connessione Looker al tuo 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 maggioranza dei dialetti di database. Per informazioni, consulta la pagina della documentazione Connessione di Looker al tuo database. Le seguenti descrizioni delle impostazioni contengono note specifiche per Snowflake:

Impostazioni del database - Host: inserisci il nome host Snowflake. L'aspetto sarà simile a questo: <account_name>.snowflakecomputing.com. Consulta gli esempi di nomi di account Snowflake per regione per assicurarti di utilizzare il valore corretto per la tua implementazione.

Impostazioni database - Metodo di autenticazione: seleziona uno dei seguenti metodi di autenticazione:

(Facoltativo) Impostazioni - Abilita PDT: le PDT non sono supportate per le connessioni Snowflake che utilizzano l'autenticazione OAuth. Se sono necessarie PDT, utilizza l'opzione di autenticazione Coppia di chiavi.

(Facoltativo) Impostazioni - Parametri JDBC aggiuntivi: aggiungi parametri JDBC aggiuntivi dal driver JDBC di Snowflake.

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

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

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

Per verificare che la connessione sia riuscita, fai clic su Testa. 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 warehouse Snowflake in base al gruppo o all'utente

Puoi utilizzare gli attributi utente di Looker per assegnare warehouse Snowflake separati a singoli utenti o gruppi di utenti di Looker. Ciò è utile, ad esempio, se hai utenti che richiedono diversi livelli di potenza di calcolo. Puoi assegnare un warehouse con maggiori risorse di calcolo solo agli utenti che ne hanno bisogno, mentre assegni un warehouse con meno risorse agli utenti con esigenze minori.

Per designare i magazzini in base al gruppo o all'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 Snowflake. Puoi assegnare a questo attributo qualsiasi nome, ad esempio snowflake_wh.

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

  3. Nell'attributo utente che hai appena definito, assegna i valori del nome del magazzino ai gruppi o agli utenti che avranno bisogno di un accesso diverso al magazzino.

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

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

      warehouse={{ _user_attributes['snowflake_warehouse'] }}
    
  5. Per testare le singole impostazioni di connessione, puoi utilizzare sudo come utente a cui hai assegnato un valore del nome del warehouse.

Gestione della funzionalità di sospensione automatica di Snowflake

I warehouse Snowflake hanno una funzionalità di sospensione automatica abilitata per impostazione predefinita. Dopo un periodo specificato, il magazzino verrà sospeso automaticamente. Se il warehouse è sospeso, tutte le query generano un errore. Questo errore non è visibile nelle dashboard (normalmente questi errori non mostrano dati), ma è visibile a qualsiasi utente che esegue query con la pagina Esplora.

In genere vengono utilizzati due metodi per gestire questo problema:

  1. Snowflake dispone di una funzionalità di ripristino automatico che ripristina il warehouse quando viene eseguita una query. Tuttavia, la ripresa del warehouse può richiedere fino a cinque minuti, causando l'interruzione della risposta alle query per cinque minuti prima della restituzione. La ripresa automatica non può essere configurata in Looker. Attiva queste funzionalità nella scheda Warehouses nell'interfaccia utente di Snowflake:

    La scheda Magazzini nell&#39;interfaccia utente di Snowflake, in cui sono visibili le caselle di controllo per la sospensione automatica e la ripresa automatica.

  2. Se sono state attivate le tabelle derivate permanenti (PDT), l'impostazione predefinita di Looker prevede il controllo della rigenerazione delle tabelle derivate ogni 5 minuti. Questo controllo manterrà attivi i warehouse Snowflake. Tuttavia, potresti voler che Snowflake sospenda i warehouse durante le ore non lavorative per ridurre i costi. Ciò può essere ottenuto modificando la pianificazione della rigenerazione del PDT, come descritto nella documentazione sulla pianificazione della manutenzione.

Supporto PDT

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

Per il supporto delle tabelle derivate persistenti, crea un account utente Snowflake per le PDT con accesso in scrittura al tuo database e allo schema temporaneo che Looker utilizzerà per creare le PDT. Nella pagina Impostazioni connessioni di Looker, nella scheda Impostazioni facoltative della sezione Impostazioni tabella derivata permanente (PDT), attiva il pulsante di attivazione/disattivazione Attiva PDT. Poi, nel campo Database temporaneo, inserisci il nome dello schema temporaneo che Looker utilizzerà per creare le tabelle derivate permanenti.

Tieni presente che gli override PDT non sono disponibili per le connessioni Snowflake che utilizzano l'autenticazione con coppia di chiavi.

Per le connessioni Snowflake, Looker imposta il valore del parametro AUTOCOMMIT di Snowflake su TRUE, che è il 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 Snowflake

Looker supporta OAuth per le connessioni Snowflake, il che significa che ogni utente Looker si autentica nel database con il proprio account utente OAuth.

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

  • Controllare 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 tutti i processi 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 alla scadenza dei token OAuth. L'età massima dei token OAuth di Snowflake viene impostata tramite Snowflake stesso.

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

  • Le tabelle derivate permanenti (PDT) non sono supportate per le connessioni Snowflake con OAuth.
  • Se un utente lascia scadere il proprio token OAuth, tutte le pianificazioni o gli avvisi di Looker di sua proprietà verranno interessati. Per evitare questo problema, Looker invierà un'email di notifica al proprietario di ogni pianificazione e di ogni avviso 14 giorni, 7 giorni e 1 giorno prima della scadenza del token. L'utente può accedere alla propria pagina utente di Looker per riautorizzare l'accesso di Looker al database ed evitare interruzioni di pianificazioni e 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 le norme di memorizzazione nella cache sono per utente e non solo per query. Ciò significa che Looker utilizzerà i risultati memorizzati nella cache 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 della documentazione Memorizzazione nella 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 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.
  • Quando un amministratore di Looker esegue l'accesso come un altro utente, utilizza il token di accesso OAuth di quell'utente. Se il token di accesso dell'utente è scaduto, l'amministratore non può crearne uno nuovo per conto dell'utente con privilegi amministrativi. 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 questo 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';
    
  2. Recupera l'ID client OAuth e il client secret eseguendo questo comando:

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

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

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

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

Test della connessione OAuth

Dopo aver configurato la connessione di Looker al database, puoi testarla in uno dei seguenti modi:

  • Seleziona il pulsante Testa nella parte inferiore della pagina Impostazioni connessioni, come descritto nella pagina della documentazione Connessione di Looker al database.
  • Seleziona il pulsante Testa accanto all'elenco della connessione nella pagina di amministrazione Connessioni, come descritto nella pagina di documentazione Connessioni.

Inoltre, puoi testare la connessione e implementarla su un modello seguendo questi passaggi:

  1. In Looker, entra in modalità di sviluppo.
  2. Vai 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, quindi salva il file modello.
  4. Apri una delle esplorazioni o dei 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 Snowflake.

Una volta effettuato l'accesso a Snowflake, Looker ti reindirizzerà alla query. Se la query viene eseguita correttamente, puoi confermare il nuovo valore di connessione e implementare le modifiche nell'ambiente di 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 le query. Sono incluse le query di esplorazioni, dashboard, Look e SQL Runner.

La UI 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 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 e seleziona Accedi, poi seleziona Consenti per concedere a Looker l'accesso al tuo account Snowflake.

Dopo aver eseguito l'accesso a Snowflake tramite Looker, puoi disconnetterti o riautorizzare le tue credenziali in qualsiasi momento tramite la pagina Account, come descritto nella pagina di documentazione Personalizzazione dell'account utente.

Funzionalità supportate

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

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

Funzionalità Supportato?
Livello di assistenza
Supportato
Looker (Google Cloud core)
Aggregati simmetrici
Tabelle derivate
Tabelle derivate permanenti basate su SQL
Tabelle derivate native permanenti
Visualizzazioni stabili
Terminazione delle query
Pivot basati su SQL
Fusi orari
SSL
Subtotali
Parametri JDBC aggiuntivi
Sensibile alle maiuscole
Tipo di località
Tipo di elenco
Percentile
Percentile valori distinti
No
SQL Runner Show Processes
No
SQL Runner Describe Table
SQL Runner Show Indexes
No
SQL Runner Select 10
Conteggio SQL Runner
SQL Explain
Credenziali OAuth 2.0
Commenti contestuali
Pool di connessioni
Sketch HLL
Aggregate awareness
PDT incrementali
Millisecondi
Microsecondi
Viste materializzate
No
Misure di periodo in periodo
Conteggio approssimativo dei valori distinti
No

Passaggi successivi

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