【问题标题】:Is it valid to call Stored procedure after WHEN in snowflake TASK在雪花任务中的WHEN之后调用存储过程是否有效
【发布时间】:2021-10-12 21:26:54
【问题描述】:

我试图在 WHEN

之后创建雪花任务时调用存储过程
CREATE OR REPLACE TASK SCHEMA.TASK1
  warehouse = '..'
  schedule = '5 minute'
WHEN
    CALL DB.SCHEMA.CHECK_STATUS('arg1');
as
CALL DB.SCHEMA.ETL('arg1');

这是有效的,

WHEN
    CALL DB.SCHEMA.CHECK_STATUS('arg1');

如果是,我们如何实现这一点以在任务中返回 truefalse。 雪花文档链接 - https://docs.snowflake.com/en/sql-reference/sql/create-task.html#examples

我收到以下错误

SQL 编译错误:位置 9 处的语法错误第 5 行意外 '数据库'。

【问题讨论】:

  • 我会考虑将 CHECK_STATUS 和 ETL 存储过程合并到单个 SP 中。如果不满足 CHECK_STATUS 条件,则退出 SP。如果满足,则继续 ETL 部分。尽管您可以使用 SYSTEM$STREAM_HAS_DATA 来避免运行 ETL,但仅运行 CHECK_STATUS 将需要运行仓库。换句话说,它不会通过将检查和 ETL 操作分开来保存任何内容。

标签: snowflake-cloud-data-platform


【解决方案1】:

鉴于CREATE TASK 文档。

目前,仅支持 SYSTEM$STREAM_HAS_DATA 函数在 WHEN 参数中进行评估。

【讨论】:

  • 你知道任何替代方案吗?实现上述场景?
  • 您可以创建一个存储过程来检查您的条件:如果满足条件,它将启动下一个查询。然后,您可以在您的 TASK 中调用此过程:如果不满足条件,则它将停在那里。
猜你喜欢
  • 2022-11-12
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
相关资源
最近更新 更多