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

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!

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]