プライベートノートブック¶
Snowsight では、ユーザー所有のプライベートノートブックを作成できます。このプライベートノートブックは、パーソナルデータベースに保存され、プライベートノートブックの作成、変更、管理ができる専用のワークスペースです。ロールベースの所有権とは異なり、個人データベース内のオブジェクトは個々のユーザーによって所有されます。誰かがあなたに適切な権限を与えるのを待つことなく、個人データベースにプライベートなノートブックを作成することができます。
注釈
個人データベースのライフサイクルは、その所有者と直接リンクしています。ユーザーがSnowflakeアカウントから削除された場合、個人データベースも削除されます。そのため、Snowflakeでは、ビジネスクリティカルなワークロードやプロダクションワークロードに個人用データベースを使用しないことを推奨しています。
あなたの個人データベースは、 USER$username
(例えば、 USER$JOHNDOE
)という形であなたのユーザー名にちなんで命名されます。プレフィックス USER$
を付けてリファレンスすることもできます。 Data » Databases で個人データベースの詳細を表示できます。
プライベートNotebooksは以下のタスクを可能にします。
プライベートでインタラクティブにコードを開発し、データやモデリングを実験します。
これらのプロジェクトは、ノートブックを個人データベースから通常の非個人データベースに複製することで展開します。
注釈
ユーザーは、個人データベースにテーブルやその他のオブジェクトを作成することはできません。制限と制約の完全なリストについては、 制限事項 をご覧ください。
プライベートノートブックを使用するための前提条件¶
プライベートノートブックを作成して使用する前に、 ACCOUNTADMIN ロールを持つ管理者は以下のタスクを完了する必要があります。
- アカウントレベルまたは特定のユーザーに対して、個人データベース機能を有効にします。
パーソナルデータベースは、ノートブックをプライベートノートブックとして動作させるためのSnowflakeオブジェクトです。このタスクの完了に関する情報については、以下のセクションを参照してください。
- 必要であれば、プライベートノートブックを作成するユーザーに対して、セカンダリロールを適切に設定してください。
このタスクの完了に関する情報(最近の BCR バンドルが有効になっているかどうかに依存するかもしれません)については、 プライベートノートブックユーザーのすべてのセカンダリロールのアクティブ化 をご参照ください。
重要
管理者が個人データベースを有効にした後、影響を受けるユーザーはサインアウトし、新しいユーザーインターフェイスの動作を確認するためにサインインし直す必要があります。
プライベートノートブックの作成については、 新しいロールを作成する を参照してください。
プライベートノートブックユーザーのすべてのセカンダリロールのアクティブ化¶
プライベートノートブックを作成する前に、 すべての セカンダリロールを有効にする必要があります。これは、プライベートノートブックがユーザーの所有物であり、ユーザーの主なロールではないからです。
ユーザーのすべてのセカンダリ・ロールを既定のロールで有効にするには、ユーザーまたは管理者は ALTER USER コマンドを使用して、そのユーザーの DEFAULT_SECONDARY_ROLES オブジェクト・プロパティを設定解除するか、 ('ALL') に設定します。
例:
ALTER USER my_user UNSET DEFAULT_SECONDARY_ROLES;
ALTER USER my_user SET DEFAULT_SECONDARY_ROLES = ('ALL');
ユーザーまたは管理者が上記の SQL ステートメントを実行した後、ユーザーは Snowsight (Projects » Notebooks)、または new worksheetで SQL コマンドを実行することで、プライベートノートブックを作成することができます。
既存のワークシートで SQL コマンドを実行したいユーザーは、プライベート・ノートブックを作成する前に、次の SQL ステートメントを実行する必要があります。
USE SECONDARY ROLES ALL;
アカウントのプライベートノートブックを有効または無効にします。¶
Snowflakeアカウントでプライベートノートブックを有効または無効にするには、 ENABLE_PERSONAL_DATABASE パラメーターを使用します。
ENABLE_PERSONAL_DATABASE の特性:
- 型:
ユーザー --- アカウント > ユーザーに設定可能
- データ型:
ブール値
- 説明:
ユーザーがプライベートノートブックにアクセスできるかどうかを制御します。
- 値:
TRUE
: ユーザーが個人データベースにアクセスできるようにします。FALSE
: ユーザーが個人データベースにアクセスできないようにします。- デフォルト:
FALSE
例¶
アカウントのプライベートノートブックを有効にするには、 ALTER ACCOUNT コマンドを使用して、 ENABLE_PERSONAL_DATABASE パラメーターを TRUE にセットします。例:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
別のアカウントを変更することはできず、変更できるのは現在のアカウントのみです。このコマンドの詳細情報については、 ALTER ACCOUNT をご参照ください。
アカウントのプライベートノートブックを無効にするには、同じコマンドを実行しますが、パラメーターを FALSE にセットします。例:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
ENABLE_PERSONAL_DATABASE パラメーターの現在値を確認するには、以下の SHOW PARAMETERS コマンドを実行します。
SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
管理者がアカウントのパラメーターを有効にした後、ユーザーはサインアウトして再度サインインする必要があります。その後、ユーザーは USE DATABASE コマンドを実行することで、個人データベースが作成されたことを確認できます。
USE DATABASE USER$;
現在のユーザー名を明示的に指定するには、 USER$
プレフィックスに続いてログインユーザー名を指定します。例:
USE DATABASE USER$bobr;
これらのコマンドは、現在のユーザーの個人データベースが存在する場合に成功します。USE DATABASE コマンドは、個人データベースが存在しない場合(前提タスクが完了していないため)、または現在のユーザーの個人データベースでない場合にエラーを返します。例えば、 jlap
が現在のユーザーでない場合、以下のメッセージが表示されます。
USE DATABASE USER$jlap;
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;
アカウントレベルで個人データベースを有効にした場合、必要に応じて個々のユーザーの個人データベースを無効にすることができます。ユーザーを無効にするには、同じコマンドを実行しますが、パラメーターを FALSE にセットします。例:
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
ユーザー 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.
注釈
特定のユーザーの個人データベースを有効にしてから無効にすると、そのユーザーは作成された個人データベースへのアクセスを失いますが、データベースは存在し続けます。
プライベートノートブックの作成¶
新しいプライベートノートブックを作成するには、以下の手順に従ってください。
Snowsight にサインインします。
左側のナビゲーションメニューで Projects » Notebooks を選択します。
+ Notebook を選択します。
Owner リストからユーザー名を選択してください。
ノートブックの名前を入力します。
注釈
AWS リージョンを使用している場合、ノートブックのランタイム環境を指定することができます: Warehouse Runtime または Container Runtime のいずれかです。
Notebook location を選択します。これはノートブックを保存するデータベースとスキーマです。これらはノートブック作成後に変更することはできません。アカウントで個人データベースを有効にした後にプライベートノートブックを作成した場合、個人データベースはデフォルトで Notebook location の下にあらかじめ入力されています。しかし、プライベート・ノートブックを作成していて、個人データベースにスキーマが1つしかない場合、 Notebook location オプションは使用できません。
注釈
Notebook location ドロップダウンに、 Create Notebook ダイアログを開いた後に作成されたデータベースが表示されない場合があります。最近作成したデータベース、スキーマ、ウェアハウスが見つからない場合は、ブラウザのウィンドウを再読み込みしてみてください。
ノートブック内のデータのクエリは、この場所に限定されません。Notebooksでは、アクセスできる場所であればどこでもデータをクエリできます。場所を指定するには、 USE WAREHOUSE と USE SCHEMA を実行します。
Python の環境として Run on warehouse または Run on container を選択します。
(オプション) ノートブックが発行した Query warehouse を選択して、任意の SQL およびSnowparkのクエリを実行します。
ノートブック固有のタスクを実行するには、 Notebook warehouse を選択します。Snowflakeでは、 SYSTEM$STREAMLIT_NOTEBOOK_WH、各アカウントでノートブックを実行するためにプロビジョニングされる、Snowflakeが管理するウェアハウスである $ を使用することを推奨しています。
Create を選択してノートブックを作成し、開きます。
プライベートノートブックの整理¶
プライベートノートブックを整理する手段としてスキーマを作成し、使用することができます。デフォルトでは、個人データベースには PUBLIC と INFORMATION_SCHEMA という標準スキーマが含まれています。
通常の方法で新しいスキーマを作成し、使用しますが、スキーマを作成する際には個人用データベースを使用していることを確認してください。例:
USE DATABASE USER$bobr;
CREATE SCHEMA bobr_schema;
USE SCHEMA bobr_schema;
また、 ALTER SCHEMA コマンドを個人データベースのスキーマに対して使用することもできます。 SHOW SCHEMAS コマンドを使用すると、個人データベースに属するスキーマを確認することができます。例:
ALTER SCHEMA bobr_schema RENAME TO bobr_personal_schema;
SHOW TERSE SCHEMAS;
+-------------------------------+----------------------+------+---------------+-------------+
| created_on | name | kind | database_name | schema_name |
|-------------------------------+----------------------+------+---------------+-------------|
| 2024-10-28 19:33:18.437 -0700 | BOBR_PERSONAL_SCHEMA | NULL | USER$BOBR | NULL |
| 2024-10-29 14:11:33.267 -0700 | INFORMATION_SCHEMA | NULL | USER$BOBR | NULL |
| 2024-10-28 12:47:21.502 -0700 | PUBLIC | NULL | USER$BOBR | NULL |
+-------------------------------+----------------------+------+---------------+-------------+
プライベートNotebooksの一般利用可用性¶
その開発のある時点で、個人データベースの外にノートブックを再作成したくなるかもしれません。この変更を行うには、 CREATE NOTEBOOK コマンドを使って元のノートブックを複製します。そうすると、ノートブックが他のユーザーから見えるようになります。
例:
CREATE NOTEBOOK bobr_prod_notebook
FROM 'snow://notebook/USER$BOBR.PUBLIC.bobr_private_notebook/versions/version$1/'
QUERY_WAREHOUSE = 'PUBLIC_WH'
MAIN_FILE = 'notebook_app.ipynb'
COMMENT = 'Duplicated from personal database';
Notebook BOBR_PROD_NOTEBOOK successfully created.
本番データベースで作成されたノートブックからプライベート・ノートブックを作成することもできます。
注釈
このタスクは、 Snowsight ユーザー・インターフェイスでは完了できません。明示的な SQL コマンド(ノートブックの SQL セルやワークシート内など)を使用する必要があります。
FROM 'source_location'
指定したステージングされた場所にある
.ipynb
ファイルからノートブックを作成することを指定します。ステージ上のファイルからノートブックを作成するには、
source_location
をステージ上のファイルの場所に設定し、 MAIN_FILE パラメーターをファイルの名前に設定します。プライベートノートブックからノートブックを作成する場合(例: プライベートノートブックを共有で使用できるようにする場合)は、このパラメーターを設定します。
'snow://notebook/USER$username.schema.notebook/versions/version$1/'
条件:
username
は、ユーザー名です。schema
は、プライベートノートブックを含むスキーマの名前です。notebook
は、プライベートノートブックの名前です。
このパラメーターが指定されない場合、ノートブックオブジェクトはテンプレートノートブックから作成されます。
プライベートノートや個人データベースの情報表示¶
個人ユーザーは、 Snowsight を使用して、自分の Notebooks に関する情報を表示できます。 Projects » Notebooks に移動します。ノートブックの所有者がユーザーとしてリストされます。
個人データベースを含むデータベースに関する情報は、 Data » Databases してください。どのデータベースが個人用データベースであるかは、 USER$
というプレフィックスがついているのですぐにわかります。
管理者の可視性¶
MANAGE GRANTS 権限を持つロールは、個々のユーザーが所有する個人オブジェクトを含め、アカウント内のすべてのオブジェクトを可視化できます。例えば、 ACCOUNTADMIN のようなロールは、既定の設定では個人データベースを含むすべてのデータベースを表示できます。これらのロールは、個人データベース内のスキーマやプライベートノートブックの詳細にもアクセスできます。
アカウント内のすべての個人データベースの詳細を表示するには、 DATABASES Account Usage ビュー をクエリします。
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES;
管理者は、 DESCRIBE NOTEBOOK を使用して、特定のプライベートノートブックのプロパティを表示できます。
DESCRIBE NOTEBOOK USER$.PUBLIC.bobr_private_notebook;
Snowsight の Projects » Notebooks ページでは、管理者は、 Notebooks リスト内の他のユーザーに属するプライベートノートブックオブジェクトを見ることができません。
現在のユーザーの個人データベースを表示します。
SHOW DATABASES LIKE 'USER$BOBR';
個人データベースの場合、 kind
列の値は PERSONAL DATABASE
です。
制限事項¶
プライベートノートの制限¶
プライベートノートブックはスケジュールできません。
個人データベースの制限¶
ユーザーがプライベートノートブックやスキーマを作成できるのは、個人データベース内だけです。例えば、テーブルの作成とロードはできません。
ユーザーは個人データベースを変更、クローン、複製することはできません。
ユーザーは、個人データベースと非個人データベース間でスキーマを移動することはできません。
個人のデータベースをロールと共有することはできません。
管理者は、複製を目的として個人データベースを複製グループに追加することはできません。
ユーザーは個人データベースのオブジェクトを共有することはできません。
ユーザーはNative Apps(アプリパッケージ)に個人データベースを追加することはできません。
ユーザーおよび管理者は、
USER$.PUBLIC
スキーマを削除したり、名前を変更したりすることはできません。
コラボレーションの制限¶
管理者はデータベース・ロールを作成できません。
ユーザーおよび管理者は、自分のスキーマの
CREATE <オブジェクト>
権限を他人に与えることはできません。ユーザーは、自分のオブジェクトの権限を共有やアプリケーション・パッケージに付与することはできません。
ユーザーは、個人データベース上の
REFERENCE_USAGE
権限を共有またはパッケージに付与することはできません。ユーザーは、共有に個人データベースを追加することはできません(アカウント間で共有するため)。