您如何在 Snowflake 中获取任务的 DDL?

How do you get DDL of a task in Snowflake?

在 Snowflake 中,您可以像这样使用 get_ddl 函数来获取表、视图和过程的 ddl:

select get_ddl('view', 'SOME_VIEW_I_CREATED')

但是你似乎不能用任务来做到这一点。

有什么方法可以轻松获取snowflake任务的DDL吗?

注意:雪花中的任务现在支持 get_ddl。

注意:这是一个旧答案。 get_ddl() 函数现在支持任务。

这是一个可以生成您正在寻找的 DDL 的脚本。它并不完美,但到目前为止它适用于我的用例。

show tasks like '%';

SELECT concat('CREATE OR REPLACE TASK ',"name", chr(10)
              ,'    warehouse = ', "warehouse", chr(10)
              , case when "predecessor" is null then concat('    ,schedule = ''', "schedule",'''', chr(10)) else '' end
              ,'    ,STATEMENT_TIMEOUT_IN_SECONDS = 14400', chr(10)
              ,'    ,comment = ''', "comment",'''', chr(10)
              , case when "predecessor" is not null then concat('after ', "predecessor", chr(10)) else '' end
              ,'as',  chr(10)
              , "definition",';'
              ,chr(10),'alter task ',"name",' resume;') as T
FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));

至少从 2019 年 12 月 24 日开始(当我发现它时),您现在可以这样做:

select get_ddl('task', 'demo_task')

为了运行这个,你必须有以下权限:

(USAGE on db & OWNERSHIP on schema & Any Permission on task) OR
(USAGE on db & USAGE on schema & Any Permission on task)