ALTER STREAMLIT¶
既存のStreamlitオブジェクトのプロパティを変更します。
- こちらもご参照ください。
CREATE STREAMLIT, SHOW STREAMLITS, DESCRIBE STREAMLIT, DROP STREAMLIT
構文¶
** ROOT_LOCATION で作成されたStreamlitオブジェクトについては、以下の構文のみがサポートされます。
重要
ROOT_LOCATION はレガシーパラメーターであり、今後のリリースで非推奨になる可能性があります。
コンテナランタイムの場合、 ROOT_LOCATION はサポートされていません。
ROOT_LOCATION を使用して作成されたStreamlitアプリでは、マルチファイル編集およびGit統合はサポートされていません。
パラメーター¶
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$WAREHOUSE_RUNTIME``を使用します。Pythonのバージョンは、``environment.yml``ファイルを使用して個別に選択します。
コンテナランタイム:Snowpark Container Servicesのコンピューティングプールでアプリを実行します。すべてのビューアーは、アプリの単一の長時間実行インスタンスを共有します。コンテナランタイム名にはPythonのバージョンが含まれます。以下のコンテナランタイムが有効です。
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``モジュールを使用してアクセスします。コンテナランタイムにおいて、シークレットは:code:
st.secrets`を使用してアクセスでき、環境変数にもマップされます。シークレットはEXTERNAL_ACCESS_INTEGRATIONSの外部アクセス統合に関連付けられていなければなりません。詳細については、:doc:/developer-guide/streamlit/app-development/secrets-and-configuration`を参照してください。ROOT_LOCATION = 'stage_path_and_root_directory'Streamlit Pythonファイル、メディアファイル、
environment.ymlファイルを含むルートステージ名とプレフィックスを指定します。このパラメーターは、名前付き内部ステージ内の1つのディレクトリをポイントする必要があります。
UNSET ...Streamlitオブジェクトの設定を解除する1つ以上のプロパティを指定し、それらをデフォルトにリセットします。
SECRETSEXTERNAL_ACCESS_INTEGRATIONSQUERY_WAREHOUSETITLECOMMENT
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 コマンドを実行します。
ウェアハウスランタイムからコンテナランタイムへの移行¶
Streamlitアプリをウェアハウスランタイムからコンテナランタイムに移行するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
コンテナランタイムには、PyPI のような外部パッケージインデックスからパッケージをインストールするための外部アクセス統合が必要です。それ以外の場合は、デフォルトのプリインストールパッケージのみが使用できます。詳細については、 Streamlitアプリの依存関係を管理する をご参照ください。
既存のウェアハウスランタイムアプリにシークレットを追加する¶
既存のウェアハウスランタイムStreamlitアプリにシークレットを追加するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
シークレットは外部アクセス統合に関連付けられていなければなりません。ウェアハウスランタイムにおいて、シークレットは``_snowflake``モジュールを使用してアクセスします。コンテナランタイムにおいて、シークレットは:code:st.secrets`を使用して、および環境変数としてアクセスできます。詳細については、:doc:/developer-guide/streamlit/app-development/secrets-and-configuration`を参照してください。
アプリからシークレットを削除する¶
Streamlitアプリからすべてのシークレットを削除するには、次の例に示すようにALTER STREAMLITコマンドを実行します。
これにより、アプリからすべてのシークレットの関連付けが削除されます。基になるシークレットオブジェクトはSnowflakeアカウントに保持されます。外部アクセス統合も削除するには、両方のプロパティを解除します。
詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。
Streamlitアプリの名前を変更する¶
Streamlitアプリの名前を変更するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。
