首页 > 解决方案 > 在计划任务中调用它时,雪花一个工作过程没有被成功执行

问题描述

我在雪花上有一个完全运行的过程,调用它时完全没有错误:

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: 2021-01-27 16:00:06.198 -0800

COMPLETED_TIME: 2021-01-27 16:00:24.902 -0800

返回值:空

DONE实际上,当所有内容都已成功添加/更新时,该过程将返回一个字符串。

运行时:

show tasks;

过程的状态是started

为什么在使用任务调用时不执行该过程?

有新数据从 Azure 上传到暂存文件,因此该过程应检测新提交并启动插入过程。

标签: sqlstored-procedurestasksnowflake-cloud-data-platform

解决方案


如果您在任务之外运行该过程,则必须使用任务所有者角色来确保正确测试。如果您的过程在具有任务所有者权限的任务之外工作,它也应该在任务内工作。

所以...我认为您的访问/权限管理存在问题。任务执行的 SQL 语句只能对角色具有所需权限的 Snowflake 对象进行操作。--> 您必须将您的过程中的对象的更多权限授予您的任务所有者角色。

在此处查看更多信息:https ://docs.snowflake.com/en/sql-reference/sql/create-task.html


推荐阅读