DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Storico delle Query di Snowflake

Storico delle Query di Snowflake

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!

Successivo

Redshift e Athena

Redshift e Athena

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]