CREATE STREAMLIT¶
Creates a new Streamlit object in Snowflake or replaces an existing Streamlit object in the same schema.
- こちらもご参照ください。
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> ]
[ RUNTIME_NAME = '<runtime_name>' ]
[ COMPUTE_POOL = <compute_pool_name> ]
[ COMMENT = '<string_literal>' ]
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
[ SECRETS = ( '<snowflake_secret_name>' = <snowflake_secret> [ , ... ] ) ]
以下の構文はレガシーです。
重要
ROOT_LOCATION is a legacy parameter and may be deprecated in a future release. For Streamlit apps created using ROOT_LOCATION, multi-file editing and Git integration are not supported.
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> [ , ... ] ) ]
必須パラメーター¶
nameSpecifies the identifier (i.e. name) for the Streamlit object. This identifier must be unique for the schema where the object is created.
In addition, the identifier must start with an alphabetic character and can't contain spaces or special characters unless the entire identifier string is enclosed in double quotes (e.g.
"My object"). Identifiers enclosed in double quotes are also case-sensitive.詳細については、 識別子の要件 をご参照ください。
オプションのパラメーター¶
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エントリポイントファイルを指定します。要件はランタイムのタイプによって異なります。
Warehouse runtimes: The file must be in the root of the source directory specified in FROM. Only a filename is allowed, not a path.
コンテナランタイム:ファイルはルートまたはサブディレクトリにあります。
'subdir/my_app.py'のように、ソースディレクトリのルートからの相対パスを指定することができます。
If you are using ROOT_LOCATION instead of FROM, then MAIN_FILE can be a path relative to ROOT_LOCATION even though ROOT_LOCATION only supports warehouse runtimes.
DEFAULT:
'streamlit_app.py'QUERY_WAREHOUSE = warehouse_nameStreamlitアプリが使用するウェアハウスを指定します。動作はランタイムのタイプによって異なります。
ウェアハウスランタイム:アプリコードを実行して SQL クエリを実行するウェアハウスを指定します。これはコードウェアハウスです。クエリのために、アプリコード内の別のウェアハウスに手動で切り替えることをお勧めします。
コンテナランタイム:アプリが発行した SQL クエリを実行するウェアハウスを指定します。アプリコードは COMPUTE_POOL で指定されたコンピューティングプール上で実行されます。
DEFAULT: 値なし
注釈
このパラメーターを指定せずにStreamlitオブジェクトを作成することもできますが、クエリウェアハウスを指定するまでアプリは実行されません。
RUNTIME_NAME = 'runtime_name'Streamlitアプリのランタイム環境を指定します。ランタイムは、アプリがどこでどのように実行されるかを決定します。ランタイム名は、
SYSTEM$ST_<タイプ>_RUNTIME_PY<version>というパターンに従います。ウェアハウスランタイム:仮想ウェアハウスでアプリを実行します。各ビューアーは、アプリの個人用インスタンスを取得します。次のウェアハウスランタイムは有効です。
SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_9SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_10SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11
コンテナランタイム:Snowpark Container Servicesのコンピューティングプールでアプリを実行します。すべてのビューアーは、アプリの単一の長時間実行インスタンスを共有します。次のコンテナランタイムは有効です。
SYSTEM$ST_CONTAINER_RUNTIME_PY3_11
ランタイムは最新のウェアハウスランタイムにデフォルト設定されます。
DEFAULT:
SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11COMPUTE_POOL = compute_pool_nameStreamlitアプリを実行するコンピューティングプールを指定します。このパラメーターは、コンテナランタイムを使用する場合に必要であり、ウェアハウスランタイムでは無視されます。
DEFAULT: 値なし
COMMENT = 'string_literal'Streamlitオブジェクトのコメントを指定します。
DEFAULT: 値なし
TITLE = 'app_title'Specifies a title for the Streamlit object to display in Snowsight.
DEFAULT:CREATE STREAMLIT に渡されるStreamlitオブジェクトの名前。
IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )The location (stage), path, and name of the file(s) to import. This only applies to warehouse runtimes and is ignored for container runtimes.
DEFAULT: 値なし
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )Streamlitアプリケーションコードが外部ネットワークにアクセスするために必要な 外部アクセス統合 の名前。
コンテナランタイムの場合、PyPI のような外部パッケージインデックスからパッケージをインストールするには、外部アクセス統合が必要です。すべてのランタイムタイプで、外部アクセス統合により、アプリはアウトバウンドネットワークリクエストを行えるようになります。
DEFAULT: 値なし
SECRETS = ( 'snowflake_secret_name' = snowflake_secret [ , ... ] )SnowflakeのシークレットをStreamlitアプリコードで参照できるシークレット名にマッピングします。シークレット名(左側)はコード内でシークレットを参照する方法で、シークレットオブジェクト(右側)はSnowflakeシークレットの識別子です。
例:
SECRETS = ('api_key' = my_database.my_schema.my_secret)シークレットは、ウェアハウスランタイムで
_snowflakeモジュールを介してのみ利用でき、EXTERNAL_ACCESS_INTEGRATIONS の外部アクセス統合に関連付けられている必要があります。コンテナランタイムでは、このパラメーターはサポートされておらず、代わりに SQL 関数を作成してシークレットにアクセスする必要があります。詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。DEFAULT: 値なし
ROOT_LOCATION = 'stage_path_and_root_directory'Specifies the path to the named stage containing the Streamlit Python files, media files, and the
environment.ymlfile, for example: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'を使用してください。
アクセス制御の要件¶
ロールが以下の表にあるオブジェクトを所有していない場合、ロールはそれらのオブジェクトに対して次の 権限 を持つ必要があります。
権限 |
オブジェクト |
Notes |
|---|---|---|
CREATE STREAMLIT |
Schema where you create the Streamlit object |
|
READ |
Streamlitアプリのソースファイルをコピーするステージ |
|
USAGE |
Streamlitアプリが使用するウェアハウス |
|
USAGE |
Streamlitアプリが使用するコンピューティングプール |
この権限は、アプリがコンテナランタイムを使用する場合にのみ必要です。 |
USAGE |
Streamlitアプリで使用される外部アクセス統合 |
この権限は、アプリが外部アクセス統合を使用する場合にのみ必要です。コンテナランタイムの場合、この権限は、 PyPI のような外部パッケージインデックスからパッケージをインストールするために必要です。 |
USAGE |
Secrets used by the Streamlit app |
この権限は、アプリがシークレットを使用する場合にのみ必要であり、ウェアハウスのランタイムにのみ適用されます。 |
CREATE STAGE |
Schema where you create the Streamlit object |
この権限は、 ROOT_LOCATION パラメーターを持つStreamlitオブジェクトを作成する場合にのみ必要です。 |
スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
アプリを作成したら、初期化する必要があります。
重要
CREATE STREAMLIT を使用した後、以下のいずれかの操作を行うまで、Streamlitアプリは稼動しません。
新しいStreamlitオブジェクトに対して ALTER STREAMLIT ... ADD LIVE VERSION FROM LAST を実行する。
アプリを所有するロールを使用して、 Snowsight でアプリにアクセスする。
Streamlitオブジェクトを含むスキーマまたはデータベースをクローンする場合、Streamlitオブジェクトはクローンされません。
Streamlitアプリケーションで使用するパッケージを指定するには、ソースファイルに依存関係ファイルを含めます。依存関係ファイルの形式は、ランタイムのタイプによって異なります。
ウェアハウスランタイム:
environment.ymlファイルを使用します。コンテナランタイム:
pyproject.tomlまたはrequirements.txtファイルを使用します。
詳細については、 Streamlitアプリの依存関係を管理する をご参照ください。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
デフォルトのソースファイルでStreamlitアプリを作成する¶
To create a container-runtime Streamlit app from built-in default files, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
QUERY_WAREHOUSE = my_warehouse;
By default, apps use the latest warehouse runtime if RUNTIME_NAME isn't specified. To create a warehouse-runtime Streamlit app from built-in default files, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
QUERY_WAREHOUSE = my_warehouse;
カスタムソースファイルからStreamlitアプリを作成する¶
To create a container-runtime Streamlit app from custom source files, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool;
To create a warehouse-runtime Streamlit app from custom source files, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;
シークレットでウェアハウスランタイムのStreamlitアプリを作成する¶
To create a warehouse-runtime Streamlit app with secrets, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_stage
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse
SECRETS = ('api_key' = streamlit_db.streamlit_schema.my_api_secret);
コンテナランタイムのStreamlitアプリは SQL 関数を使用してシークレットにアクセスする必要があります。詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。
GitリポジトリからStreamlitアプリを作成する¶
To create a Streamlit app from a Git repository, run the CREATE STREAMLIT command as shown in the following example:
CREATE STREAMLIT hello_streamlit
FROM @streamlit_db.streamlit_schema.streamlit_repo/branches/streamlit_branch/
MAIN_FILE = 'streamlit_main.py'
QUERY_WAREHOUSE = my_warehouse;
