Snowflake Notebooks を設定する

Snowflake Notebooks は、データベースのスキーマ内に格納されたファーストクラスオブジェクトです。ウェアハウスとコンテナーです。このトピックでは、管理者としてアカウントをセットアップし、 Snowflake Notebooks の使用を開始する手順を説明します。

管理者の設定

Snowflake Notebooks を使用して組織をセットアップするには、以下の手順を実行します。

アカウントと配備要件の確認

コンテンツ フィルター システムを含むネットワークで、 *.snowflake.app が許可リストに登録され、Snowflake に接続できることを確認してください。このドメインが許可リストにあると、アプリは何の制限もなくSnowflakeサーバーと通信できます。

さらに、Snowflakeバックエンドへの接続に問題が発生しないように、ネットワーク構成で WebSockets がブロックされていないことを確認してください。

ライブラリをインポートするためにAnacondaの規約に同意します。

Snowflake内でAnacondaが提供するパッケージの使用を開始する前に、 外部製品規約 に同意する必要があります。

注釈

条件を受け入れるには、 ORGADMIN ロールを使用する必要があります。お客様のSnowflakeアカウントでは、 External Offerings Terms に一度だけ同意する必要があります。ORGADMIN ロールを持っていない場合は、 アカウントのORGADMINロールの有効化 をご参照ください。

  1. Snowsight にサインインします。

  2. Admin » Billing & Terms を選択します。

  3. Anaconda セクションで、 Enable を選択します。

  4. Anaconda Packages ダイアログで、リンクをクリックして 外部製品規約ページ を確認します。

  5. 規約に同意する場合は、 Acknowledge & Continue を選択します。

外部提供条件 に同意しようとした際にエラーが発生した場合、ユーザープロファイルの姓、名、電子メールアドレスなどの情報が不足していることが原因である可能性があります。

リソースの作成と権限の付与

ノートブックを作成するには、ロールに以下のリソースの権限が必要です。

  • CREATE NOTEBOOK 場所の権限

  • コンピューティングリソースの USAGE 権限

  • (オプション) USAGE 外部アクセス統合権限 (EAIs)

これらのリソースに対するパーミッションの作成と付与のスクリプト例については、 Notebooksセットアップ用テンプレート をご参照ください。

場所

場所は、ノートブックオブジェクトが格納されている場所です。エンドユーザーは、ロールがアクセスできるすべてのデータベースとスキーマにクエリできます。

  • コンテキストを別のデータベースやスキーマに変更するには、 SQL のセルで USE DATABASE または USE SCHEMA コマンドを使用します。

コンテナーランタイムでは、ノートブックを作成するロールにもスキーマの CREATE SERVICE 権限が必要です。

権限

オブジェクト

USAGE

データベース

USAGE

スキーマ

CREATE NOTEBOOK

スキーマ

CREATE SERVICE

スキーマ

スキーマを所有するロールには、そのスキーマ内でノートブックを作成する権限が自動的に与えられます。所有者はノートブックを含むあらゆるタイプのオブジェクトを作成できるからです。

権限

オブジェクト

USAGE

データベース

OWNERSHIP

スキーマ

コンピューティングリソース

ウェアハウスのランタイムでは、ノートブックのエンジンとノートブックで作成されたコードからの Python プロセスの両方が Notebooks ウェアハウスで実行されますが、 SQL クエリと Snowpark プッシュダウンクエリはクエリウェアハウスで実行されます。Notebookの所有者ロールには、両方のウェアハウスで USAGE 権限が必要です。

コンテナーランタイム上でノートブックが実行される場合、ロールは、Notebookウェアハウスの代わりに、コンピュートプール上で USAGE 権限を必要とします。コンピューティングプールは、Snowflakeによって管理される CPU ベースまたは GPU ベースの仮想マシンです。コンピューティングプールを作成する際には、 MAX_NODES パラメーターを1より大きくセットしてください。 なぜなら、各ノートブックは、実行するために1つのフルノードを必要とするからです。詳細については、 Snowpark Container Services: コンピューティングプールの操作 をご参照ください。

権限

オブジェクト

USAGE

ウェアハウスまたはCompute Pool

USAGE

クエリウェアハウス

外部アクセス統合(オプション)

特定のロールに外部ネットワークへのアクセスを許可する場合は、 ACCOUNTADMIN ロールを使用して、外部アクセス統合 (EAIs) で USAGE 権限をセットアップし、付与します。EAIs では特定の外部エンドポイントへのアクセスを許可することで、チームはデータやモデルのダウンロード、 API リクエストとレスポンスの送信、他のサービスへのログインなどを行うことができます。EAIs コンテナーランタイム上で動作する Notebooks では、 PyPi や Hugging Face などのリポジトリからパッケージをインストールすることもできます。

ノートブックの EAI の設定方法の詳細については、 Snowflake Notebooks の外部アクセスの設定 をご参照ください。

権限

オブジェクト

USAGE

外部アクセス統合

Notebooksセットアップ用テンプレート

ノートブックはロールベースの作成権限と所有権限を持つオブジェクトなので、組織やチームのニーズに合わせてNotebooks機能へのアクセスを構成できます。いくつか例を挙げましょう。

特定の場所に全員がノートブックを作成できるようにします。

以下の手順では、データベースとスキーマの使用を付与して、特定の場所にノートブックを作成するためのアクセスを構成する方法を説明します。また、これらのアクセス付与を必要としないプライベートノートブックを有効にすることもできます。プライベートノートブックについての情報は、 プライベートノートブック をご参照ください。

<database> と<database.schema> を、ノートブックを作成するデータベースとスキーマに置き換えてください。

----------------------------------
--       Location Setup         --
----------------------------------
GRANT USAGE ON DATABASE <database> TO ROLE PUBLIC;
GRANT USAGE ON SCHEMA <database.schema> TO ROLE PUBLIC;
GRANT CREATE NOTEBOOK ON SCHEMA <database.schema> TO ROLE PUBLIC;

-- For Notebooks on Container runtime, run the following:
GRANT CREATE SERVICE ON SCHEMA <database.schema> TO ROLE PUBLIC;

----------------------------------
--    Compute Resource Setup    --
----------------------------------
GRANT USAGE ON WAREHOUSE <warehouse> TO ROLE PUBLIC;

-- For Notebooks on Container runtime:
CREATE COMPUTE POOL CPU_XS
  MIN_NODES = 1
  MAX_NODES = 15
  INSTANCE_FAMILY = CPU_X64_XS;

CREATE COMPUTE POOL GPU_S
  MIN_NODES = 1
  MAX_NODES = 5
  INSTANCE_FAMILY = GPU_NV_S;

GRANT USAGE ON COMPUTE POOL CPU_XS TO ROLE PUBLIC;
GRANT USAGE ON COMPUTE POOL GPU_S TO ROLE PUBLIC;

-------------------------------------
-- Optional: External Access --
-------------------------------------

-- Example EAI
CREATE OR REPLACE NETWORK RULE allow_all_rule
MODE = 'EGRESS'
TYPE = 'HOST_PORT'
VALUE_LIST = ('0.0.0.0:443','0.0.0.0:80');

CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION allow_all_integration
ALLOWED_NETWORK_RULES = (allow_all_rule)
ENABLED = true;

GRANT USAGE ON INTEGRATION allow_all_integration TO ROLE PUBLIC;
Copy

専用ロールの作成

特定のユーザーだけにNotebooksを作成させたい場合(そのユーザーがすでに OWN にスキーマを持っていないことを前提とします)、アクセス制御のために専用のロールを作成することができます。例:

CREATE ROLE notebooks_rl;
Copy

ROLE notebook_rl を特定のユーザーに付与します。次に、上記のスクリプトを使用してリソースを作成し、このロールに権限を付与します(ROLE PUBLIC を ROLE notebook_rlに置き換えてください)。

ノートブックエンジン

Notebookエンジン("カーネル")とPythonプロセスはNotebookウェアハウス上で実行されます。Snowflakeでは、クレジットの消費を最小限に抑えるため、X-Smallウェアハウスから始めることを推奨しています。

ノートブックを使用している間(コードの編集、セルの実行、並べ替え、削除など)、またはアイドル・タイムアウトの設定内でノートブックがアクティブな状態が続くと、 EXECUTE NOTEBOOK クエリが継続的に実行され、ノートブック・エンジンがアクティブでノートブック・セッションが使用中であることを示します。このクエリのステータスは Query history で確認できます。 EXECUTE NOTEBOOK が実行されている間、Notebooks ウェアハウスも実行されています。 EXECUTE NOTEBOOK が終了すると、ウェアハウスで実行中の他のクエリやジョブがない場合、自動一時停止ポリシーに従ってシャットダウンします。

EXECUTE NOTEBOOK クエリを終了する(Notebooks セッションを終了する)には、以下の手順に従います。

  1. Active を選択するか、 Active ドロップダウンメニューから End session を選択してください。

  2. Query history で、対応する EXECUTE NOTEBOOK クエリを見つけ、 Cancel query を選択します。

  3. アイドル時間のセットに基づいて、ノートブックが非アクティブのためタイムアウトするようにします。Notebooksウェアハウスの STATEMENT_TIMEOUT_IN_SECONDS および STATEMENT_QUEUED_TIMEOUT_IN_SECONDS パラメーターが小さい値にセットされている場合、ユーザーのアクティビティに関係なく、ノートブックがすぐにシャットダウンしたり、起動に失敗したりする可能性があります。

クエリ

SQL およびSnowparkクエリ(例えば、session.sql)はクエリウェアハウスにプッシュダウンされ、オンデマンドで使用されます。SQL とSnowparkクエリの実行が終了すると、クエリウェアハウスは、ノートブック外で他のジョブが実行されていない場合に一時停止します。クエリのパフォーマンスニーズに最適なウェアハウスサイズをお選びください。例えば、 SQL の大容量のクエリを実行したり、Snowpark Python を使用して計算負荷の高い処理を実行したりする場合、より大きなウェアハウスが必要になることがあります。高いメモリ使用を必要とする演算子については、 Snowparkに最適化されたウェアハウス の使用を検討してください。

クエリウェアハウスは Notebook Settings で変更できます。また、ノートブックの任意のセル(SQL)で以下のコマンドを実行すると、現在のノートブックセッションの後続のすべてのクエリのクエリウェアハウスを変更できます。

USE WAREHOUSE <warehouse_name>;
Copy
ノートブック計算図

アイドルタイムと再接続

各ノートブックには、 IDLE_AUTO_SHUTDOWN_TIME_SECONDS というアイドル時間プロパティがあり、デフォルト値は30分です。各ノートブックのアイドル時間は、 Snowsight で構成できます。

  1. Snowsight にサインインします。

  2. Projects » Notebooks を選択します。

  3. ワークシートのその他のアクション メニューを選択し、新しい時間を構成します。

  4. Notebook settings を選択します。

  5. 新しいアイドル時間を有効にするには、手動でセッションを再起動してください。

アイドル時間は、コードの編集、セルの実行、セルの並べ替え、セルの削除などのユーザー・アクティビティがないときに蓄積されます。アクティビティを再開するたびに、アイドル時間はリセットされます。アイドル時間がタイムアウト設定に達すると、ノートブックセッションは自動的にシャットダウンします。

アイドルタイムアウト前は、ページを更新したり、 Snowsight の他の部分にアクセスしたり、コンピュータをシャットダウンまたはスリープさせたりしても、アイドルタイムアウト期間に達するまで Notebooks セッションはアクティブなままです。同じノートブックを再び開くと、すべてのセッションの状態と変数が保持された状態で同じセッションに再接続され、シームレスに作業を続けることができます。ただし、Streamlit ウィジェットの状態は保持されません。

同じノートブックを実行している個々のユーザーは、それぞれ独立したセッションを持っています。互いに干渉し合うことはありません。

コスト最適化のための提言

アカウント管理者として、ノートブックの運用コストを管理するために、以下の推奨事項を検討してください。

  • 同じウェアハウス(X-Smallを推奨)をノートブックセッション専用の「Notebooksウェアハウス」として使用し、同時実行性を高めるようチームに依頼します。多くのノートブックが同時に実行されると、セッションの開始が遅くなったり(ウェアハウスでキューに入れられたり)、メモリ不足のエラーが発生したりすることに注意してください。

  • STATEMENT_TIMEOUT_IN_SECONDS の値が低いウェアハウスを使用してノートブックを実行できるようにします。このウェアハウスのパラメーターは、ノートブックセッションを含め、クエリの継続時間を制御します。例えば、パラメーターが10分にセットされている場合、その間ユーザーがノートブックセッションでアクティビティを行っているかどうかに関係なく、ノートブックセッションは最大10分間実行できます。

  • セッションで積極的に活動するつもりがない場合は、ノートブックセッションを終了するようチームに求めます。

  • セッションを長時間実行する必要がない場合は、アイドルタイムアウトの設定を最小にするようにチームに依頼してください(たとえば15分)。

  • または、サポートチケットを提出して、アカウント全体に適用されるアイドル時間のデフォルト値をセットしてください。この値は、ノートブックの所有者がノートブックレベルで上書きすることができます。

プライベートノートブックを使用するための前提条件

Snowsight では、ユーザー所有のプライベートノートブックを作成できます。プライベートノートブックを作成して使用する前に、 ACCOUNTADMIN ロールを持つ管理者は以下のタスクを完了する必要があります。

  1. アカウントレベルまたは特定のユーザーに対して、個人データベース機能を有効にします。パーソナルデータベースは、ノートブックをプライベートノートブックとして動作させるためのSnowflakeオブジェクトです。このタスクの完了に関する情報については、以下のセクションを参照してください。

  2. 必要であれば、プライベートノートブックを作成するユーザーに対して、セカンダリロールを適切に設定してください。このタスクの完了に関する情報(最近の BCR バンドルが有効になっているかどうかに依存するかもしれません)については、 プライベートノートブックユーザーのすべてのセカンダリロールのアクティブ化 をご参照ください。

重要

管理者が個人データベースを有効にした後、影響を受けるユーザーはサインアウトし、新しいユーザーインターフェイスの動作を確認するためにサインインし直す必要があります。

プライベートノートブックの詳細については、 プライベートノートブック をご覧ください。

アカウントのプライベートノートブックの有効化と無効化

Snowflake アカウントでプライベート Notebooks を有効にするには、 ENABLE_PERSONAL_DATABASE パラメーターを TRUE にセットする ALTER ACCOUNT コマンドを使用します。例:

ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
Copy

別のアカウントを変更することはできず、変更できるのは現在のアカウントのみです。このコマンドの詳細情報については、 ALTER ACCOUNT をご参照ください。

アカウントのプライベートノートブックを無効にする必要がある場合は、同じコマンドを実行し、パラメーターを FALSE にセットします。例:

ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
Copy

ENABLE_PERSONAL_DATABASE パラメーターの現在値を確認するには、以下の SHOW PARAMETERS コマンドを実行します。

SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
Copy

管理者がアカウントのパラメーターを有効にした後、ユーザーはサインアウトして再度サインインする必要があります。その後、ユーザーは USE DATABASE コマンドを実行することで、個人データベースが作成されたことを確認できます。

USE DATABASE USER$;
Copy

現在のユーザー名を明示的に指定するには、 USER$ プレフィックスに続いてログインユーザー名を指定します。例:

USE DATABASE USER$bobr;
Copy

これらのコマンドは、現在のユーザーの個人データベースが存在する場合に成功します。USE DATABASE コマンドは、個人データベースが存在しない場合(前提タスクが完了していないため)、または現在のユーザーの個人データベースでない場合にエラーを返します。例えば、 jlap が現在のユーザーでない場合、以下のメッセージが表示されます。

USE DATABASE USER$jlap;
Copy
ERROR: Insufficient privileges to operate on database 'USER$JLAP'

注釈

  • 個人データベースには特定の所有者はいません。個人データベースはシステム所有のオブジェクトです。

  • 個人データベースを自分で作成することはできません。

    • アカウントがプライベートノートブックを有効にすると、既存のユーザーのためにバックグラウンドで「遅延的に」作成されます。ユーザーが最初に USER$名前解決を明示的に指定してコマンドを実行すると、個人データベースが作成されます。例えば、 USE DATABASE USER$というコマンドを実行すると、現在のユーザーの個人データベースがダラダラと作成されます。

ユーザーごとのプライベートノートブックの有効化・無効化

管理者は、アカウント内のすべてのユーザーではなく、アカウント内の特定のユーザーに個人的なデータベースアクセスをさせたい場合があります。指定したユーザーのアクセスを有効にするには、 ALTER USER コマンドを使用して、それらのユーザーに対して ENABLE_PERSONAL_DATABASE パラメーターを TRUE にセットします。例えば、3人のユーザーのアクセスを有効にします。

ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
Copy

アカウントレベルで個人データベースを有効にした場合、必要に応じて個々のユーザーの個人データベースを無効にすることができます。ユーザーを無効にするには、同じコマンドを実行しますが、パラメーターを FALSE にセットします。例:

ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
Copy

ユーザー jlap がいずれかのコマンドで USER$ プレフィックスを指定した場合、個人データベースが存在しないため、コマンドは失敗します。

NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.

注釈

特定のユーザーの個人データベースを有効にしてから無効にすると、そのユーザーは作成された個人データベースへのアクセスを失いますが、データベースは存在し続けます。

データを追加してノートブックを使い始める

Snowflake Notebooks を使い始める前に、Snowflakeにデータを追加します。

Snowflakeにはいくつかの方法でデータを追加できます。

他の方法でデータを追加することもできます。包括的な詳細については データのロードの概要 をご参照ください。