Storico delle Query di Snowflake
Introduzione
Monitorare e eseguire l’audit delle attività di database è una parte cruciale nella sicurezza e ottimizzazione di qualsiasi data warehouse. Snowflake è una piattaforma dati cloud molto apprezzata che fornisce strumenti potenti per ottenere informazioni dettagliate sulle query nel suo account. In questo articolo, esploreremo in dettaglio la view dello storico delle query di Snowflake e le funzioni della tabella QUERY_HISTORY. Imparerete come utilizzare queste funzionalità per ottenere preziose informazioni sulle attività delle query, le prestazioni, e i modelli di accesso.
Che Cos’è il View query_history di Snowflake?
La view query_history in Snowflake mostra tutte le query eseguite nel suo account. È in sola lettura. L’informazione è disponibile per i passati 7 giorni nella Standard Edition. Per la Enterprise Edition e superiori, è disponibile per i passati 14 giorni.
Questa informazione è disponibile per i passati 7 giorni nella Standard Edition, e 14 giorni per la Enterprise Edition e superiori. Fornisce informazioni dettagliate su ogni query, tra cui:
Testo della query
Stato di esecuzione (es. completata, fallita, in esecuzione)
Oggetti interrogati (tabelle, viste, ecc.)
Utente che ha eseguito la query
Ora di inizio e fine della query
Numero di righe restituite
Byte scannerizzati
E altro
Snowflake popola automaticamente questa vista e non richiede alcuna configurazione o impostazione da parte sua. Può interrogare questa view di audit degli accessi a Snowflake come qualsiasi altra view di Snowflake.
Esempio di Interrogazione della query_history
Ecco un esempio di base di utilizzo della view query_history. Questa view visualizza le 10 query più recenti eseguite dall’utente corrente.
SELECT query_text, start_time, execution_status FROM query_history WHERE user_name = current_user() ORDER BY start_time DESC LIMIT 10;
Questa query seleziona il testo SQL, l’ora di inizio e lo stato di esecuzione delle query dalla view query_history. Filtra solo quelle query eseguite dall’utente corrente, ordina i risultati con le query più recenti per prime e limita l’output a 10 righe.
Le Funzioni della Tabella QUERY_HISTORY
Oltre alla view query_history, Snowflake fornisce un insieme di funzioni della tabella per accedere ai dati dello storico delle query. Queste funzioni le consentono di recuperare lo storico delle query da un periodo precedente ai 7 o 14 giorni di conservazione della view.
Le funzioni QUERY_HISTORY sono disponibili in tre varianti:
QUERY_HISTORY() – Restituisce lo storico delle query di 14 giorni in struttura di micro-partizione per query ottimizzate
QUERY_HISTORY_BY_SESSION() – Restituisce lo storico delle query di 14 giorni con dettagli aggiuntivi a livello di sessione
QUERY_HISTORY_BY_USER() – Restituisce lo storico delle query di 14 giorni con dettagli aggiuntivi a livello di utente
Esempio di Utilizzo di QUERY_HISTORY
Supponiamo che lei voglia trovare i primi 5 utenti che hanno scannerizzato più dati negli ultimi 14 giorni. Potrebbe utilizzare questa funzione della tabella di Snowflake in questo modo:
SELECT user_name, sum(bytes_scanned) as total_bytes_scanned FROM TABLE(QUERY_HISTORY()) WHERE start_time >= dateadd('day', -14, current_timestamp()) GROUP BY user_name ORDER BY total_bytes_scanned DESC LIMIT 5;
Questa query recupera lo storico delle query per i passati 14 giorni usando la funzione QUERY_HISTORY. Somma la colonna bytes_scanned per ogni utente, ordina i risultati in ordine decrescente di byte totali scannerizzati, e prende i primi 5 utenti.
Filtrare i Risultati dello Storico delle Query
La view query_history e le funzioni QUERY_HISTORY supportano una vasta gamma di predicati SQL per filtrare i risultati. Alcuni predicati comuni che potrebbe utilizzare includono:
query_id – L’identificatore unico di una query
query_type – Il tipo di query (es. SELECT, INSERT, CREATE TABLE)
user_name – Il nome dell’utente che ha eseguito la query
start_time e end_time – I timestamp di inizio e fine della query
execution_status – Lo stato della query (es. IN ESECUZIONE, COMPLETATA, FALLITA)
database_name, schema_name, table_name – I nomi degli oggetti di database accessibili dalla query
Ecco un esempio che trova tutte le query fallite che hanno accesso a una specifica tabella nell’ultimo giorno:
SELECT * FROM query_history WHERE execution_status = 'FAILED' AND table_name = 'my_table' AND start_time >= dateadd('day', -1, current_timestamp());
Casi d’Uso per lo Storico delle Query
La funzionalità di Snowflake dello storico delle query ha molti casi d’uso preziosi, tra cui:
Auditing e Sicurezza
Monitorando tutte le query eseguite contro il suo account Snowflake, query_history le consente di:
Monitorare per attività sospette o accessi non autorizzati
Indagare su incidenti di sicurezza
Garantire la conformità con le politiche di governance dei dati
Fornire una traccia di audit per i requisiti normativi
Ottimizzazione delle Query
I dati dello storico delle query possono aiutarla a ottimizzare le prestazioni delle query:
Identificare le query più intensive in termini di risorse
Analizzare i modelli di query nel tempo
Rilevare e risolvere errori o timeout delle query
Ottimizzare le strategie di indicizzazione, clustering e partizionamento
Attribuzione dei Costi e Chargeback
I dati sui byte scannerizzati e il tempo di esecuzione nello storico delle query le consentono di:
Attribuire i costi di Snowflake a specifici utenti, team o progetti
Implementare modelli di chargeback o showback
Incoraggiare l’efficienza delle query e limitare i costi eccessivi
Accedere in Sicurezza allo Storico delle Query
Noti che per impostazione predefinita, la view query_history e le funzioni QUERY_HISTORY sono accessibili solo dal ruolo ACCOUNTADMIN. Per concedere l’accesso ad altri ruoli, dovrà usare il comando GRANT IMPORTED PRIVILEGES.
Sia cauto quando concede l’accesso allo storico delle query, poiché potrebbe contenere informazioni sensibili. Consideri di creare un ruolo separato con privilegi limitati specificatamente per scopi di audit e monitoraggio.
Sommario e Conclusione
La funzionalità di Snowflake dello storico delle query fornisce una visibilità essenziale sulle query eseguite contro il suo account. Può utilizzare la view query_history e le funzioni della tabella QUERY_HISTORY per vari scopi, tra cui migliorare l’audit, ottimizzare le prestazioni delle query, e monitorare i costi di utilizzo. Inoltre, questi strumenti offrono ulteriori benefici.
Gli esempi trattati in questo articolo illustrano solo alcune delle molte modalità con cui può trarre intuizioni dai dati dello storico delle query. Mentre esplora ulteriormente, consideri in che modo queste informazioni potrebbero migliorare la sicurezza, l’efficienza e la governance all’interno del suo ambiente Snowflake.
DataSunrise fornisce strumenti user-friendly e flessibili per gestire la sicurezza di Snowflake, le regole di audit, il mascheramento dinamico dei dati e la conformità. Visiti il nostro team per una demo online per vedere queste capacità in azione!