Snowflake Notebooks を設定する

Snowflake Notebooks を使用すると、コードの記述と実行、結果の視覚化、メモの取得、および他のSnowflake ユーザーとのインサイトの共有が可能になります。このページでは、 Snowflake Notebooks を使用するためのアカウントを設定する手順を説明します。

アカウントの管理者である場合は、 Snowflake Notebooks の管理者セットアップ手順 をご参照ください。

アカウントの管理者によって Snowflake Notebooks アクセスがすでに設定されている場合は、 Snowflake Notebooks のユーザーセットアップ手順 をご参照ください。

Snowflake Notebooks のユーザーセットアップ手順

Snowflake Notebooks を使い始める前に、以下のセットアップ手順を実行してください。

専用データベースとスキーマの作成(オプション)

ノートブックを作成するには、ノートブックを保存するデータベースとスキーマが必要です。既存のデータベースとスキーマを使用するか、新しいデータベースを作成して、 Snowflake Notebooks を保存および管理することができます。

Snowflake Notebooks の保存と管理を簡素化するため、Snowflakeでは専用のデータベースとスキーマを作成することを推奨しています。

Snowflake Notebooks を保存する専用の churn_analysis データベースとスキーマを作成するには、次の SQL コマンドを実行します。

CREATE DATABASE churn_analysis;
USE DATABASE churn_analysis;
CREATE SCHEMA notebooks_sch;
Copy

データベースとスキーマはノートブックを格納するためだけに必要であることに注意してください。自分のロールでアクセスできるデータベースとスキーマをクエリできます。異なるデータベースやスキーマにコンテキストを変更するには、 SQL セルで USE DATABASE または USE SCHEMA コマンドを使用します。

ノートブックを保存・管理する専用の場所を確保することで、データベースやスキーマがドロップされたときにノートブックがドロップされるのを防ぐこともできます。

コンピューティングリソースの作成

ノートブックを作成するには、プッシュダウンクエリ用に クエリウェアハウス を選択する必要があります。既存のウェアハウスを選択することも、ノートブック専用のウェアハウスを新規作成することもできます。

専用ウェアハウス notebooks_wh を作成するには、以下の SQL コマンドを実行します。

CREATE WAREHOUSE notebooks_wh;
Copy

コンテナランタイム上で実行するノートブックを作成する場合は、コンピューティングプールを選択する必要があります。コンピューティングプールは、Snowflakeによって管理される CPU ベースまたは GPU ベースの仮想マシンです。詳細については、 Snowpark Container Services: コンピューティングプールの操作 をご参照ください。

ノートブック専用のコンピューティングプールを作成するには、以下の SQL コマンドを実行します。

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;
Copy

コンピューティングプールを作成する際には、 MAX_NODES パラメーターを1より大きく設定します。各ノートブックは、実行するために1つのフルノードを必要とするからです。

アクセス制御の要件

ノートブックを作成できるユーザーを管理するために、Snowflakeは専用のスキーマレベルの権限を提供します。ノートブックを作成すると、そのノートブックを所有するロールがセッションでアクティブなロールになります。ロールを持つユーザーであれば誰でも、そのロールが所有するノートブックを開き、実行、編集することができます。ユーザーはロールからノートブックへのアクセス権を継承することもできます。たとえば、ノートブックが PUBLIC ロールに所有されている場合、そのアカウントに属するユーザーは誰でも、そのロールが所有するノートブックにアクセスし、編集することができます。ノートブックを他のロールと共有することはできません。

各ノートブックはロールによって所有されるため、ノートブックを作成および実行する専用のロールを作成することが推奨されます。

ウェアハウスランタイム上にノートブックを作成するには、以下の権限を持つロールを使用する必要があります。

権限

オブジェクト

USAGE

データベース

USAGE または OWNERSHIP

スキーマ

USAGE

クエリウェアハウス

CREATE NOTEBOOK

スキーマ

コンテナランタイム上でノートブックを作成するには、ロールは以下の追加権限を持つ必要があります。

権限

オブジェクト

USAGE

Notebookウェアハウス

USAGE

コンピューティングプール

CREATE SERVICE

スキーマ

Notebookウェアハウスとクエリウェアハウスの比較については、 Snowflakeノートブックを実行するためのウェアハウスの推奨事項 をご参照ください。

ノートブックを格納するために作成したデータベースとスキーマの権限を、カスタムロールに付与します。例えば、以下のSQLコマンドは、 notebooks_db というデータベースと notebooks_sch というスキーマに必要な権限を notebook_role というロールに付与する方法を示しています。

GRANT USAGE ON DATABASE notebooks_db TO ROLE notebook_role;
GRANT USAGE ON SCHEMA notebooks_sch TO ROLE notebook_role;
GRANT CREATE NOTEBOOK ON SCHEMA notebooks TO ROLE notebook_role;
Copy

ノートブックロールは、コンテナランタイム上のノートブックに対して以下の権限も持っている必要があります。

GRANT USAGE ON WAREHOUSE notebooks_wh TO ROLE notebook_role;
GRANT USAGE ON COMPUTE POOL CPU_XS TO ROLE notebook_role;
GRANT USAGE ON COMPUTE POOL GPU_S TO ROLE notebook_role;
GRANT CREATE SERVICE ON SCHEMA notebooks_sch TO ROLE notebook_role;
Copy

外部アクセス統合の設定(EAI)

コンテナランタイム上で実行するノートブックについて、 PyPi やHugging Faceなどのインターネットリポジトリからパッケージをインストールする場合、 ACCOUNTADMIN で外部ネットワークアクセスを設定し、個人のロールに USAGE 権限を付与する必要があります。外部アクセス統合(EAI)を使用すると、Snowflakeの特定の外部ネットワークロケーションへのセキュアなアクセスを有効にし、ユーザー定義関数(UDFs)およびストアドプロシージャのハンドラーコード内からそのアクセスを使用することができます。

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

ノートブックのセットアップ用テンプレート

以下の SQL スクリプトは、ノートブックをセットアップするための上記のすべてのステップをまとめたものです。プレースホルダーに値を入力し、スクリプトを実行して、ノートブックを実行するために必要なすべてのアクセスと権限を設定します。

----------------------------------
--       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 Containers
GRANT CREATE SERVICE ON SCHEMA <database.schema> TO ROLE PUBLIC;

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

-- For Notebooks on Containers
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;

-------------------------------------
-- Advanced Setup: 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

Snowflakeノートブックを実行するためのウェアハウスの推奨事項

ノートブックを作成する際、ノートブックのプロセスとコードを実行するウェアハウスを選択します。まずはXSサイズのウェアハウスを利用し、クレジットの消費を最小限に抑えることから始めましょう。

  • クエリウェアハウス: ノートブックから発行された SQL クエリとSnowparkクエリを実行します。このウェアハウスはオンデマンドで使用され、ノートブックの所有者が選択します。

  • ノートブックウェアハウス: Pythonカーネルを実行し、ノートブックのインタラクティブな使用をサポートします。デフォルトは、ノートブックワークロード専用のSnowflake管理ウェアハウスです。Snowflakeでは、ノートブックカーネルの実行にこのウェアハウスを使用することを推奨しています。このデフォルトウェアハウスの詳細については、 Notebooksのデフォルトウェアハウス をご参照ください。

別のウェアハウスを選択することもできます。たとえば、 SQL を使用して大規模なクエリを実行したり、Snowpark Pythonを使用して大規模なウェアハウスを必要とする計算集約的な処理を実行したい場合があります。この場合、2つの選択肢があります。

  1. 特定のセルまたはセルセットに使用するウェアハウスを指定します。

    これにより、これらのセルのクエリはより大きなウェアハウスを使用しますが、ノートブックプロセスはより小さなノートブックウェアハウスで実行され続けるため、クエリを実行していないときに使用する計算量は少なくなります。

    例えば、 notebooks というウェアハウスを特定のセルに使用するように指定するには、USE WAREHOUSE コマンドで SQL セルを追加するか、PythonセルのPythonコードにコマンドを追加します。

    SQL::
    USE WAREHOUSE notebooks;
    
    Copy
    Python::
    session.sql('USE WAREHOUSE notebooks;')
    
    Copy

    USE WAREHOUSE を指定してセルを実行した後、ノートブックセッションの残りの部分で実行されるすべてのセルは、指定されたウェアハウスを使用します。大きなウェアハウスでクエリを実行する必要がなくなった場合は、使用する小さなウェアハウスを指定する新しいセルを記述します。

  2. ノート全体に対してウェアハウスは大きめのものを選びましょう。

注意

このオプションを選択すると、大きなウェアハウスがノートブックのセッション全体に使用されるため、ノートブック全体のクレジット消費量が劇的に増加します。

ノートブックウェアハウスを変更するには:

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

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

  3. ノートブックの右上にある垂直省略記号(ワークシートのその他のアクション)を選択します。

  4. Notebook settings を選択します。

  5. 使用する新しいウェアハウスを選択します。

Snowflake Notebooks の管理者セットアップ手順

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

Snowflake Notebooks を使用するためのアカウントと展開に関する考慮事項

ネットワークで *.snowflake.app が許可リストにあり、Snowflakeに接続できることを確認します。このドメインが許可リストにあると、アプリは何の制限もなくSnowflakeサーバーと通信できます。

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

また、以下の注意事項が適用されます。

  • 以下のリージョンのアカウントは現在サポートされていません。

    • Google Cloud Platform(GCP)

    • Virtual Private Snowflake(VPS)

    • FedRAMP をサポートする US 政府リージョン

  • AWS PrivateLink または Azure Private Link の使用はサポートされていません。

  • アカウント名は組織内で一意である必要があります。

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

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

注釈

規約に同意するには、組織管理者(ORGADMIN ロールを使用)である必要があります。Snowflake組織で規約に同意する必要があるのは一度だけです。 アカウントのORGADMINロールの有効化 をご参照ください。

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

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

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

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

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

利用規約に同意しようとしたときにエラーが表示された場合は、ユーザープロファイルに名、姓、または電子メールアドレスが含まれていない可能性があります。管理者ロールを持っている場合は、 ユーザープロファイルにユーザー詳細を追加する を参照して、 Snowsight を使用してプロファイルを更新してください。または、アカウント管理者に連絡して アカウントを更新してください

Snowflake Notebooks の実行に関する考慮事項

Snowflake Notebookを実行するには、 仮想ウェアハウス が必要です。

Streamlitアプリの請求 と同様に、Snowflake Notebookはクエリを実行するためにウェブソケット接続を使用します。ウェブソケット接続がアクティブな間、仮想ウェアハウスはアクティブなままです。ノートブックには固有のセッションがあります。接続の有効期限は、ノートブックを閉じたとき、またはノートブックが最後に接続を使用してから約60分経過したときのいずれか早いほうになります。ノートブックをより長く使用するには、別のウェアハウスを使用するか、 STATEMENT_TIMEOUT_IN_SECONDS パラメーターを変更します。このパラメーターはウェアハウスまたはアカウントレベルで設定され、設定された期間後にノートブックセッションを終了します。

Snowflakeノートブックを実行するためのウェアハウスの推奨事項 をご参照ください。

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

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

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

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

次のステップ