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

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

ノートブックを実稼働にデプロイする場合、Snowflakeは、デプロイ、オーケストレーション、監視を管理するためのネイティブ機能を提供します。Snowsight 内のワークスペースでノートブックをインタラクティブに開発し、反復します。ノートブックをスケジュールすると、そのコンテンツがノートブックプロジェクトオブジェクト(NPO)と呼ばれる実稼働オブジェクトにデプロイされます。(たとえば .ipynb ファイル、Pythonスクリプト、 SQL ファイルなど)。 NPOs はバージョン管理されたデプロイをサポートするスキーマレベルのオブジェクトです(たとえば db_name.schema_name.npo_name など)。

デプロイ後、Snowflakeタスク(一貫したランタイムと依存関係セットを使用してノートブックコードをトップダウンで実行する)またはサードパーティオーケストレーションツールを使用してノートブックの実行をオーケストレーションできます。Snowflakeは、 Snowsight で監視できる実行テレメトリーをキャプチャするか、イベントテーブルを通じてプログラムでクエリします。詳細については、 ワークスペースにおけるノートブックの可観測性とログ をご参照ください。

ノートブックプロジェクトオブジェクト(NPOs)

NPO はスキーマレベルのオブジェクトであり、パイプライン内で実稼働に対応する「ユニット」として機能します。ノートブックプロジェクトはワークスペースまたはステージにリンクされ、ワークスペースからのすべてのファイルがコピーされます。 NPOs は非インタラクティブな方法で実行され、スケジューリングのためにタスクに埋め込むことができます。

  • ** 配置: ** NPOs はデータベース( database_name.schema_name.npo_name )内の特定のスキーマ内に存在します。

  • ** カプセル化: ** ノートブックをスケジュールすると、 NPO はワークスペースディレクトリ全体をキャプチャし、実行中にすべての依存関係が利用できるようにします。

  • ** 実行: ** メインの .ipynb ファイル(たとえば MAIN_FILE パラメーターを使用)を指定して NPO を実行します。メインのノートブックは、 %run を使って追加のノートブックを呼び出すことができます。

  • ** スケジューリング: ** 同じ NPO を実行する複数のタスクオブジェクトを作成して、同じノートブックプロジェクトオブジェクトに対して複数のスケジュールを可能にします。

NPOs の発見

NPOs は標準のデータベースオブジェクトであるため、メタデータコマンドを使用して、スケジュールされたタスクを監査またはクリーンアップできます

範囲

コマンド

現在のコンテキスト

SHOW NOTEBOOK PROJECTS 、

データベースレベル

SHOW NOTEBOOK PROJECTS IN DATABASE <database_name> 、

スキーマレベル

SHOW NOTEBOOK PROJECTS IN SCHEMA <database_name>.<schema_name> 、

アカウントレベル

SHOW NOTEBOOK PROJECTS IN ACCOUNT 、

NPOs の権限と共有

NPO を実行または管理するには、ロールに次の権限が必要です。

  • ** 場所: ** NPO を含むデータベースとスキーマ上の USAGE または OWNERSHIP 。

  • **NPO アクセス: ** 特定の NPO 上の USAGE または OWNERSHIP 。

  • Compute: USAGE and MONITOR on the warehouse, and USAGE on the compute pool (for Container Runtime).

  • ** スケジューリング: ** NPO がタスクによってトリガーされる場合、アカウントレベルのグローバル EXECUTE TASK の権限が必要です。

  • ** 外部アクセス統合: ** ノートブックで使用される EAIs 上の USAGE 。

  • ** タスク: ** NPO がタスク経由でスケジュールされている場合、タスク所有者ロールにはすべての必要なオブジェクト(たとえば NPOs ウェアハウスまたはデータベース)の USAGE 権限が付与される必要があります。ノートブックが実行コンテキストをプログラムで設定した場合、タスク所有者ロールは、 USE DATABASE および USE SCHEMA コマンドを実行する権限も持つ必要があります。

注釈

呼び出し元がユーザーである(ロールではない)場合は、 NPOs 呼び出し元の権限を使用します。EXECUTE NOTEBOOK PROJECT を Snowsight で直接実行する場合、実行は Snowsight セッションのアクティブなロールではなく、呼び出しユーザーのIDを使用します。ノートブックは独自の専用セッション( Snowsight セッションとは別)で、ユーザーの既定のロールをプライマリロールとして、すべてのセカンダリロールをアクティブ化して実行されます。これは、ユーザーのロールに付与されたすべての権限でノートブックを実行できることを意味します。

ノートブックをスケジュールするための NPO の使用

現在、ノートブックのデプロイとスケジューリングにはサポートされている2つのシナリオがあります。どちらのシナリオでも、ノートブックは NPO にパッケージされている必要があります。:ref:` シナリオA <label-nb_in_ws_schedule_scenario_a>` はプライベートワークスペースからノートブックをスケジューリングしています。:ref:` シナリオB <label-nb_in_ws_schedule_scenario_b>` は GitHub アクション(または別の CI/CD システム)を統合しながら :doc:` 内部ステージまたは仮ステージ </sql-reference/sql/create-stage>` から NPOs の作成を自動化し、バージョン管理された更新を通じてライフサイクルを管理し、Snowflakeタスク を使用して実行をオーケストレーションします。

シナリオ

ワークスペースタイプ

スケジューリングメソッド

A:個別の開発

プライベート

サポート対象です。プライベートワークスペースで開発します。:ref:` ノートブックプロジェクトオブジェクト <label-nb_in_ws_schedule_npo>` ( NPO )を作成し、タスクをスケジュールします。

B:実稼働( CI/CD )

Git統合

ノートブックファイルは、 GitHub アクション(またはその他の CI/CD ツール)を使用した GitHub から内部または仮ステージにデプロイされ、 NPO はそのステージから作成・更新されます。タスクは NPO で実行されます。

各シナリオの詳細なワークフローについては、 シナリオ別ワークフローのスケジューリング を参照してください。

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

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

ノートブックから

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

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

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

  3. ノートブックエディターの上部で、 Scheduled runs スケジュールされた実行アイコン を選択します。ポップオーバーには、次の情報が表示されます:

  • このノートブックのすべてのスケジュールされた実行。

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

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

アクションメニューから

** データベースエクスプローラーから **

スケジュールされたノートブック( CI/CD 経由でデプロイされたものを含む)の実行履歴を表示するには:

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

  2. Notebookプロジェクトオブジェクト( NPO )を含むデータベースとスキーマを選択します。

  3. Select the NPO.

  4. Run history を選択します。

  5. 実行を選択すると、その実行からのノートブック出力と、ログおよびメトリック(利用可能な場合)が表示されます。詳細については、 ワークスペースにおけるノートブックの可観測性とログ をご参照ください。

注釈

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

スケジュールされたタスクを管理する

Scheduled runs ポップオーバーから、スケジュールされたタスクの隣にある省略記号(その他のアクション) sf-options-button を選択すると、スケジュールされたタスクを管理できます。

  • ** 今すぐ実行: ** スケジュールされたタスクの即時実行をトリガーします。

  • ** スケジュールの一時停止: ** スケジュールが自動的に実行されるのを一時的に停止します。タスクは構成されたままですが、再開されるまで実行されません。

  • ** 削除: ** スケジュールされたタスクを完全に削除します。既存のスケジュールを削除した後、異なる設定(異なるロールやデータベースの場所など)で新しいスケジュールを作成できます。

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

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

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

  • Deploy Changes を選択します。

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

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

スケジュールされた各ノートブックはデプロイされたコード、実行履歴、アーティファクトを格納する NPO を自動的に作成します。これらのオブジェクトは、 Snowsight のオブジェクトエクスプローラーで見つけることができます。

Snowsight 内の NPO を見つけるには、次のステップに従います。

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

  2. Database » Schema » Notebook Project Objects に移動し、そのスキーマのすべての NPOs を表示します。

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

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

  2. ノートブックエディターの上部で、 Scheduled runs スケジュールされた実行アイコン を選択します。

  3. Open run history を選択して関連する NPO を開きます。

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

このセクションでは、スケジュール作成後に実行の詳細を表示し、ノートブックの実行をトラブルシューティングする方法について説明します。実行中にステップが失敗すると、Snowflakeは実行を停止して、部分的または一貫性のない下流の結果を防ぎます。

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

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

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

  3. ノートブックエディターの上部で、 Scheduled runs スケジュールされた実行アイコン を選択します。

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

Run History はノートブックのプロジェクトオブジェクトに対する次の情報を表示します。

  • ** 結果: ** 過去の実行のノートブックと出力を表示します。

  • ** タスク: ** どのタスクが NPO を実行したかを表示します。

  • ** ソースファイル: ** 実行されたノートブックファイルを表示します。

  • ** ログとメトリック: ** 実行ログとパフォーマンスメトリックを表示します(ログとイベントテーブルが有効になっていることを確認してください)。詳細については、 ワークスペースにおけるノートブックの可観測性とログ をご参照ください。

  • ** 実行の詳細: ** 開始時刻と終了時刻、実行ステータス、エラー詳細。

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

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

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

-- Execute a notebook project using a task
CREATE OR REPLACE TASK <database_name>.<schema_name>.<name>
  WAREHOUSE = <string>
  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 notebook project.
  EXECUTE NOTEBOOK PROJECT "<database_name>"."<schema_name>"."<project_name>"
    MAIN_FILE = 'notebook.ipynb'  -- Path to the notebook file
    COMPUTE_POOL = '<compute_pool_name>'
    RUNTIME = '<runtime_version>'  -- e.g. V2.2-CPU-PY3.11
    QUERY_WAREHOUSE = '<wh_name>'
    ARGUMENTS = '<string>'  -- Can pass a single string parsed in the notebook code
    REQUIREMENTS_FILE = '<path/to/requirements.txt>'  -- Pre-installs dependencies before the notebook runs
    EXTERNAL_ACCESS_INTEGRATIONS = ('integration_name');  -- e.g. ('http_eai', 's3_eai')
Copy

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

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

アクティブなロールに必要な権限がないためにタスクが失敗した場合、 Snowsight は関連するエラーメッセージを表示するので、権限の欠落に対処できます。

構文、パラメーター、および例については、 EXECUTE NOTEBOOK PROJECT を参照してください。スケジュールされたノートブックにパラメーターを渡す方法については、 パラメーター付きノートブックの実行 を参照してください。

注釈

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