- Catégories :
TASK_HISTORY¶
Cette fonction de table peut être utilisée pour interroger l’historique de l’utilisation des tâches dans une plage de dates spécifiée. La fonction renvoie l’historique d’utilisation des tâches pour l’ensemble de votre compte Snowflake ou pour une tâche spécifiée.
Note
Cette fonction renvoie l’activité de la tâche au cours des 7 derniers jours ou de la prochaine exécution programmée au cours des 8 prochains jours.
Syntaxe¶
TASK_HISTORY(
[ SCHEDULED_TIME_RANGE_START => <constant_expr> ]
[, SCHEDULED_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <integer> ]
[, TASK_NAME => '<string>' ]
[, ERROR_ONLY => { TRUE | FALSE } ] )
Arguments¶
Tous les arguments sont facultatifs.
SCHEDULED_TIME_RANGE_START => constant_expr
, .SCHEDULED_TIME_RANGE_END => constant_expr
Intervalle de temps (au format TIMESTAMP_LTZ), au cours des 7 derniers jours, pendant lequel l’exécution de la tâche a été programmée.
Si
SCHEDULED_TIME_RANGE_END
n’est pas spécifié, la fonction renvoie les tâches déjà terminées, en cours d’exécution ou planifiées ultérieurement.Si
SCHEDULED_TIME_RANGE_END
vaut CURRENT_TIMESTAMP, la fonction renvoie les tâches déjà terminées ou en cours d’exécution. Notez qu’une tâche exécutée immédiatement avant l’heure actuelle peut toujours être identifiée comme étant planifiée.Pour interroger uniquement les tâches déjà terminées ou en cours d’exécution, incluez
WHERE query_id IS NOT NULL
en tant que filtre. La colonne QUERY_ID de la sortie TASK_HISTORY est renseignée uniquement au démarrage d’une tâche.
Note
Si aucune heure de début ou de fin n’est spécifiée, les tâches les plus récentes sont renvoyées, jusqu’à la valeur RESULT_LIMIT spécifiée.
Si l’intervalle de temps ne tombe pas dans les sept derniers jours, une erreur est renvoyée.
RESULT_LIMIT => integer
Un nombre spécifiant le nombre maximum de lignes renvoyé par la fonction.
Si le nombre de lignes correspondantes est supérieur à cette limite, les exécutions de tâches avec l’horodatage le plus récent sont renvoyées, jusqu’à la limite spécifiée.
Plage : de
1
à10000
Par défaut :
100
.TASK_NAME => string
Une chaîne insensible à la casse spécifiant une tâche. Seuls les noms de tâches non qualifiés sont pris en charge. Seules les exécutions de la tâche spécifiée sont renvoyées. Notez que si plusieurs tâches portent le même nom, la fonction renvoie l’historique de chacune de ces tâches.
ERROR_ONLY => TRUE | FALSE
Lorsqu’elle est définie sur TRUE, cette fonction renvoie uniquement les exécutions de tâches qui ont échoué ou qui ont été annulées.
Notes sur l’utilisation¶
Renvoie les résultats uniquement pour le rôle ACCOUNTADMIN , le propriétaire de la tâche (c’est-à-dire le rôle doté du privilège OWNERSHIP sur la tâche) ou un rôle disposant du privilège global MONITOR EXECUTION. Notez qu’à moins qu’un rôle avec le privilège MONITOR EXECUTION ne dispose également du privilège USAGE sur la base de données et le schéma qui stockent la tâche, les valeurs DATABASE_NAME et SCHEMA_NAME dans la sortie sont NULL.
Cette fonction renvoie un maximum de 10 000 lignes, définies dans la valeur de l’argument
RESULT_LIMIT
. La valeur par défaut est100
. Pour éviter cette limitation, utilisez la vue TASK_HISTORY (Account Usage).Notez que lorsque la fonction TASK_HISTORY est interrogée, ses arguments de nom de tâche, d’intervalle de temps et de limite de résultat sont appliqués d’abord, suivis des clauses WHERE et LIMIT, respectivement, si elles sont spécifiées. En outre, la fonction TASK_HISTORY renvoie les enregistrements dans l’ordre SCHEDULED_TIME décroissant. Les tâches qui sont terminées (c’est-à-dire avec un état SUCCEEDED, FAILED ou CANCELLED) ont tendance à être programmées plus tôt, de sorte qu’elles sont généralement renvoyées plus tard dans l’ordre dans les résultats de la recherche.
En pratique, si vous avez de nombreuses tâches en cours sur votre compte, les résultats renvoyés par la fonction pourraient inclure moins de tâches terminées que prévu, ou que des tâches programmées, surtout si la valeur RESULT_LIMIT est relativement faible. Pour interroger l’historique des tâches déjà exécutées, Snowflake recommande d’utiliser une combinaison des arguments
SCHEDULED_TIME_RANGE_START => constant_expr
et/ouSCHEDULED_TIME_RANGE_END => constant_expr
.Lors de l’appel d’une fonction de 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.
Cette fonction peut renvoyer toutes les exécutions exécutées au cours des sept derniers jours ou la prochaine exécution planifiée au cours des huit jours suivants.
Sortie¶
La fonction renvoie les colonnes suivantes :
Nom de la colonne |
Type de données |
Description |
---|---|---|
QUERY_ID |
TEXT |
ID de l’instruction SQL exécutée par la tâche. Peut être associé à la vue QUERY_HISTORY pour obtenir des détails supplémentaires sur l’exécution de l’instruction ou de la procédure stockée. |
NAME |
TEXT |
Nom de la tâche. |
DATABASE_NAME |
TEXT |
Nom de la base de données contenant la tâche. |
SCHEMA_NAME |
TEXT |
Nom du schéma contenant la tâche. |
QUERY_TEXT |
TEXT |
Texte de l’instruction SQL. |
CONDITION_TEXT |
TEXT |
Texte de la condition WHEN que la tâche évalue lors de la détermination de l’exécution. |
STATE |
TEXT |
Statut de la tâche :
|
ERROR_CODE |
NUMBER |
Code d’erreur, si l’instruction a renvoyé une erreur. |
ERROR_MESSAGE |
TEXT |
Message d’erreur si l’instruction a renvoyé une erreur. |
SCHEDULED_TIME |
TIMESTAMP_LTZ |
Heure à laquelle la tâche est/était programmée pour commencer à s’exécuter. Notez que nous faisons de notre mieux pour assurer une précision absolue, mais nous garantissons uniquement que les tâches ne s’exécutent pas avant leur heure programmée. |
INSTANCE_ID |
NUMBER |
Identificateur interne / généré par le système pour la tâche. |
QUERY_START_TIME |
TIMESTAMP_LTZ |
Heure à laquelle l’exécution de la requête dans la définition de la tâche a commencé, ou NULL si SCHEDULED_TIME est dans le futur ou si l’exécution planifiée actuelle n’a pas encore commencé. Cet horodatage s’aligne sur l’heure de début de la requête renvoyée par QUERY_HISTORY. |
NEXT_SCHEDULED_TIME |
TIMESTAMP_LTZ |
Heure à laquelle la tâche autonome ou racine (dans un DAG de tâches) doit ensuite commencer à s’exécuter, en supposant que l’exécution en cours de la tâche autonome ou du DAG démarré à l’heure SCHEDULED_TIME se termine à temps. |
COMPLETED_TIME |
TIMESTAMP_LTZ |
Heure de fin de la tâche ou NULL si SCHEDULED_TIME est dans le futur ou si la tâche est toujours en cours d’exécution. |
ROOT_TASK_ID |
TEXT |
Identificateur unique de la tâche racine dans un DAG. Cet ID correspond à la valeur de la colonne ID dans la sortie SHOW TASKS pour la même tâche. |
GRAPH_VERSION |
NUMBER |
Entier identifiant la version du DAG qui a été exécuté ou doit être exécuté. Chaque augmentation incrémentielle de la valeur représente une ou plusieurs modifications des tâches dans le DAG. Si la tâche racine est recréée (à l’aide de CREATE OR REPLACE TASK), le numéro de version redémarre à partir de 1. |
RUN_ID |
NUMBER |
Heure à laquelle la tâche autonome ou racine dans un DAG est/devait initialement démarrer. Le format est l’heure de l’époque (en millisecondes). La combinaison des valeurs ROOT_TASK_ID et RUN_ID identifie une exécution spécifique d’un DAG. . L’heure planifiée d’origine se réfère à de rares cas où le système peut replanifier la même tâche pour qu’elle s’exécute à un autre moment pour la réessayer ou rééquilibrer la charge. Si cela se produit, RUN_ID affiche l’heure d’exécution planifiée d’origine et SCHEDULED_TIME affiche l’heure d’exécution reprogrammée. |
RETURN_VALUE |
TEXT |
Valeur définie pour le prédécesseur dans un DAG. La valeur de retour est définie explicitement par le prédécesseur en appelant la fonction SYSTEM$SET_RETURN_VALUE. |
SCHEDULED_FROM |
TEXT |
Mécanisme qui a provoqué l’exécution de la tâche : SCHEDULE indique que l’exécution de la tâche a été lancée par la planification dans la définition de la tâche. EXECUTE TASK indique que l’exécution de la tâche a été initiée par l’exécution d’une instruction EXECUTE TASK. Pour les exécutions de tâches enfant dans un DAG, la colonne renvoie la même valeur que l’exécution de la tâche racine. |
ATTEMPT_NUMBER |
NUMBER |
Entier représentant le nombre de tentatives d’exécution de cette tâche. Initialement un. |
CONFIG |
TEXT |
Affiche la configuration du niveau graphique si elle est définie pour la tâche racine, sinon affiche NULL. |
QUERY_HASH |
TEXT |
La valeur de hachage calculée sur la base du texte SQL canonisé. 1 |
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. 1 |
QUERY_PARAMETERIZED_HASH_VERSION |
NUMBER |
La version de la logique utilisée pour calculer |
- 1(1,2,3,4)
Cette colonne n’est présente que lorsque le bundle de changements de comportement 2023_06 est activé. Cette colonne fait partie de la fonction de hachage de la requête.
Exemples¶
Récupérer les 100 dernières exécutions de tâches (terminées, en cours ou planifiées ultérieurement) dans le compte. Notez que le nombre maximum de lignes renvoyées par la fonction est limité à 100 par défaut. Pour changer le nombre de lignes renvoyées, modifiez la valeur de l’argument RESULT_LIMIT :
select * from table(information_schema.task_history()) order by scheduled_time;
Récupérer l’historique d’exécution des tâches du compte dans un bloc de temps spécifié de 30 minutes au cours des 7 derniers jours :
select * from table(information_schema.task_history( scheduled_time_range_start=>to_timestamp_ltz('2018-11-9 12:00:00.000 -0700'), scheduled_time_range_end=>to_timestamp_ltz('2018-11-9 12:30:00.000 -0700')));
Récupérer les 10 dernières exécutions d’une tâche spécifiée (terminée, en cours ou planifiée ultérieurement) planifiée au cours de la dernière heure :
select * from table(information_schema.task_history( scheduled_time_range_start=>dateadd('hour',-1,current_timestamp()), result_limit => 10, task_name=>'MYTASK'));Note
Pour récupérer uniquement les tâches terminées ou en cours d’exécution, filtrez la requête à l’aide de
WHERE query_id IS NOT NULL
. Notez que ce filtre est appliqué après queRESULT_LIMIT
a déjà réduit les résultats renvoyés. Par conséquent, la requête pourrait renvoyer 9 tâches si la tâche 1 était planifiée mais n’avait pas encore démarré.