DataSunrise sponsorise AWS re:Invent 2024 à Las Vegas, veuillez nous rendre visite au stand n°2158 de DataSunrise

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 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 !

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]