DataSunrise Obtient le Statut Compétence DevOps AWS dans AWS DevSecOps et Surveillance, Journalisation, Performance

Historique des Requêtes Snowflake

Historique des Requêtes Snowflake

Historique des Requêtes Snowflake

Introduction

Suivre et auditer l’activité de la base de données est une partie cruciale pour sécuriser et optimiser tout entrepôt de données. Snowflake est une plate-forme de données cloud populaire qui fournit des outils puissants pour obtenir des informations détaillées sur les requêtes de votre compte. Dans cet article, nous explorerons en détail la vue de l’historique des requêtes Snowflake et les fonctions de table QUERY_HISTORY. Vous apprendrez comment utiliser ces fonctionnalités pour obtenir des informations précieuses sur l’activité des requêtes, les performances et les modèles d’accès.

Qu’est-ce que la vue query_history de Snowflake?

La vue query_history dans Snowflake affiche toutes les requêtes exécutées dans votre compte. Elle est en lecture seule. Ces informations sont disponibles pour les 7 derniers jours pour l’édition Standard. Pour l’édition Entreprise et supérieure, elles sont disponibles pour les 14 derniers jours.

Ces informations sont disponibles pour les 7 derniers jours pour l’édition Standard, et pour les 14 derniers jours pour l’édition Entreprise et supérieure. Elles fournissent des informations détaillées sur chaque requête, notamment:

  • Texte de la requête

  • Statut d’exécution (ex. terminé, échoué, en cours)

  • Objets interrogés (tables, vues, etc.)

  • Utilisateur ayant exécuté la requête

  • Heure de début et de fin de la requête

  • Nombre de lignes retournées

  • Octets scannés

  • Et plus encore

Snowflake remplit automatiquement cette vue et ne nécessite aucune configuration ni réglage de votre part. Vous pouvez interroger cette vue de l’audit d’accès Snowflake comme n’importe quelle autre vue Snowflake.

Exemple d’interrogation de query_history

Voici un exemple de base d’utilisation de la vue query_history. Cette vue affiche les 10 requêtes les plus récentes exécutées par l’utilisateur actuel.

SELECT query_text, start_time, execution_status 
FROM query_history
WHERE user_name = current_user()
ORDER BY start_time DESC
LIMIT 10;

Cette requête sélectionne le texte SQL, l’heure de début et le statut d’exécution des requêtes depuis la vue query_history. Elle filtre uniquement les requêtes exécutées par l’utilisateur actuel, ordonne les résultats avec les requêtes les plus récentes en premier, et limite la sortie à 10 lignes.

Les fonctions de table QUERY_HISTORY

En plus de la vue query_history, Snowflake offre un ensemble de fonctions de table pour accéder aux données de l’historique des requêtes. Ces fonctions vous permettent de récupérer l’historique des requêtes au-delà de la période de rétention de 7 ou 14 jours de la vue.

Les fonctions QUERY_HISTORY existent en trois variantes :

  • QUERY_HISTORY() – Retourne l’historique des requêtes de 14 jours dans une structure de micro-partition pour des requêtes optimisées

  • QUERY_HISTORY_BY_SESSION() – Retourne l’historique des requêtes de 14 jours avec des détails supplémentaires au niveau de la session

  • QUERY_HISTORY_BY_USER() – Retourne l’historique des requêtes de 14 jours avec des détails supplémentaires au niveau de l’utilisateur

Exemple d’utilisation de QUERY_HISTORY

Supposons que vous souhaitiez trouver les 5 principaux utilisateurs ayant scanné le plus de données au cours des 14 derniers jours. Vous pourriez utiliser cette fonction de table Snowflake comme ceci :

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;

Cette requête récupère l’historique des requêtes pour les 14 derniers jours en utilisant la fonction QUERY_HISTORY. Elle additionne la colonne bytes_scanned pour chaque utilisateur, ordonne les résultats de manière descendante par octets totaux scannés, et prend les 5 utilisateurs principaux.

Filtrage des résultats de l’historique des requêtes

La vue query_history et les fonctions QUERY_HISTORY prennent en charge une large gamme de prédicats SQL pour filtrer les résultats. Voici quelques prédicats courants que vous pourriez utiliser :

  • query_id – L’identifiant unique d’une requête

  • query_type – Le type de requête (ex. SELECT, INSERT, CREATE TABLE)

  • user_name – Le nom de l’utilisateur qui a exécuté la requête

  • start_time et end_time – Les horodatages de début et de fin de la requête

  • execution_status – Le statut de la requête (ex. EN COURS, TERMINÉ, ÉCHOUÉ)

  • database_name, schema_name, table_name – Les noms des objets de la base de données accédés par la requête

Voici un exemple qui trouve toutes les requêtes échouées qui ont accédé à une table spécifique au cours de la dernière journée :

SELECT * 
FROM query_history
WHERE execution_status = 'FAILED'
 AND table_name = 'my_table'
 AND start_time >= dateadd('day', -1, current_timestamp());

Cas d’utilisation de l’historique des requêtes

La fonctionnalité d’historique des requêtes de Snowflake a de nombreux cas d’utilisation précieux, notamment :

Audit et Sécurité

En suivant toutes les requêtes exécutées sur votre compte Snowflake, query_history vous permet de :

  • Surveiller les activités suspectes ou les accès non autorisés

  • Enquêter sur des incidents de sécurité

  • Assurer la conformité aux politiques de gouvernance des données

  • Fournir une piste d’audit pour des exigences réglementaires

Optimisation des Requêtes

Les données de l’historique des requêtes peuvent vous aider à optimiser les performances des requêtes en :

  • Identifiant les requêtes les plus gourmandes en ressources

  • Analysant les modèles de requêtes au fil du temps

  • Détectant et résolvant les erreurs ou les dépassements de temps des requêtes

  • Ajustant les stratégies d’indexation, de clustering et de partitionnement

Imputation et Répartition des Coûts

Les données de bytes scannés et de temps d’exécution dans l’historique des requêtes vous permettent de :

  • Attribuer les coûts Snowflake à des utilisateurs, équipes ou projets spécifiques

  • Mettre en œuvre des modèles de facturation ou de répartition des coûts

  • Encourager l’efficacité des requêtes et limiter les coûts non maîtrisés

Accès Sécurisé à l’Historique des Requêtes

Notez que par défaut, la vue query_history et les fonctions QUERY_HISTORY ne sont accessibles que par le rôle ACCOUNTADMIN. Pour accorder l’accès à d’autres rôles, vous devrez utiliser la commande GRANT IMPORTED PRIVILEGES.

Soyez prudent lors de l’octroi d’accès à l’historique des requêtes, car il peut contenir des informations sensibles. Envisagez de créer un rôle distinct avec des privilèges limités spécifiquement pour les besoins d’audit et de surveillance.

Résumé et Conclusion

La fonctionnalité d’historique des requêtes de Snowflake fournit une visibilité essentielle sur les requêtes que les utilisateurs exécutent sur votre compte. Vous pouvez utiliser la vue query_history et les fonctions de table QUERY_HISTORY pour diverses finalités. Celles-ci incluent l’amélioration de l’audit, l’optimisation des performances des requêtes et le suivi des coûts d’utilisation. De plus, ces outils offrent d’autres avantages intéressants.

Les exemples couverts dans cet article illustrent juste quelques-unes des nombreuses façons dont vous pouvez tirer parti des données de l’historique des requêtes. En explorant davantage, envisagez comment ces informations pourraient améliorer la sécurité, l’efficacité et la gouvernance dans votre propre environnement Snowflake.

DataSunrise propose des outils conviviaux et flexibles pour gérer la sécurité de Snowflake, les règles d’audit, le masquage dynamique des données, et la conformité. Visitez notre équipe pour une démonstration en ligne afin de voir ces capacités en action!

Suivant

Redshift et Athena

Redshift et Athena

En savoir plus

Besoin de l'aide de notre équipe de support ?

Nos experts seront ravis de répondre à vos questions.

Informations générales :
[email protected]
Service clientèle et support technique :
support.datasunrise.com
Demandes de partenariat et d'alliance :
[email protected]