モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

Snowflake Task による SQL の定期実行

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2022/02/06
最終更新最終更新
2024/05/16
記事区分記事区分
一般公開

目次

    業務ではデータベース設計とSQL最適化を担当

    Snowflake において、cron のように定期的に SQL を実行する仕組みとして Task が提供されています。基本的な使い方を記載します。

    サンプル

    データベースとテーブルを作成しておきます。

    CREATE DATABASE mydb;
    CREATE TABLE mytbl (c1 DATETIME, c2 STRING);
    

    1分毎に INSERT を実行する task を作成します。WAREHOUSE パラメータを省略すると、Snowflake-managed な Compute リソースを利用して稼働します。

    CREATE TASK mytask
      SCHEDULE = '1 MINUTE'
      USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE = XSMALL
    AS
    INSERT INTO mytbl (c1, c2) VALUES (CURRENT_TIMESTAMP(), system$current_user_task_name());
    

    初期状態では開始されていないため、以下の SQL を実行します。

    ALTER TASK mytask RESUME;
    

    参考資料:

    ログ、ステータス

    Task は schema オブジェクトの配下に位置するオブジェクトです。USE されている schema に関する task を show するコマンドは以下のとおりです。

    USE DATABASE mydb;
    SHOW TASKS;
    

    USE されていない schema の task も表示するためには以下のようにします。

    SHOW TASKS IN ACCOUNTS;
    

    タスクの実行履歴は以下のコマンドで確認します。

    SELECT * FROM TABLE(information_schema.task_history());
    SELECT * FROM TABLE(information_schema.serverless_task_history());
    

    監査用の Snowflake DB から SELECT する場合は以下のようにします。

    SELECT * FROM snowflake.account_usage.task_history LIMIT 10;
    

    snowflake database を利用する場合は遅延が発生します。Information Schema を利用する場合は、保持期限が存在することに注意します。

    参考資料:

    権限

    ACCOUNTADMIN を用いずに、他のロールに権限を委譲する設定を記載します。

    Task History の閲覧

    Task が格納される database および schema の USAGE 権限に加えて、Task の OWNERSHIP 権限を持つ場合、以下のクエリが実行できます。

    SELECT * FROM TABLE(information_schema.task_history());
    

    または MONITOR EXECUTION 権限を持つ場合にも、上記クエリを実行可能です。

    GRANT MONITOR EXECUTION ON ACCOUNT TO ROLE myrole;
    

    上記は Information Schema に関する記載です。

    参考資料:

    作成、実行

    以下のようなカスタムロール taskadmin を作成して、権限を委譲できます。

    // accountadmin である必要はありません。
    USE ROLE securityadmin;
    
    // ロールの作成。
    CREATE ROLE taskadmin;
    
    // useradmin が grant できるように、OWNERSHIP を移管しています。
    GRANT OWNERSHIP ON ROLE taskadmin TO ROLE useradmin;
    
    // accountadmin の直下に配置することで、taskadmin が OWNERSHIP を持つオブジェクトが発生しても accountadmin で管理できるようにしておきます。
    GRANT ROLE taskadmin TO ROLE accountadmin;
    
    // 以下の grant には accountadmin が必要です。
    USE ROLE accountadmin;
    
    GRANT EXECUTE TASK, EXECUTE MANAGED TASK ON ACCOUNT TO ROLE taskadmin;
    

    上記 taskadmin に加えて、必要な権限は以下のとおりです。

    • database および schema の USAGE 権限。
    • warehouse の USAGE 権限。 ← Snowflake-managed な Compute リソースを利用しない Task の場合。
    • Task で定期実行する SQL に必要な権限。

    補足1

    Task の OWNERSHIP 権限は user ではなく role が持ちます。特定の user が管理する task というものはなく、role を持つ複数の user で管理する task ということになります。

    例えば ACCOUNTADMIN で create した task の OWNERSHIP は ACCOUNTADMIN となるため、taskadmin では drop 等ができません。

    補足2

    shared database 配下に task を作成することはできませんが、task の SQL 内で参照することはできます。

    CREATE TASK mytask
      SCHEDULE = '1 MINUTE'
      USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE = XSMALL
    AS
    INSERT INTO mytbl (c1, c2) SELECT CURRENT_TIMESTAMP(), query_text FROM snowflake.account_usage.query_history LIMIT 1;
    

    参考資料:

    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    業務ではデータベース設計とSQL最適化を担当

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • Snowflake におけるアクセス制御の設定
        サムネイル画像-69f3d5536c
        Snowflake について、アクセス制御の設定を記載します。 参考資料: Access Control in Snowflake user と role の関係 [Role Hierarchy and Privilege
        りょうりょう12/29/2023に更新
        いいねアイコン画像0
      • Snowflake におけるセキュリティ関連の機能
        サムネイル画像-5dcf74894d
        Snowflake のセキュリティ関連の機能について記載します。 パラメータ管理 Snowflake における設定値はパラメータとよばれます。設定する対象によって分類すると、以下の三種類が存在します。 Account パラメータ。 Account-level でのみ設定可能です。 Session パラメータ。 Account-level および User-level, Session-level ...
        サマーズサマーズ3/2/2024に更新
        いいねアイコン画像0
      • Looker から Snowflake への OAuth 接続
        サムネイル画像-ce4268940d
        Looker から Snowflake の DB を OAuth 認証で参照する設定例を記載します。 参考資料: Looker / feedbackSnowflake / Configuring OAuth for Snowflake connections Snowflake 内の Looker 用 Role/User/Warehouse/DB 作成 Role と
        suzusuzu1/2/2025に更新
        いいねアイコン画像0
      • Snowflake に対する SSO 設定 (Auth0)
        サムネイル画像-6789888256
        Snowflake に対して、外部の ID 基盤 (IdP; ID Provider) による認証でログインするための設定例を記載します。IdP としては Auth0 を用います。 参考資料: [HOWTO: CONFIGURE AUTH0 AS IDENTITY PROVIDER FOR SNOWFLAKE SINGLE SIGN-ON](https://community.snowflake....
        ふんわりぬこふんわりぬこ1/26/2024に更新
        いいねアイコン画像0
      • Snowflake Custom Role による ACCOUNTADMIN からの権限委譲
        サムネイル画像-aa3f3d6f78
        Snowflake アカウントの運用時において、ACCOUNTADMIN は必要な場合以外は利用しないことが推奨されます。SYSADMIN 直下ではなく ACCOUNTADMIN 直下に位置付けた Custom Role を作成することで、ACCOUNTADMIN が持つ権限を委譲する例を記載します。 関連資料: [Access Control Privileges](https://docs.s...
        クラウド職人クラウド職人5/16/2024に更新
        いいねアイコン画像0