- Catégories :
QUERY_HISTORY , QUERY_HISTORY_BY_*¶
La famille QUERY_HISTORY de fonctions de table peut être utilisée pour interroger l’historique de requêtes de Snowflake selon différentes dimensions :
QUERY_HISTORY renvoie les requêtes dans un intervalle de temps spécifié.
QUERY_HISTORY_BY_SESSION renvoie les requêtes dans une session et un intervalle de temps spécifiés.
QUERY_HISTORY_BY_USER renvoie les requêtes soumises par un utilisateur spécifié dans un intervalle de temps spécifié.
QUERY_HISTORY_BY_WAREHOUSE renvoie les requêtes exécutées par un entrepôt spécifié dans un intervalle de temps spécifié.
Chaque fonction est optimisée pour les requêtes au sein de la dimension spécifiée. Les résultats peuvent être filtrés à l’aide de prédicats SQL.
Note
Ces fonctions renvoient l’activité des requêtes au cours des 7 derniers jours.
Voir aussi :
Vue QUERY_HISTORY (Account Usage) Surveillance de l’activité des requêtes avec l’historique des requêtes (tableau de bord Snowsight)
Syntaxe¶
QUERY_HISTORY(
[ END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_SESSION(
[ SESSION_ID => <constant_expr> ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_USER(
[ USER_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_WAREHOUSE(
[ WAREHOUSE_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
Arguments¶
Tous les arguments sont facultatifs.
END_TIME_RANGE_START => constant_expr
, .END_TIME_RANGE_END => constant_expr
Intervalle de temps (au format TIMESTAMP_LTZ), au cours des 7 derniers jours, pendant lequel la requête a été exécutée :
Si
END_TIME_RANGE_END
n’est pas spécifié, la fonction renvoie toutes les requêtes, y compris celles qui sont toujours en cours d’exécution.Si
END_TIME_RANGE_END
est CURRENT_TIMESTAMP, la fonction renvoie uniquement les requêtes terminées.
Si l’intervalle de temps ne tombe pas dans les 7 derniers jours, une erreur est renvoyée.
Note
Si aucune heure de début ou de fin n’est spécifiée, les requêtes les plus récentes sont renvoyées, jusqu’à la limite spécifiée.
SESSION_ID => constant_expr
S’applique uniquement à QUERY_HISTORY_BY_SESSION
L’identificateur numérique d’une session ou CURRENT_SESSION Seules les requêtes de la session spécifiée sont renvoyées.
Par défaut : CURRENT_SESSION
USER_NAME => 'string'
S’applique uniquement à QUERY_HISTORY_BY_USER
Une chaîne de caractères spécifiant un nom d’utilisateur ou CURRENT_USER Seules les requêtes exécutées par l’utilisateur spécifié sont renvoyées. Notez que le nom d’utilisateur doit être entre guillemets simples. De plus, si le nom de connexion contient des espaces, des caractères en majuscules et minuscules ou des caractères spéciaux, le nom doit être entre guillemets doubles à l’intérieur des guillemets simples (p. ex.
'"User 1"'
vs'user1'
).Par défaut : CURRENT_USER
WAREHOUSE_NAME => 'string'
S’applique uniquement à QUERY_HISTORY_BY_WAREHOUSE
Une chaîne spécifiant un nom d’entrepôt ou CURRENT_WAREHOUSE. Seules les requêtes exécutées par cet entrepôt sont renvoyées. Notez que le nom de l’entrepôt doit être entre guillemets simples. De plus, si le nom de l’entrepôt contient des espaces, des caractères en majuscules et minuscules ou des caractères spéciaux, le nom doit être entre guillemets doubles à l’intérieur des guillemets simples (p. ex.
'"My Warehouse"'
vs'mywarehouse'
).Par défaut : CURRENT_WAREHOUSE
RESULT_LIMIT => num
Un nombre spécifiant le nombre maximum de lignes renvoyées par la fonction :
Si le nombre de lignes correspondantes est supérieur à cette limite, les requêtes avec l’heure de fin la plus récente (ou celles qui sont toujours en cours d’exécution) sont renvoyées, jusqu’à la limite spécifiée.
Plage : de
1
à10000
Par défaut :
100
.
Notes sur l’utilisation¶
Renvoie les requêtes exécutées par l’utilisateur actuel. Renvoie également les requêtes exécutées par n’importe quel utilisateur lorsque le rôle d’exécution, ou un rôle supérieur dans une hiérarchie, possède le privilège MONITOR ou OPERATE sur les entrepôts dans lesquels les requêtes ont été exécutées. Pour plus d’informations, voir Privilèges de l’entrepôt virtuel.
Lors de l’appel d’une fonction de la table Information Schema, la session doit avoir un schéma INFORMATION_SCHEMA en cours d’utilisation ou le nom de la fonction doit être complètement qualifié. Pour plus de détails, voir Schéma d’information de Snowflake.
Les valeurs des colonnes EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES et EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES sont affectées par de nombreux facteurs, notamment :
Le nombre de fonctions externes dans l’instruction SQL.
Le nombre de lignes par lot envoyées à chaque service distant.
Le nombre de tentatives en raison d’erreurs transitoires (par exemple, parce qu’une réponse n’a pas été reçue dans le délai prévu).
Sortie¶
La fonction renvoie les colonnes suivantes :
Nom de la colonne |
Type de données |
Description |
---|---|---|
QUERY_ID |
TEXT |
L’identifiant unique de l’instruction. |
QUERY_TEXT |
TEXT |
Texte de l’instruction SQL. |
DATABASE_NAME |
TEXT |
Base de données spécifiée dans le contexte de la requête lors de la compilation. |
SCHEMA_NAME |
TEXT |
Schéma spécifié dans le contexte de la requête lors de la compilation. |
QUERY_TYPE |
TEXT |
DML, requête, etc. Si la requête est en cours d’exécution ou a échoué, le type de requête peut être UNKNOWN. |
SESSION_ID |
NUMBER |
Session qui a exécuté l’instruction. |
USER_NAME |
TEXT |
Utilisateur qui a émis la requête. |
ROLE_NAME |
TEXT |
Rôle actif dans la session au moment de la requête. |
WAREHOUSE_NAME |
TEXT |
Entrepôt sur lequel la requête a été exécutée, le cas échéant. |
WAREHOUSE_SIZE |
TEXT |
Taille de l’entrepôt lorsque cette instruction est exécutée. |
WAREHOUSE_TYPE |
TEXT |
Type de l’entrepôt lorsque cette instruction est exécutée. |
CLUSTER_NUMBER |
NUMBER |
Le cluster (dans un entrepôt multi-cluster) sur lequel cette instruction a été exécutée. |
QUERY_TAG |
TEXT |
Balise de requête définie pour cette instruction via le paramètre de session QUERY_TAG. |
EXECUTION_STATUS |
TEXT |
Statut d’exécution de la requête : resuming_warehouse (entrepôt en cours), running (en cours d’exécution), queued (mise en file d’attente), blocked (bloquée), success (exécutée avec succès), failed_with_error (échec avec erreur), ou failed_with_incident (échec avec incident). |
ERROR_CODE |
NUMBER |
Code d’erreur, si la requête a renvoyé une erreur |
ERROR_MESSAGE |
TEXT |
Message d’erreur si la requête a renvoyé une erreur |
START_TIME |
TIMESTAMP_LTZ |
Heure de début de l’instruction |
END_TIME |
TIMESTAMP_LTZ |
Heure de fin de l’instruction. Si la requête est toujours en cours d’exécution, END_TIME est l’horodatage de l’époque UNIX (« 1970-01-01 00:00:00 »), ajusté pour le fuseau horaire local. Par exemple, pour l’heure normale du Pacifique, il s’agirait de « 1969-12-31 16:00:00.000 -0800 ». |
TOTAL_ELAPSED_TIME |
NUMBER |
Temps écoulé (en millisecondes) |
BYTES_SCANNED |
NUMBER |
Nombre d’octets analysés par cette instruction. |
ROWS_PRODUCED |
NUMBER |
Nombre de lignes produites par cette instruction. |
COMPILATION_TIME |
NUMBER |
Temps de compilation (en millisecondes) |
EXECUTION_TIME |
NUMBER |
Temps d’exécution (en millisecondes) |
QUEUED_PROVISIONING_TIME |
NUMBER |
Temps (en millisecondes) passé dans la file d’attente de l’entrepôt à attendre que les ressources de calcul de l’entrepôt soient provisionnées en raison de la création, de la reprise ou du redimensionnement de l’entrepôt. |
QUEUED_REPAIR_TIME |
NUMBER |
Temps (en millisecondes) passé dans la file d’attente de l’entrepôt à attendre que les ressources de calcul de l’entrepôt soient réparées. |
QUEUED_OVERLOAD_TIME |
NUMBER |
Temps (en millisecondes) passé dans la file d’attente d’entrepôt en raison de la surcharge de l’entrepôt par la charge de la requête actuelle. |
TRANSACTION_BLOCKED_TIME |
NUMBER |
Temps (en millisecondes) passé à être bloquée par un concurrent DML. |
OUTBOUND_DATA_TRANSFER_CLOUD |
TEXT |
Fournisseur cloud cible pour les instructions qui déchargent des données vers une autre région et/ou un autre cloud. |
OUTBOUND_DATA_TRANSFER_REGION |
TEXT |
Région cible pour les instructions qui déchargent des données dans une autre région et / ou cloud. |
OUTBOUND_DATA_TRANSFER_BYTES |
NUMBER |
Nombre d’octets transférés dans les instructions qui déchargent des données vers une autre région et/ou un autre Cloud. |
INBOUND_DATA_TRANSFER_CLOUD |
TEXT |
Fournisseur de Cloud source pour les instructions qui chargent des données provenant d’une autre région et/ou d’un Cloud. |
INBOUND_DATA_TRANSFER_REGION |
TEXT |
Région source pour les instructions qui chargent des données d’une autre région et/ou d’un autre Cloud. |
INBOUND_DATA_TRANSFER_BYTES |
NUMBER |
Nombre d’octets transférés lors d’une opération de réplication à partir d’un autre compte. Le compte source peut se trouver dans la même région ou dans une région différente du compte actuel. |
LIST_EXTERNAL_FILE_TIME |
NUMBER |
Temps (en millisecondes) consacré à la liste des fichiers externes. |
CREDITS_USED_CLOUD_SERVICES |
NUMBER |
Nombre de crédits utilisés pour les services Cloud. |
RELEASE_VERSION |
TEXT |
Version de publication au format |
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS |
NUMBER |
Nombre total de fois que cette requête a appelé des services distants. Pour des détails importants, voir les notes d’utilisation. |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS |
NUMBER |
Nombre total de lignes envoyées par cette requête dans tous les appels à tous les services distants. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS |
NUMBER |
Nombre total de lignes que cette requête a reçues de tous les appels vers tous les services distants. |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES |
NUMBER |
Nombre total d’octets que cette requête a envoyés dans tous les appels à tous les services distants. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES |
NUMBER |
Nombre total d’octets que cette requête a reçus de tous les appels vers tous les services distants. |
IS_CLIENT_GENERATED_STATEMENT |
BOOLEAN |
Indique si la requête a été générée par le client. |
QUERY_HASH |
TEXT |
La valeur de hachage calculée sur la base du texte SQL canonisé. |
QUERY_HASH_VERSION |
NUMBER |
La version de la logique utilisée pour calculer |
QUERY_PARAMETERIZED_HASH |
TEXT |
La valeur de hachage calculée à partir de la requête paramétrée. |
QUERY_PARAMETERIZED_HASH_VERSION |
NUMBER |
La version de la logique utilisée pour calculer |
Les valeurs potentielles de la colonne QUERY_TYPE
comprennent :
CREATE_USER
CREATE_ROLE
CREATE_NETWORK_POLICY
ALTER_ROLE
ALTER_NETWORK_POLICY
ALTER_ACCOUNT
DROP_SEQUENCE
DROP_USER
DROP_ROLE
DROP_NETWORK_POLICY
RENAME_NETWORK_POLICY
REVOKE
Exemples¶
Récupère au maximum les 100 dernières requêtes exécutées dans la session en cours :
select * from table(information_schema.query_history_by_session()) order by start_time;
Récupère au maximum les 100 dernières requêtes exécutées par l’utilisateur actuel (ou par chaque utilisateur d’un entrepôt pour lequel l’utilisateur actuel a le privilège MONITOR) :
select * from table(information_schema.query_history()) order by start_time;
Récupère au maximum les 100 dernières requêtes exécutées au cours de l’heure écoulée par l’utilisateur actuel (ou exécutées par chaque utilisateur sur chaque entrepôt pour lequel l’utilisateur actuel a le privilège MONITOR) :
select * from table(information_schema.query_history(dateadd('hours',-1,current_timestamp()),current_timestamp())) order by start_time;
Récupère toutes les requêtes exécutées par l’utilisateur actuel (ou exécutées par chaque utilisateur sur chaque entrepôt pour lequel l’utilisateur actuel a le privilège MONITOR) dans un bloc de 30 minutes spécifique situé durant les 7 derniers jours :
select * from table(information_schema.query_history( END_TIME_RANGE_START=>to_timestamp_ltz('2017-12-4 12:00:00.000 -0700'), END_TIME_RANGE_END=>to_timestamp_ltz('2017-12-4 12:30:00.000 -0700')));