
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!