Catégories :

Fonctions système

SYSTEM$TASK_RUNTIME_INFO

Renvoie des informations sur l’exécution de la tâche en cours. Si cette fonction est appelée en dehors d’une exécution de tâche, elle échoue avec une erreur.

Syntaxe

SYSTEM$TASK_RUNTIME_INFO('<arg_name>')
Copy

Arguments

'arg_name'

Spécifie les types d’informations à renvoyer. Vous pouvez spécifier l’une des valeurs suivantes :

Valeur

Description

'CURRENT_TASK_NAME'

Renvoie le nom de la tâche actuelle.

'CURRENT_ROOT_TASK_NAME'

Renvoie le nom de la tâche racine dans le graphique des tâches actuel.

'CURRENT_ROOT_TASK_UUID'

Renvoie un identificateur unique universel (UUID) qui représente la tâche racine dans le graphique de tâches actuel.

'CURRENT_TASK_GRAPH_RUN_GROUP_ID'

Renvoie un identificateur unique universel (UUID) qui représente le groupe d’exécution du graphique actuel.

'CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP'

Renvoie l’horodatage planifié d’origine de la tâche racine dans le groupe d’exécution du graphique actuel.

Pour les graphiques qui sont réessayés, la valeur renvoyée est l’horodatage planifié d’origine de l’exécution du graphique dans le groupe actuel.

'LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID'

Renvoie un identificateur unique universel (UUID) qui représente le dernier groupe d’exécution du graphique réussi.

La valeur est cohérente dans tout le groupe d’exécution du graphique et est déterminée au moment où la tâche racine de l’exécution de graphique initiale démarre.

'LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP'

Renvoie l’horodatage planifié d’origine de la tâche racine dans le dernier groupe d’exécution du graphique réussie.

La valeur est cohérente dans tout le groupe d’exécution du graphique et est déterminée au moment où la tâche racine de l’exécution de graphique initiale démarre.

Renvoie

Renvoie STRING ou TEXT avec les informations demandées.

Exemples

Utilisez CURRENT_TASK_GRAPH_RUN_GROUP_ID avec CURRENT_ROOT_TASK_NAME pour déboguer et créer un répertoire ou un fichier de sortie unique :

CREATE OR REPLACE TASK my_task ...
  AS
  ...

  -- Inside Python UDF

  query_result = session.sql("""select
        SYSTEM$TASK_RUNTIME_INFO('CURRENT_ROOT_TASK_NAME')
        root_name,
        SYSTEM$TASK_RUNTIME_INFO('CURRENT_TASK_GRAPH_RUN_GROUP_ID')
        run_id""").collect()
  current_root_task_name, current_graph_run_id = result.ROOT_NAME, result.RUN_ID

  -- Logging information here

  logger.debug(f"start training for {current_root_task_name} at run {current_graph_run_id}")

  -- Create a unique output directory to store intermediate information

  output_dir_name = f"{current_root_task_name}/{current_graph_run_id}/preprocessing.out"
  with open(output_dir_name, "rw+") as f:
    ....
...;
Copy

Utilisez CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP avec LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP pour traiter les données de la source d’entrée de streaming :

CREATE OR REPLACE TASK my_task ...
  AS
  ...
  INSERT INTO my_output_table
    SELECT * FROM my_source_table
      WHERE TRUE
        ...
        AND TIMESTAMP BETWEEN
          COALESCE(
            SYSTEM$TASK_RUNTIME_INFO(‘LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP’),
            '2023-07-01'
          ) AND SYSTEM$TASK_RUNTIME_INFO(‘CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP’)
   ...;
Copy

Utilisez LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID pour générer un répertoire de sortie unique et des lignes de journal :

CREATE OR REPLACE TASK my_task ...
  AS
  ...

  -- Inside Python UDF

  query_result = session.sql("select
      SYSTEM$TASK_RUNTIME_INFO('CURRENT_ROOT_TASK_NAME') root_name, SYSTEM$TASK_RUNTIME_INFO('LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID') last_run_id").collect()
  current_root_task_name, last_graph_run_id = result.ROOT_NAME,result.LAST_RUN_ID
  logger.log(f"graph name: {current_root_task_name}, last successful run: {last_graph_run_id}")
  ...;
Copy