Task
Snowflake Docs - CREATE TASK
Snowflake Docs - ALTER TASK
Usage
- A Task is made up of 2 parts
- YAML Configuration
- SQL code with the task execution code
- All tasks must live inside a [DATABASE]/[SCHEMA]/TASKS folder and contain both a .yml file and .sql file with the same name.
- Object name = name of the yml config file within [DATABASE]/[SCHEMA]/TASKS folder
Snowflake Attributes
Parameter |
Description |
|---|---|
WAREHOUSE |
(String) - Optional |
USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE |
(String) -
|
SCHEDULE |
(String) - Optional |
ALLOW_OVERLAPPING_EXECUTION |
(Bool) - Optional |
PREDECESSORS |
(List[String]) - Optional |
ERROR_INTEGRATION |
(String) - Optional |
CONDITION |
(String) - Optional |
USER_TASK_TIMEOUT_MS |
(Int) - Optional |
SUSPEND_TASK_AFTER_NUM_FAILURES |
(Int) - Optional |
COMMENT |
(String) - Optional |
OWNER |
(String) - Optional
|
TAGS |
({KEY:VALUE}) - Optional |
GRANTS |
({KEY:VALUE}) - Optional |
ENABLED |
(Bool) - Optional
|
Optional Parameter Defaults - if omitted, Snowflake defaults for parameters are used, just like creating an object manually.
Deployment attributes
Parameter |
Description |
|---|---|
DEPLOY_ENV |
(List) - Optional
|
DEPLOY_LOCK |
(Bool) - Optional
|
Folder Structure
Configuration:
snowflake/data/[database name]/[schema name]/TASKS/[task name].yml
Policy
snowflake/data/[database name]/[schema name]/TASKS/[task name].sql
Example Structure
snowflake/data/CONTROL/AUTOMATION/TASKS/RUN_MONTHLY_PROCESS.yml
snowflake/data/CONTROL/AUTOMATION/TASKS/RUN_MONTHLY_PROCESS.sql
snowflake/data/CONTROL/AUTOMATION/TASKS/TAG_COLUMNS.yml
snowflake/data/CONTROL/AUTOMATION/TASKS/TAG_COLUMNS.sql
This specifies the metadata for 2 tasks named "RUN_MONTHLY_PROCESS" and "TAG_COLUMNS" within the CONTROL.AUTOMATION schema, each with their own yml config file & sql based on the task name
Samples
Config File - Serverless Task
WAREHOUSE:
USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE: XSMALL
SCHEDULE: USING CRON 0 * * * * America/Los_Angeles
ALLOW_OVERLAPPING_EXECUTION: true
PREDECESSORS:
- {{ref('CODE__AUTOMATION__SOME_OTHER_TASK')}}
- {{ref('CODE__AUTOMATION__ANOTHER_TASK')}}
ERROR_INTEGRATION:
OWNER: INSTANCEADMIN
COMMENT: This is a demo automation task
ENABLED: true
CONDITION:
USER_TASK_TIMEOUT_MS: 600
SUSPEND_TASK_AFTER_NUM_FAILURES: 5
TAGS:
- {{ref('CONTROL__GOVERNANCE__ENV')}}: {{env}}
GRANTS:
- {{role('SOME_ROLE')}}: MONITOR, OPERATE
Code file with .sql extension
BEGIN
ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';
SELECT CURRENT_TIMESTAMP;
END