Kategorien:

Systemfunktionen

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

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

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’)
   ...;
Copy

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}")
  ...;
Copy