ALTER STREAMLIT¶
既存のStreamlitオブジェクトのプロパティを変更します。
- こちらもご参照ください。
CREATE STREAMLIT, SHOW STREAMLITS, DESCRIBE STREAMLIT, DROP STREAMLIT
構文¶
ALTER STREAMLIT [ IF EXISTS ] <name> SET
[ 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> [ , ... ] ) ]
ALTER STREAMLIT [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER STREAMLIT <name> COMMIT
ALTER STREAMLIT <name> PUSH [ TO <git_branch_uri> ]
[
{
GIT_CREDENTIALS = <snowflake_secret>
| USERNAME = <git_username> PASSWORD = <git_password>
}
NAME = <git_author_name>
EMAIL = <git_author_email>
]
[ COMMENT = <git_push_comment> ]
ALTER STREAMLIT <name> ABORT
ALTER STREAMLIT <name> PULL
ALTER STREAMLIT <name> ADD LIVE VERSION FROM LAST
** ROOT_LOCATION で作成されたStreamlitオブジェクトについては、以下の構文のみがサポートされます。
重要
ROOT_LOCATION はレガシーパラメーターであり、今後のリリースで非推奨になる可能性があります。
コンテナランタイムの場合、 ROOT_LOCATION はサポートされていません。
ROOT_LOCATION を使用して作成されたStreamlitアプリでは、マルチファイル編集およびGit統合はサポートされていません。
ALTER STREAMLIT [ IF EXISTS ] <name> SET
[ ROOT_LOCATION = '<stage_path_and_root_directory>' ]
[ MAIN_FILE = '<path_to_main_file>']
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>']
[ TITLE = '<app_title>' ]
[ IMPORTS = ( '<stage_path_and_file_name_to_read>' [ , ... ] ) ]
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <integration_name> [ , ... ] ) ]
ALTER STREAMLIT [ IF EXISTS ] <name> RENAME TO <new_name>
パラメーター¶
nameStreamlitオブジェクトの識別子。識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
SET ...Streamlitオブジェクトに設定するプロパティを指定します。
MAIN_FILE = 'filename'Streamlitエントリポイントファイルを指定します。要件はランタイムのタイプによって異なります。
ウェアハウスランタイム:このファイルは、FROM で指定したソースディレクトリのルートに存在する必要があります。パスではなく、ファイル名のみが許可されます。
コンテナランタイム:ファイルはルートまたはサブディレクトリにあります。
'subdir/my_app.py'のように、ソースディレクトリのルートからの相対パスを指定することができます。ROOT_LOCATION はウェアハウスランタイムしかサポートしていませんが、アプリが FROM ではなく ROOT_LOCATION で作成された場合、MAIN_FILE は ROOT_LOCATION への相対パスである可能性があります。
QUERY_WAREHOUSE = warehouse_nameStreamlitアプリが使用するウェアハウスを指定します。動作はランタイムのタイプによって異なります。
ウェアハウスランタイム:アプリコードを実行して SQL クエリを実行するウェアハウスを指定します。これはコードウェアハウスです。クエリのために、アプリコード内の別のウェアハウスに手動で切り替えることをお勧めします。
コンテナランタイム:アプリが発行した SQL クエリを実行するウェアハウスを指定します。アプリコードは COMPUTE_POOL で指定されたコンピューティングプール上で実行されます。
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
重要
ウェアハウスランタイムからコンテナランタイムに変更する場合は、必要に応じて COMPUTE_POOL パラメーターも設定する必要があります。コンテナランタイムにはコンピューティングプールが必要です。
COMPUTE_POOL = compute_pool_nameStreamlitアプリを実行するコンピューティングプールを指定します。このパラメーターは、コンテナランタイムを使用する場合に必要であり、ウェアハウスランタイムでは無視されます。
COMMENT = 'string_literal'Streamlitオブジェクトのコメントを追加するか、既存のコメントを上書きします。
TITLE = 'app_title'Snowsight に表示するStreamlitアプリのタイトルを追加します。
IMPORTS = ( 'stage_path_and_file_name_to_read' [ , ... ] )インポートするファイルの場所(ステージ)、パス、および名前。これはウェアハウスランタイムにのみ適用され、コンテナランタイムでは無視されます。
EXTERNAL_ACCESS_INTEGRATIONS = ( integration_name [ , ... ] )Streamlitアプリケーションコードが外部ネットワークにアクセスするために必要な 外部アクセス統合 の名前。
コンテナランタイムの場合、PyPI のような外部パッケージインデックスからパッケージをインストールするには、外部アクセス統合が必要です。すべてのランタイムタイプで、外部アクセス統合により、アプリはアウトバウンドネットワークリクエストを行えるようになります。
SECRETS = ( 'snowflake_secret_name' = snowflake_secret [ , ... ] )SnowflakeのシークレットをStreamlitアプリコードで参照できるシークレット名にマッピングします。シークレット名(左側)はコード内でシークレットを参照する方法で、シークレットオブジェクト(右側)はSnowflakeシークレットの識別子です。
例:
SECRETS = ('api_key' = my_database.my_schema.my_secret)シークレットは、ウェアハウスランタイムで
_snowflakeモジュールを介してのみ利用でき、EXTERNAL_ACCESS_INTEGRATIONS の外部アクセス統合に関連付けられている必要があります。コンテナランタイムでは、このパラメーターはサポートされておらず、代わりに SQL 関数を作成してシークレットにアクセスする必要があります。詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。ROOT_LOCATION = 'stage_path_and_root_directory'Streamlit Pythonファイル、メディアファイル、
environment.ymlファイルを含むルートステージ名とプレフィックスを指定します。このパラメーターは、名前付き内部ステージ内の1つのディレクトリをポイントする必要があります。
RENAME TO new_nameStreamlitオブジェクトの新しい識別子を指定します。識別子は、オブジェクトが作成されたスキーマに対して一意である必要があります。
識別子の詳細については、 識別子の要件 をご参照ください。
COMMITLIVE バージョンで保留中の編集を新しい LAST バージョンにコミットします。コミット直後、 LIVE バージョンは LAST バージョンと同一になります。
PUSHコミットされた最新の変更をGitリポジトリにプッシュします。
TO git_branch_uriが指定されていない場合は、ベースバージョンに保存されているブランチを使用します。ベースバージョンがGitブランチに基づいていない場合は、エラーをスローします。
TO git_branch_uriコミットした変更を指定したブランチにプッシュします。
GIT_CREDENTIALS = snowflake_secretリポジトリとの認証に使用する認証情報が含まれるSnowflakeシークレットを指定します。
USERNAME = git_usernameGitのユーザー名を指定します。
PASSWORD = git_passwordGitのパスワードを指定します。
NAME = git_author_name使用するgit authorの名前を指定します。
EMAIL = git_author_emailgit authorの名前として使用する有効なメールアドレスを指定します。
COMMENT = git_push_commentgit pushに含めるコメントを指定します。
ABORTコミットされていない Snowsight で行われたすべての編集を含む、アプリの現在のライブバージョンを削除します。
PULL最新の変更をプルします。プルする前に、現在のライブバージョンを中止する必要があります。
ADD LIVE VERSION FROM LAST最後にコミットされたバージョンに基づいて、アプリの新しいライブバージョンを作成します。
Streamlitアプリの所有者が Snowsight でアプリを開いたときにライブバージョンが存在しない場合、このコマンドが自動的に実行されます。別のユーザーがアプリにアクセスしたときにライブバージョンが存在しない場合、エラーが返されます。
アクセス制御の要件¶
ロールが以下の表にあるオブジェクトを所有していない場合、ロールはそれらのオブジェクトに対して次の 権限 を持つ必要があります。
権限 |
オブジェクト |
メモ |
|---|---|---|
OWNERSHIP |
変更するStreamlitオブジェクト |
|
USAGE |
Streamlitアプリが使用するウェアハウス |
この権限は、QUERY_WAREHOUSE に新しい値を設定する場合にのみ必要です。 |
USAGE |
Streamlitアプリが使用するコンピューティングプール |
この権限は、COMPUTE_POOL に新しい値を設定する場合にのみ必要です。 |
USAGE |
Streamlitアプリで使用される外部アクセス統合 |
この権限は、EXTERNAL_ACCESS_INTEGRATIONS に新しい値を設定する場合にのみ必要です。 |
USAGE |
Streamlitアプリが使用するシークレット |
この権限は、SECRETS に新しい値を設定する場合にのみ必要です。 |
スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
アプリのライブバージョンを削除した場合、ユーザーは以下のいずれかのアクションを実行するまでアプリにアクセスできません。
Streamlitオブジェクトに対して ALTER STREAMLIT...ADD LIVE VERSION FROM LAST を実行します。
アプリを所有するロールを使用して、 Snowsight でアプリにアクセスします。
Snowsight でStreamlitアプリを表示しながら ALTER STREAMLIT コマンドを実行する場合、アプリはランタイムのタイプに応じて変更を異なる方法で反映します。
ウェアハウスランタイム:アプリは Run を選択するまで変更を反映しません。
コンテナランタイム:アプリは次にアプリを操作したときすぐに変更を反映します。
変更をアプリに反映させる場合は、アプリをリロードするか再起動する必要があります。
ウェアハウスランタイムからコンテナランタイムに移行する場合:
RUNTIME_NAME および COMPUTE_POOL の両方を設定する必要があります。
アプリはPython 3.11とStreamlit 1.50以降を使用する必要があります。
アプリコードがスレッドセーフで、同時ビューアー用に最適化されていることを確認してください。
get_active_session()をst.connection("snowflake")に置き換えます。_snowflakeモジュールをネイティブPythonの同等のものに置き換えます。
完全な移行のチェックリストについては、 ランタイム環境間の移行 をご参照ください。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
クエリウェアハウスを変更する¶
Streamlitアプリが使用するウェアハウスを変更するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
ALTER STREAMLIT my_app
SET QUERY_WAREHOUSE = new_warehouse;
ウェアハウスランタイムからコンテナランタイムへの移行¶
Streamlitアプリをウェアハウスランタイムからコンテナランタイムに移行するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
ALTER STREAMLIT my_app SET
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
EXTERNAL_ACCESS_INTEGRATIONS = (pypi_access_integration);
コンテナランタイムには、PyPI のような外部パッケージインデックスからパッケージをインストールするための外部アクセス統合が必要です。それ以外の場合は、デフォルトのプリインストールパッケージのみが使用できます。詳細については、 Streamlitアプリの依存関係を管理する をご参照ください。
既存のウェアハウスランタイムアプリにシークレットを追加する¶
既存のウェアハウスランタイムStreamlitアプリにシークレットを追加するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
ALTER STREAMLIT my_app SET
EXTERNAL_ACCESS_INTEGRATIONS = (my_access_integration)
SECRETS = ('api_key' = my_database.my_schema.my_api_secret);
シークレットはウェアハウスのランタイムでのみ利用可能で、外部アクセス統合に関連付けられている必要があります。コンテナランタイムのStreamlitアプリは SQL 関数を使用してシークレットにアクセスする必要があります。詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。
Streamlitアプリの名前を変更する¶
Streamlitアプリの名前を変更するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
ALTER STREAMLIT old_app_name
RENAME TO new_app_name;
