CREATE STREAMLIT¶
Snowflakeに新しいStreamlitオブジェクトを作成するか、同じスキーマの既存のStreamlitオブジェクトを置き換えます。
- こちらもご参照ください。
SHOW STREAMLITS, DESCRIBE STREAMLIT, ALTER STREAMLIT, DROP STREAMLIT, UNDROP STREAMLIT
構文¶
CREATE [ OR REPLACE ] STREAMLIT [ IF NOT EXISTS ] <name>
[ FROM <source_location> ]
[ MAIN_FILE = '<filename>' ]
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>' ]
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
以下の構文はレガシーです。
重要
ROOT_LOCATION はレガシーパラメーターであり、将来のリリースで非推奨となる可能性があります。 ROOT_LOCATION を使用して作成されたStreamlitアプリではマルチファイル編集とGit統合はサポートされていません。
CREATE [ OR REPLACE ] STREAMLIT [ IF NOT EXISTS ] <name>
ROOT_LOCATION = '<stage_path_and_root_directory>'
MAIN_FILE = '<path_to_main_file_in_root_directory>'
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>' ]
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
必須パラメーター¶
nameStreamlitオブジェクトの識別子(つまり、名前)を指定します。この識別子は、オブジェクトが作成されるスキーマに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれている場合を除き、スペースや特殊文字を含めることはできません(例:
"My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
オプションのパラメーター¶
FROM source_location指定された場所からアプリのソースファイルをコピーします。場所は、内部の名前付きステージ内である必要があります。パスは相対パスでも完全修飾パスでもかまいません。たとえば、ステージの名前が
@streamlit_db.streamlit_schema.streamlit_stageの場合、有効なソースの場所は以下のようになります。ステージのルートへの完全修飾パス:
FROM '@streamlit_db.streamlit_schema.streamlit_stage'ステージのルートへの相対パス:
FROM '@streamlit_stage'ステージ内のサブディレクトリへの完全修飾パスまたは相対パス:
FROM '@streamlit_db.streamlit_schema.streamlit_stage/subdir'
ファイルのコピーは、 CREATE コマンドの実行時に一度だけ行われます。将来、ソースの場所が変更されても、Streamlitアプリは自動的に更新されません。
このパラメーターが指定されていない場合、Snowflakeは
streamlit_app.pyエントリポイントファイルを持つデフォルトアプリのソースファイルをコピーします。MAIN_FILE = 'filename'Streamlitエントリポイントファイルのファイル名。このファイルは、 FROM で指定したソースディレクトリのルートに存在する必要があります。
FROM の代わりに ROOT_LOCATION を使用する場合、 MAIN_FILE は ROOT_LOCATION からの相対パスになります。
DEFAULT:
'streamlit_app.py'QUERY_WAREHOUSE = warehouse_nameアプリを実行し、Streamlitアプリが発行した SQL クエリを実行するウェアハウスを指定します。
DEFAULT: 値なし
注釈
このパラメーターを指定せずにStreamlitオブジェクトを作成することもできますが、クエリウェアハウスを指定するまでアプリは実行されません。
COMMENT = 'string_literal'Streamlitオブジェクトのコメントを指定します。
DEFAULT: 値なし
TITLE = 'app_title'Snowsight に表示するStreamlitオブジェクトのタイトルを指定します。
DEFAULT:CREATE STREAMLIT に渡されるStreamlitオブジェクトの名前。
IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )インポートするファイルの場所(ステージ)、パス、および名前。
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )Streamlitアプリケーションコードが外部ネットワークにアクセスするために必要な 外部アクセス統合 の名前。
ROOT_LOCATION = 'stage_path_and_root_directory'Streamlit Pythonファイル、メディアファイル、
environment.ymlファイルを含む名前付きステージへのパスを指定します。ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage'
この例では、Streamlit ファイルは
streamlit_dbという名前のデータベースとstreamlit_schemaという名前のスキーマ内にあるstreamlit_stageという名前付きステージにあります。注釈
このパラメーターは、名前付き内部ステージ内の1つのディレクトリをポイントする必要があります。
Streamlit in Snowflake 用外部ステージはサポートされていません。
Snowflake Native App Framework 内で Streamlit アプリケーションオブジェクトを作成または交換する場合は、
ROOT_LOCATION = 'stage_path_and_root_directory'ではなくFROM 'relative_path_from_stage_root_directory'を使用してください。
アクセス制御の要件¶
ロールが以下の表にあるオブジェクトを所有していない場合、ロールはそれらのオブジェクトに対して次の 権限 を持つ必要があります。
権限 |
オブジェクト |
メモ |
|---|---|---|
CREATE STREAMLIT |
Streamlitオブジェクトを作成するスキーマ |
|
READ |
Streamlitアプリのソースファイルをコピーするステージ |
|
CREATE に STAGE |
Streamlitオブジェクトを作成するスキーマ |
この権限は、 ROOT_LOCATION パラメーターを持つStreamlitオブジェクトを作成する場合にのみ必要です。 |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
アプリを作成したら、初期化する必要があります。
重要
CREATE STREAMLIT を使用した後、以下のいずれかの操作を行うまで、Streamlitアプリは稼動しません。
新しいStreamlitオブジェクトに対して ALTER STREAMLIT ... ADD LIVE VERSION FROM LAST を実行する。
アプリを所有するロールを使用して、 Snowsight でアプリにアクセスする。
Streamlitオブジェクトを含むスキーマまたはデータベースをクローンする場合、Streamlitオブジェクトはクローンされません。
Streamlitアプリケーションで使用するパッケージを指定するには、
environment.ymlファイルを使用します。メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
ステージからStreamlitアプリを作成するには、次の例のように CREATE STREAMLIT コマンドを実行します。
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;
GitリポジトリからStreamlitアプリを作成するには、次の例のように CREATE STREAMLIT コマンドを実行します。
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_repo/branches/streamlit_branch/
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;