我在snowflake上有一个完全运行的过程,调用它时没有任何错误:
call ADD_MONTHLY_OBSERVATION_VALUES('@test_azure_blob_stg/Monthly_Report.csv', 'GENERIC_CSV_FORMAT');
我想把这个命令包装成一个任务,并把它安排到一个特定的时间,像这样:
CREATE OR REPLACE TASK ADD_MONTHLY_OBSERVATION_VALUES_TASK
WAREHOUSE = 'DEV_WH'
TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24'
//SCHEDULE = 'USING CRON 0 6-7 * * SUN,MON,TUE,WED,THU Asia/Dacca'
//Schedule for each minute
SCHEDULE = 'USING CRON * * * * * UTC'
AS
call ADD_MONTHLY_OBSERVATION_VALUES('@test_azure_blob_stg/Monthly_Report.csv', 'GENERIC_CSV_FORMAT');
然后我重新开始工作:
ALTER TASK ADD_MONTHLY_OBSERVATION_VALUES_TASK RESUME;
当我检查任务的历史记录时:
状态:成功
ERROR_CODE:零
ERROR_MESSAGE:零
QUERY_START_TIME: 20121-01-27 16:00:06.198 -0800
COMPLETED_TIME: 2021-01-27 16:00:24.902 -0800
RETURN_VALUE:零
实际上,当所有内容都成功添加/更新后,过程将返回一个字符串DONE
。
运行时:
show tasks;
过程状态为started
。
为什么使用任务调用过程时没有被执行?
有新的数据从Azure上传到暂存文件,所以过程应该检测到新的提交并开始插入进程。
如果您在任务之外运行过程,您必须使用任务所有者角色来确保正确的测试。如果您的过程在具有任务所有者权限的任务外工作,则它也应该在任务内工作。
所以…我猜你的访问/权限管理有问题。任务执行的SQL语句只能对角色拥有所需权限的雪花对象进行操作。——比;您必须将过程中对象的更多权限授予任务所有者角色。
查看更多信息:https://docs.snowflake.com/en/sql-reference/sql/create-task.html