
Storico delle Query di Snowflake

Introduzione
Tracciare e audire l’attività del database è una parte cruciale della sicurezza e ottimizzazione di qualsiasi data warehouse. Snowflake è una piattaforma di dati cloud molto apprezzata che fornisce strumenti potenti per ottenere informazioni dettagliate sulle query del suo account. In questo articolo, esploreremo in dettaglio la vista dello storico delle query di Snowflake e le funzioni della tabella QUERY_HISTORY. Imparerà come utilizzare queste funzionalità per ottenere preziose informazioni sull’attività delle query, le prestazioni e i modelli di accesso.
Che Cos’è la Vista Query_History di Snowflake?
La vista query_history in Snowflake mostra tutte le query eseguite nel suo account. È di sola lettura. Le informazioni sono disponibili per gli ultimi 7 giorni per Standard Edition. Per Enterprise Edition e versioni superiori, sono disponibili per gli ultimi 14 giorni.
Queste informazioni sono disponibili per gli ultimi 7 giorni per Standard Edition e 14 giorni per Enterprise Edition e superiori. Forniscono informazioni dettagliate su ogni query, incluso:
Testo della query
Stato di esecuzione (ad esempio completato, fallito, 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 scanditi
E altro ancora
Snowflake popola automaticamente questa vista e non richiede alcuna configurazione o impostazione da parte sua. Può interrogare questa vista di audit dell’accesso di Snowflake come qualsiasi altra vista di Snowflake.
Esempio di Interrogazione di query_history
Ecco un esempio base di utilizzo della vista query_history. Questa vista mostra le 10 query più recenti eseguite dall’utente attuale.
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 vista query_history. Filtra solo quelle query eseguite dall’utente attuale, 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 vista query_history, Snowflake fornisce una serie di funzioni della tabella per accedere ai dati dello storico delle query. Queste funzioni permettono di recuperare la cronologia delle query da un periodo di tempo più lungo rispetto ai 7 o 14 giorni di conservazione della vista.
Le funzioni QUERY_HISTORY si presentano in tre varianti:
QUERY_HISTORY() – Restituisce la cronologia delle query di 14 giorni in struttura di micro-partizione per query ottimizzate
QUERY_HISTORY_BY_SESSION() – Restituisce la cronologia delle query di 14 giorni con dettagli aggiuntivi a livello di sessione
QUERY_HISTORY_BY_USER() – Restituisce la cronologia delle query di 14 giorni con dettagli aggiuntivi a livello di utente
Esempio di Utilizzo di QUERY_HISTORY
Supponiamo che voglia trovare i 5 utenti che hanno scansionato più dati negli ultimi 14 giorni. Può usare questa funzione della tabella Snowflake come segue:
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 gli ultimi 14 giorni utilizzando la funzione QUERY_HISTORY. Somma la colonna bytes_scanned per ogni utente, ordina i risultati in ordine decrescente per byte totali scansionati e seleziona i primi 5 utenti.
Filtrare i Risultati della Cronologia delle Query
La vista query_history e le funzioni QUERY_HISTORY supportano una vasta gamma di predicati SQL per filtrare i risultati. Alcuni predicati comuni sono:
query_id – L’identificatore univoco di una query
query_type – Il tipo di query (ad esempio 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 (ad esempio RUNNING, COMPLETED, FAILED)
database_name, schema_name, table_name – I nomi degli oggetti del database a cui ha acceduto la query
Ecco un esempio che trova tutte le query fallite che hanno acceduto a una tabella specifica 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 la Cronologia delle Query
La funzionalità di cronologia delle query di Snowflake ha molti casi d’uso preziosi, tra cui:
Audit e Sicurezza
Monitorando tutte le query eseguite nel suo account Snowflake, query_history le permette di:
Monitorare attività sospette o accessi non autorizzati
Indagare sugli incidenti di sicurezza
Garantire conformità con le politiche di governance dei dati
Fornire una traccia di audit per requisiti normativi
Ottimizzazione delle Query
I dati della cronologia delle query possono aiutarla a ottimizzare le prestazioni delle query mediante:
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 strategie di indicizzazione, clustering e partizionamento
Ripartizione dei Costi e Allocazione
I byte scansionati e i dati sul tempo di esecuzione nella cronologia delle query le permettono di:
Attribuire i costi di Snowflake a utenti, team o progetti specifici
Implementare modelli di chargeback o showback
Incoraggiare l’efficienza delle query e limitare i costi fuori controllo
Accedere alla Cronologia delle Query in Sicurezza
Noti che per impostazione predefinita, la vista 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 cauta quando concede l’accesso alla cronologia delle query, poiché potrebbe contenere informazioni sensibili. Consideri di creare un ruolo separato con privilegi limitati specificamente per scopi di audit e monitoraggio.
Riassunto e Conclusione
La funzionalità della cronologia delle query di Snowflake fornisce una visibilità essenziale sulle query eseguite dagli utenti nel suo account. Può utilizzare la vista query_history e le funzioni della tabella QUERY_HISTORY per vari scopi, inclusi migliorare l’audit, ottimizzare le prestazioni delle query e tracciare i costi d’uso. Inoltre, questi strumenti offrono molti altri vantaggi.
Gli esempi coperti in questo articolo illustrano solo alcuni dei numerosi modi in cui può ottenere informazioni dai dati della cronologia delle query. Mentre esplora ulteriormente, consideri come 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!