Categorias:

Funções do sistema

SYSTEM$TASK_RUNTIME_INFO

Retorna informações sobre a execução da tarefa atual. Se esta função for chamada fora de uma execução de tarefa, ela falhará com um erro.

Sintaxe

SYSTEM$TASK_RUNTIME_INFO('<arg_name>')
Copy

Argumentos

'arg_name'

Especifica o tipo de informação a ser retornada. Especifique um dos seguintes valores:

Valor

Descrição

'CURRENT_TASK_NAME'

Retorna o nome da tarefa atual.

'CURRENT_ROOT_TASK_NAME'

Retorna o nome da tarefa raiz no gráfico da tarefa atual.

'CURRENT_ROOT_TASK_UUID'

Retorna um identificador universalmente exclusivo (UUID) que representa a tarefa raiz no gráfico da tarefa atual.

'CURRENT_TASK_GRAPH_RUN_GROUP_ID'

Retorna um identificador universalmente exclusivo (UUID) que representa o grupo de execução de gráfico atual.

'CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP'

Retorna o carimbo de data/hora agendado original da tarefa raiz no grupo de execução do gráfico atual.

Para gráficos que são repetidos, o valor retornado é o carimbo de data/hora agendado original da execução inicial do gráfico no grupo atual.

'LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID'

Retorna um identificador universalmente exclusivo (UUID) que representa o último grupo de execução de gráfico bem-sucedido.

O valor é consistente em todo o grupo de execução do gráfico e é determinado quando a tarefa raiz da execução inicial do gráfico é iniciada.

'LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP'

Retorna o carimbo de data/hora agendado original da tarefa raiz no último grupo de execução de gráfico bem-sucedido.

O valor é consistente em todo o grupo de execução do gráfico e é determinado quando a tarefa raiz da execução inicial do gráfico é iniciada.

Retornos

Retorna um STRING ou TEXT com as informações solicitadas.

Exemplos

Use CURRENT_TASK_GRAPH_RUN_GROUP_ID com CURRENT_ROOT_TASK_NAME para depurar e criar um diretório ou arquivo de saída exclusivo:

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

Use CURRENT_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP com LAST_SUCCESSFUL_TASK_GRAPH_ORIGINAL_SCHEDULED_TIMESTAMP para processar dados da fonte de entrada 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

Use LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID para gerar diretório de saída exclusivo e linhas de log:

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