0

我是 Snowflake 的新手,正在尝试创建我的第一个任务。

CREATE TASK task_update_table
WAREHOUSE = "TEST"
SCHEDULE = 'USING CRON 0 5 * * * America/Los_Angeles'
AS
INSERT INTO "TEST"."WEB"."SOME_TABLE" (ID,VALUE1,VALUE2,VALUE3)
WITH CTE AS
(SELECT 
ID
,VALUE1
,VALUE2
,VALUE3
FROM OTHER_TABLE
WHERE ID NOT IN (SELECT ID FROM "TEST"."WEB"."SOME_TABLE")
)
SELECT      
ID,VALUE1,VALUE2,VALUE3
FROM CTE

我收到一条消息,任务已成功创建

“任务task_update_table成功创建”

然后我尝试在模式中运行显示任务SHOW TASKS IN "TEST"."WEB"并得到 0 行结果。我究竟做错了什么?为什么任务没有显示?

我在系统管理员下完成了所有这些工作,并且使用了相同的仓库、数据库和模式。

4

1 回答 1

0

show 命令有一些限制可能会阻止您,特别是“SHOW 命令仅返回当前用户的当前角色已被授予必要访问权限的对象”

https://docs.snowflake.com/en/sql-reference/sql/show.html#general-usage-notes

我怀疑该任务是由不同的角色创建的(因此由不同的角色拥有),或者它可能是在不同的数据库或模式中创建的。

要找到它,我建议使用 ACCOUNTADMIN 之类的角色运行以下命令。

show tasks in account;
SELECT *
FROM (
    SELECT *
    FROM   TABLE(RESULT_SCAN(LAST_QUERY_ID())))
WHERE "name" = 'TASK_UPDATE_TABLE';

在 Snowflake 中进行测试和学习时,使用如下命令正确设置会话“上下文”至关重要:

USE ROLE my_role_here;
USE WAREHOUSE my_warehouse_here;
USE DATABASE my_database_here;
USE SCHEMA my_schema_here;

执行这四个命令,或为您的用户设置默认值将极大地帮助您学习。

我希望这会有所帮助...丰富

于 2020-07-02T11:01:31.190 回答