- Categories:
CURRENT_TASK_GRAPHS¶
Returns the status of a graph run that is currently scheduled or is executing. A graph is currently defined as a single scheduled task or a task graph composed of a scheduled root task and one or more child tasks. For the purposes of this function, root task refers to either the single scheduled task or the root task in a task graph.
This function returns details for graph runs that are currently executing or are next scheduled to run within the next 8 days. To retrieve the details for graph runs that have completed in the past 60 minutes, query the COMPLETE_TASK_GRAPHS table function.
The function returns the graph run details for your entire Snowflake account or a specified root task.
Syntax¶
CURRENT_TASK_GRAPHS(
[ RESULT_LIMIT => <integer> ]
[, ROOT_TASK_NAME => '<string>' ] )
Arguments¶
All the arguments are optional.
RESULT_LIMIT => integer
A number specifying the maximum number of rows returned by the function. Note that the results are returned in descending SCHEDULED_TIME order. If the number of matching rows is greater than the result limit, the graph executions with the most recent scheduled timestamp are returned, up to the specified limit.
Range:
1
to10000
Default:
1000
ROOT_TASK_NAME => string
A case-insensitive string specifying the name of the root task. Only non-qualified task names are supported. Only graph runs for the specified task are returned. Note that if multiple tasks have the same name, the function returns the graph runs for each of these tasks.
Usage notes¶
Returns results only for the ACCOUNTADMIN role, the task owner (i.e. the role with the OWNERSHIP privilege on the task) or a role with the global MONITOR EXECUTION privilege. Note that unless a role with the MONITOR EXECUTION privilege also has the USAGE privilege on the database and schema that store the task, the DATABASE_NAME and SCHEMA_NAME values in the output are NULL.
When the CURRENT_TASK_GRAPHS function is queried, its task name and result limit arguments are applied first followed by the WHERE and LIMIT clause, respectively, if specified. In addition, the CURRENT_TASK_GRAPHS function returns records in descending SCHEDULED_TIME order.
In practice, if you have many task graphs running in your account, the results returned by the function could include only scheduled tasks, especially if the RESULT_LIMIT value is relatively low.
When calling an Information Schema table function, the session must have an INFORMATION_SCHEMA schema in use or the function name must be fully-qualified. For more details, see Snowflake Information Schema.
Output¶
The function returns the following columns:
Column Name |
Data Type |
Description |
---|---|---|
ROOT_TASK_NAME |
TEXT |
Name of the root task. |
DATABASE_NAME |
TEXT |
Name of the database that contains the graph. |
SCHEMA_NAME |
TEXT |
Name of the schema that contains the graph. |
STATE |
TEXT |
State of the graph run:
Note that if the state of the root task run is SKIPPED, the function does not return a row for the run. |
SCHEDULED_FROM |
TEXT |
One of:
For runs of child tasks in a task graph, the column returns the same value as the root task run. |
FIRST_ERROR_TASK_NAME |
TEXT |
Name of the first task in the graph that returned an error; returns NULL if no task produced an error. |
FIRST_ERROR_CODE |
NUMBER |
Error code of the error returned by the task named in FIRST_ERROR_TASK_NAME; returns NULL if no task produced an error. |
FIRST_ERROR_MESSAGE |
TEXT |
Error message of the error returned by the task named in FIRST_ERROR_TASK_NAME; returns NULL if no task produced an error. |
SCHEDULED_TIME |
TIMESTAMP_LTZ |
Time when the root task is/was scheduled to start running. Note that we make a best effort to ensure absolute precision, but only guarantee that tasks do not execute before the scheduled time. |
QUERY_START_TIME |
TIMESTAMP_LTZ |
Time when the query in the root task definition started to run. This timestamp aligns with the start time for the query returned by QUERY_HISTORY. |
NEXT_SCHEDULED_TIME |
TIMESTAMP_LTZ |
Time when the standalone or root task (in a task graph) is next scheduled to start running, assuming the current run of the standalone task or task graph started at the SCHEDULED_TIME time completes in time. |
ROOT_TASK_ID |
TEXT |
Unique identifier for the root task in a task graph. This ID matches the ID column value in the SHOW TASKS output for the same task. |
GRAPH_VERSION |
NUMBER |
Integer identifying the version of the task graph that was run, or is scheduled to be run. |
RUN_ID |
NUMBER |
Time when the standalone or root task in a task graph is/was originally scheduled to start running. Format is epoch time (in milliseconds). . . Original scheduled time refers to rare instances when the system might reschedule the same task to run at a different time to retry it or rebalance the load. If that happens, RUN_ID shows the original scheduled run time and SCHEDULED_TIME shows the rescheduled run time. . . Note that RUN_ID may not be a unique identifier for the current task/graph run before retry. You can use GRAPH_RUN_GROUP_ID column as a replacement for RUN_ID. |
ATTEMPT_NUMBER |
NUMBER |
Integer representing the number of attempts to run this task. Initially one. |
CONFIG |
TEXT |
Displays the graph level configuration used during the graph run if explicitly set. Otherwise displays NULL. |
GRAPH_RUN_GROUP_ID |
NUMBER |
Identifier for the graph run. When a graph run has multiple task runs, each task run will show the same GRAPH_RUN_GROUP_ID. The combination of GRAPH_RUN_GROUP_ID, and ATTEMPT_NUMBER can be used to uniquely identify a graph run. |
BACKFILL_INFO |
OBJECT |
Reserved for future use. The returned value for all rows is NULL. |
Examples¶
Retrieve the 1000 most recent graph runs (still running, or scheduled in the future) in the account. Note that the maximum number of rows returned by the function is limited to 1000 by default. To change the number of rows returned, modify the RESULT_LIMIT argument value:
select * from table(information_schema.current_task_graphs()) order by scheduled_time;
Retrieve the 10 most recent graph runs for a specified task (still running or scheduled in the future):
select * from table(information_schema.current_task_graphs( result_limit => 10, root_task_name=>'MYTASK'));