0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake タスクで SYSTEM$SET_RETURN_VALUE を複数回呼び出した場合とエラー時の戻り値を検証してみた

0
Posted at

概要

Snowflake のSYSTEM$SET_RETURN_VALUEについて、ちょっとした検証結果を共有します。

SYSTEM$SET_RETURN_VALUEは、タスクの戻り値を設定するためのシステム関数です。設定した値はタスク履歴(TASK_HISTORY)のRETURN_VALUE列で確認できるほか、後続タスクからSYSTEM$GET_PREDECESSOR_RETURN_VALUEで参照できます。

本記事では、次の 2 つのケースで、最終的にどの値が戻り値として残るのかを確認しました。

  1. 1 つのタスク内でSYSTEM$SET_RETURN_VALUEを複数回呼び出した場合
  2. SYSTEM$SET_RETURN_VALUEを呼び出した後、処理の途中でエラーとなった場合

検証の結果、1 では最後に設定した値が、2 ではエラー発生前に最後に設定した値が戻り値として表示されました。処理の進捗に合わせて戻り値を更新しておけば、タスクが失敗した際にどのステップまで進んでいたかを把握する用途にも使えそうです。

事前準備

データベースとスキーマを作成

CREATE OR REPLACE DATABASE TASK_TEST_DB;
CREATE OR REPLACE SCHEMA TASK_TEST_DB.TEST_SCHEMA;
USE DATABASE TASK_TEST_DB;
USE SCHEMA TEST_SCHEMA;

image.png

検証

SET_RETURN_VALUEを複数回指定した場合

SYSTEM$SET_RETURN_VALUEを 3 回呼び出すタスクを作成します。

CREATE OR REPLACE TASK TASK_RETURN_SUCCESS
    WAREHOUSE = COMPUTE_WH
AS
BEGIN
    CALL SYSTEM$SET_RETURN_VALUE('STEP_1');

    SELECT 1;

    CALL SYSTEM$SET_RETURN_VALUE('STEP_2');

    SELECT 2;

    CALL SYSTEM$SET_RETURN_VALUE('SUCCESS');
END;

image.png

後続タスクを作成します。

CREATE OR REPLACE TASK TASK_RETURN_SUCCESS_AFTER
    WAREHOUSE = COMPUTE_WH
    AFTER TASK_RETURN_SUCCESS
AS
BEGIN
    SELECT 1;
END;

image.png

タスクを実行します。

EXECUTE TASK TASK_RETURN_SUCCESS;

最後に設定した値であるSUCCESSが表示されました。

image.png

途中でエラーとなった場合

STEP_2を設定した後に、ゼロ除算で意図的にエラーを発生させるタスクを作成します。

CREATE OR REPLACE TASK TASK_RETURN_ERROR
    WAREHOUSE = COMPUTE_WH
AS
BEGIN
    CALL SYSTEM$SET_RETURN_VALUE('STEP_1');

    SELECT 1;

    CALL SYSTEM$SET_RETURN_VALUE('STEP_2');

    -- 意図的にエラー
    SELECT 1 / 0;

    -- ここには到達しない
    CALL SYSTEM$SET_RETURN_VALUE('SUCCESS');
END;

image.png

後続タスクを作成します。

CREATE OR REPLACE TASK TASK_RETURN_ERROR_AFTER
    WAREHOUSE = COMPUTE_WH
    AFTER TASK_RETURN_ERROR
AS
BEGIN
    SELECT 1;
END;

image.png

タスクを実行します。

EXECUTE TASK TASK_RETURN_ERROR;

image.png

エラー発生前に設定した値であるSTEP_2が表示されました。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?