- Categorias:
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>')
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: .... ...;
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’) ...;
Use LAST_SUCCESSFUL_TASK_GRAPH_RUN_GROUP_ID para gerar um 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}") ...;