- Kategorien:
SYSTEM$TASK_RUNTIME_INFO¶
Gibt Informationen zu den aktuellen Aufgabenausführungen zurück. Wenn diese Funktion außerhalb einer Aufgabenausführung aufgerufen wird, schlägt sie mit einem Fehler fehl.
Syntax¶
SYSTEM$TASK_RUNTIME_INFO('<arg_name>')
Argumente¶
'arg_name'
Gibt den Typ der Information an, die zurückgegeben werden soll. Sie können einen der folgenden Werte angeben:
Wert
Beschreibung
'CURRENT_TASK_NAME'
Gibt den Namen der aktuellen Aufgabe zurück.
'CURRENT_ROOT_TASK_NAME'
Gibt den Namen der Stammaufgabe im aktuellen Task-Graphen zurück.
'CURRENT_ROOT_TASK_UUID'
Gibt einen universell eindeutigen Identifikator (UUID) zurück, der die Stammaufgabe im aktuellen Task-Graphen repräsentiert.
'CURRENT_TASK_GRAPH_RUN_GROUP_ID'
Gibt einen universell eindeutigen Identifikator (UUID) zurück, der die aktuelle Task-Graph-Ausführungsgruppe repräsentiert.
'CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP'
Gibt den ursprünglichen geplanten Zeitstempel der Stammaufgabe in der aktuellen Task-Graph-Ausführungsgruppe zurück.
Bei Task-Graphen, deren Ausführung erneut versucht wird, ist der zurückgegebene Wert der ursprüngliche geplante Zeitstempel der ersten Task-Graph-Ausführung in der aktuellen Gruppe.
'LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID'
Gibt einen universell eindeutigen Identifikator (UUID) zurück, der die letzte erfolgreiche Task-Graph-Ausführungsgruppe repräsentiert.
Der Wert ist für die gesamte Task-Graph-Ausführungsgruppe einheitlich und wird beim Starten der Stammaufgabe der ersten Task-Graph-Ausführung festgelegt.
'LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP'
Gibt den ursprünglichen geplanten Zeitstempel für die Stammaufgabe der letzten erfolgreichen Task-Graph-Ausführungsgruppe zurück.
Der Wert ist für die gesamte Task-Graph-Ausführungsgruppe einheitlich und wird beim Starten der Stammaufgabe der ersten Task-Graph-Ausführung festgelegt.
Rückgabewerte¶
Gibt einen STRING- oder TEXT-Wert mit den angeforderten Informationen zurück.
Beispiele¶
Verwenden Sie CURRENT_TASK_GRAPH_RUN_GROUP_ID mit CURRENT_ROOT_TASK_NAME zur Fehlersuche und zum Erstellen eines eindeutigen Ausgabeverzeichnisses oder einer eindeutigen Ausgabedatei:
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: .... ...;
Verwenden Sie CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP mit LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP, um Daten aus einer Streaming-Eingabequelle zu verarbeiten:
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’) ...;
Verwenden Sie LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID, um ein eindeutiges Ausgabeverzeichnis und eindeutige Protokollzeilen zu generieren:
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}") ...;