ワークスペースでノートブックを実行し、スケジュールする

ワークスペースでのノートブックのスケジュール

ワークスペースでノートブックを定期的な間隔で実行するようにスケジュールすることにより、データサイエンスと ML ワークフローを自動化できます。スケジュールされた実行はSnowflakeタスクを使用し、一貫したトップダウンのシーケンスですべての依存関係を持つノートブックを実行します。

注釈

スケジュールは現在、共有ワークスペースのノートブックではサポートされていません。

必要な権限

ノートブックをスケジュールするには、スケジュールの作成に使用されるロールに以下の権限と付与が必要です。

アカウントレベル

  • ACCOUNT に対する EXECUTE TASK:ロールがスケジュールされたノートブックに関連するタスクを実行できるようにします。

スキーマレベル

  • CREATE TASK:基盤になるSnowflakeタスクを作成するために必要です。

  • ターゲットスキーマに対する USAGE:タスクメタデータとノートブックのプロジェクトオブジェクトを保存するためのものです。

コンピューティングおよびウェアハウスの権限

  • ノートブックの実行に使用されるコンピューティングプールに対する USAGE 。

  • ノートブック内の SQL セルに使用されるクエリウェアハウスに対する USAGE および MONITOR 。

ノートブック用の外部アクセス統合( EAIs )に対する USAGE

  • ノートブックが使用する EAI に対する USAGE 。

ノートブックのスケジュール

Snowsight でノートブックをスケジュールするには、次のステップに従います。

  1. ナビゲーションメニューで Projects » Notebooks を選択します。

  2. 新しいノートブックを作成するか、スケジュールする既存のノートブックを開きます。

  3. ノートブックエディターの右上で Schedule を選択します。

    • これがノートブックの最初のタスクである場合、Scheduleボタンはカレンダーアイコンになっています。

    • スケジュールが既に存在する場合、アイコンは時計付きのカレンダーになります。

  4. Create Schedule を選択します。

  5. Schedule a Notebook Task ダイアログで、次の情報を入力します。

    基本設定

    • タスク名:スケジュールされたタスクの一意の名前。デフォルトの名前は {notebook-name}_task_# ですが、必要に応じて更新できます。

    • 所有者ロール:タスクを実行するSnowflakeロール。スケジュールされたノートブックによって行われるすべての操作を実行するために、必要な権限を持つロールを選択します。このロールには、次の権限が必要です。

      • ノートブックが使用するデータベースオブジェクトの読み取り/書き込み。

      • ウェアハウス、コンピューティングプール、統合へのアクセス。

      • タスクとプロジェクトオブジェクトの作成/更新。

    • 場所:タスクオブジェクトと関連するノートブックプロジェクトオブジェクトが作成されるデータベースとスキーマです。ロールが CREATE TASK 、 USAGE 、および関連する権限を持つスキーマを選択します。

    • 頻度:ノートブックの実行頻度。次から選択します:毎時、毎日、毎週、毎月、またはカスタム(Cronスケジュール)。すべての実行時間にはローカルタイムゾーンが使用されます。

    高度な設定:

    • プロジェクト名:Snowflakeがタスク実行用に作成するノートブックのプロジェクトコンテナの一意の名前。編集しない場合、Snowflakeはデフォルト名を提供します。

    • パラメーター(オプション):実行時にノートブックに渡され、( sys.argv で)コマンドライン引数として表示されるキー値パラメーター。パラメーターは、日付、環境フラグ、しきい値、モデルのバージョンを渡すのに便利です。

    ランタイムバリアント

    • CPU:CPU コンテナランタイム環境を使用し、 CPU コンピューティングプールで実行されます(たとえば、自動的にプロビジョニングされる SYSTEM_COMPUTE_POOL_CPU )。

    • GPU:GPU アクセラレーテッドライブラリを含む GPU コンテナランタイム環境を使用し、 GPU コンピューティングプール( SYSTEM_COMPUTE_POOL_GPU など)で実行されます。

    • Pythonのバージョン:タスクの実行中に使用されるPythonバージョン。

    • ランタイムバージョン:コンテナランタイムのベースイメージ。正しいランタイムバージョンを選択することで、開発とスケジュールされた実行の間にノートブックが一貫して実行されるようになります。

    • コンピューティングプール:ノートブックタスクを実行するコンピューティングプール。スケジュールされた実行時に、コンピューティングプールに容量(空きノード)があることを確認します。スケジュールされた実行が失敗しないようにするには、専用のコンピューティングプールを使用し、他の SPCS サービスがフル容量を占めないようにします。

    • クエリウェアハウス:ノートブック内ですべての SQL クエリに使用されるSnowflakeウェアハウス。

    • 外部アクセス統合(オプション):ノートブックが使用するSnowflake外部アクセス統合( EAIs )を定義します。ノートブックが外部の APIs 、サードパーティサービス、またはSnowflakeの内部ステージ外のクラウドストレージを必要とする場合、 EAIs が必要になります。EAIs がリストにない場合、選択したロールは統合を所有していないか、権限を持っていません。

  6. スケジュールプレビューを確認し、 Create を選択します。

ユーザーが必要な権限を持っていないためにタスクが失敗した場合、ダイアログは開いたままで、関連するエラーメッセージが表示されます。

ノートブック実行スケジュールの表示

スケジュールされたタスクは2つの場所で表示できます。

ノートブックから

  1. ナビゲーションメニューで Projects » Notebooks を選択します。

  2. スケジュールされたノートブックを開きます。

  3. ノートブックエディターの右上で Schedule を選択します。ポップオーバーには、次の情報が表示されます:

  • このノートブックのすべてのスケジュールされた実行。スケジュールされた実行を表示したり、操作したりするには、スケジュールとプロジェクトオブジェクトが作成されたデータベースとスキーマへのアクセス権を持つロールを使用する必要があります。

  • 次にスケジュールされた実行時間。

  • 過去の実行のステータス。ステータスインジケーターにカーソルを合わせると、クエリ ID 、最終実行時間、期間、ステータスなどの詳細が表示されます。

アクションメニューから

  • 実行履歴を開く:ステータス、期間、結果など、過去のすべての実行を表示するノートブックのプロジェクトオブジェクトを開きます。実行の結果を選択すると、実行されたノートブックがその出力とともに開きます。

注釈

Airflowによってトリガーされたノートブックの実行履歴を表示するには、Airflowを実行する同じユーザーを使用して Snowsight にサインインしてください。

スケジュールされたノートブックタスクへの更新の展開

ノートブックを編集した後、スケジュールされた実行が更新バージョンを使用する前に変更を展開する必要があります。デプロイは再現性を確保し、スケジュールされたタスクが最後にデプロイされたものと異なるコードを実行することを防ぎます。ノートブックにデプロイが必要な変更があると、スケジュール(カレンダー)アイコンに時計インジケーターが表示されます。

コードやセルを変更すると、アイコンはデプロイされていない変更があることを示します。

  • Deployed Changes を選択します。

    その後、Snowflakeは関連するノートブックのプロジェクトオブジェクトを更新し、そのノートブックのスケジュールされたすべてのタスクは、次回の実行で新しくデプロイされたバージョンを使用します。

オブジェクトエクスプローラーでノートブックのプロジェクトオブジェクトを見つける

スケジュールされた各ノートブックは、デプロイされたコード、実行履歴、アーティファクトを格納するノートブックのプロジェクトオブジェクトを自動的に作成します。

Snowsight でノートブックのプロジェクトオブジェクトを見つけるには、次のステップに従います。

  1. ナビゲーションメニューで Catalog » Database Explorer を選択します。

  2. Navigate to Database » Schema » Notebook Project Objects to view all project objects in that schema.

あるいは、次の方法も可能です。

  1. 関連するノートブックを開きます。

  2. 右上の Schedule を選択します。

  3. ドロップダウンメニューから、 Run history を選択し、関連するノートブックのプロジェクトオブジェクトを開きます。

ノートブックの実行履歴を表示

実行中にステップが失敗すると、ノートブックは実行を停止して、下流の結果が部分的または一貫性のないものにならないようにします。

実行履歴を表示するには、以下の手順に従ってください。

  1. ナビゲーションメニューで Projects » Notebooks を選択します。

  2. 実行履歴を確認したいノートブックを開きます。

  3. ノートブックエディターの右上にあるスケジュール(カレンダー)アイコンを選択します。

  4. ドロップダウンメニューから、 View run history を選択します。

Run History は、開始時刻と終了時刻、実行ステータス、ノートブックのプロジェクトオブジェクトのログやメトリックなどのエラーの詳細を表示します。

タスクを使用してノートブックをスケジュール

  1. ナビゲーションメニューで Projects » Workspaces を選択します。

  2. SQL ファイル/ワークシートで次のコマンドを実行します。

CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name>
    WAREHOUSE = <warehouse_name>
    SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
    -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
    -- Execute a notebook stored within a Snowflake project.
    EXECUTE NOTEBOOK
        PROJECT = '<database_name>.<schema_name>.<project_name>'
        -- Notebook file to run
        MAIN_FILE = '<notebook_file_name>.ipynb'
        -- Compute pool used to run the notebook
        COMPUTE_POOL = '<compute_pool_name>'
        -- Runtime environment (Python version, CPU/GPU, etc.)
        RUNTIME = '<runtime_version>'
        -- Warehouse used for SQL statements inside the notebook
        QUERY_WAREHOUSE = <query_warehouse_name>;
Copy

このタスクを作成したら、次のコマンドを実行してスケジュールをアクティブ化します。

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;
Copy

注釈

クレジットの使用状況、アイドルタイムアウトの動作、ノートブックのサービス管理の詳細については、 コンピューティングの設定 および アイドルタイムアウト をご参照ください。