- Catégories :
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>')
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: .... ...;
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’) ...;
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}") ...;