Catégories :

Information Schema , Fonctions de table

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 } ] )
Copy

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 est 100. 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/ou SCHEDULED_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 :

  • SCHEDULED : exécution planifiée.

  • EXECUTING : en cours d’exécution.

  • SUCCEEDED : exécution réussie.

  • FAILED : exécution échouée.

  • FAILED_AND_AUTO_SUSPENDED : la tâche a échoué et a été automatiquement suspendue.

  • CANCELLED : exécution annulée.

  • SKIPPED : indique qu’une exécution de tâche a commencé, mais que le paramètre facultatif WHEN de la définition de la tâche a renvoyé une valeur FALSE ; par conséquent, l’exécution n’a pas repris l’entrepôt (si la tâche utilise des ressources de calcul gérées par le client) ou exécuté le code SQL de la définition 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.

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). . . 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. . . Veuillez noter que RUN_ID peut ne pas être un identificateur unique pour la tâche/le graphique en cours d’exécution avant la nouvelle tentative. Vous pouvez utiliser la colonne GRAPH_RUN_GROUP_ID pour remplacer RUN_ID.

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_HASH. 1

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 QUERY_PARAMETERIZED_HASH. 1

GRAPH_RUN_GROUP_ID

NUMBER

Identificateur de l’exécution du graphique. Lorsqu’un graphique comporte plusieurs tâches, chacune d’entre elles affiche le même GRAPH_RUN_GROUP_ID. La combinaison de GRAPH_RUN_GROUP_ID, et ATTEMPT_NUMBER peut être utilisée pour identifier de manière unique l’exécution d’un graphique.

BACKFILL_INFO

OBJECT

Reserved for future use. The returned value for all rows is NULL.

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;
Copy

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')));
Copy

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'));
Copy

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 que RESULT_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é.