0

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

select get_ddl('view', 'SOME_VIEW_I_CREATED')

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

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

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

4

2 回答 2

0

至少在 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)
于 2019-12-25T06:17:39.730 回答
0

注意:这是一个旧答案。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-20T01:03:16.740 回答