Historique des Requêtes Snowflake
Introduction
Suivre et auditer l’activité de la base de données est une partie cruciale de la sécurisation et de l’optimisation de tout entrepôt de données. Snowflake est une plateforme 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 la vue historique des requêtes Snowflake et les fonctions de table QUERY_HISTORY en détail. Vous apprendrez comment utiliser ces fonctionnalités pour obtenir des informations précieuses sur l’activité des requêtes, la performance et les modèles d’accès.
Qu’est-ce que la vue query_history de Snowflake ?
La vue query_history de Snowflake montre toutes les requêtes exécutées dans votre compte. Elle est en lecture seule. Les informations sont disponibles pour les 7 derniers jours pour l’Édition Standard. Pour l’Édition Entreprise et au-delà, elles sont disponibles pour les 14 derniers jours.
Cette information est disponible pour les 7 derniers jours pour l’Édition Standard, et 14 jours pour l’Édition Entreprise et au-delà. Elle fournit des informations détaillées sur chaque requête, y compris :
Texte de la requête
Statut d’exécution (par exemple, terminée, échouée, 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
Snowflake remplit automatiquement cette vue et ne nécessite aucune configuration ou configuration de votre part. Vous pouvez interroger cette vue d’audit d’accès Snowflake comme toute autre vue Snowflake.
Exemple de requête sur 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 de 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 propose 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 plus ancien que la période de rétention de 7 ou 14 jours de la vue.
Les fonctions QUERY_HISTORY se déclinent en trois variantes:
QUERY_HISTORY() – Renvoie l’historique des requêtes sur 14 jours dans une structure de micro-partition pour des requêtes optimisées
QUERY_HISTORY_BY_SESSION() – Renvoie l’historique des requêtes sur 14 jours avec des détails supplémentaires au niveau de la session
QUERY_HISTORY_BY_USER() – Renvoie l’historique des requêtes sur 14 jours avec des détails supplémentaires au niveau de l’utilisateur
Exemple d’utilisation de QUERY_HISTORY
Supposons que vous vouliez trouver les 5 utilisateurs ayant scanné le plus de données au cours des 14 derniers jours. Vous pourriez utiliser cette fonction de table Snowflake comme suit:
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 des 14 derniers jours en utilisant la fonction QUERY_HISTORY. Elle fait la somme de la colonne bytes_scanned pour chaque utilisateur, ordonne les résultats par total d’octets scannés en ordre décroissant et prend les 5 meilleurs utilisateurs.
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. Certains prédicats courants que vous pourriez utiliser incluent:
query_id – L’identifiant unique d’une requête
query_type – Le type de requête (par exemple, 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 (par exemple, EN COURS, TERMINÉ, ÉCHOUÉ)
database_name, schema_name, table_name – Les noms des objets de base de données accessibles par la requête
Voici un exemple qui trouve toutes les requêtes échouées ayant 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 offre 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 les incidents de sécurité
Assurer la conformité avec les politiques de gouvernance des données
Fournir une piste d’audit pour les 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 de requêtes ou les délais d’attente
Optimisant les stratégies d’indexation, de clustering et de partitionnement
Répartition et Attribution des Coûts
Les données sur les octets scannés et le temps d’exécution dans l’historique des requêtes vous permettent de :
Attribuer les coûts Snowflake à des utilisateurs, des équipes ou des projets spécifiques
Mettre en œuvre des modèles de refacturation ou de showback
Encourager l’efficacité des requêtes et limiter les coûts excessifs
Accéder à l’Historique des Requêtes de Manière Sécurisée
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 lorsque vous accordez l’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 l’audit et la 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 encore plus d’avantages.
Les exemples couverts dans cet article illustrent seulement quelques-unes des nombreuses façons dont vous pouvez extraire des informations à partir des données de l’historique des requêtes. En explorant davantage, réfléchissez à la manière dont ces informations pourraient améliorer la sécurité, l’efficacité et la gouvernance au sein de votre propre environnement Snowflake.
DataSunrise fournit des outils simples et flexibles pour gérer la sécurité Snowflake, les règles d’audit, le masquage dynamique des données et la conformité. Visitez notre équipe pour une démo en ligne pour voir ces capacités en action !