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
Copy

For Streamlit objects created with ROOT_LOCATION, only the following syntax is supported:

重要

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.

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>
Copy

パラメーター

name

Streamlitオブジェクトの識別子。識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

SET ...

Streamlitオブジェクトに設定するプロパティを指定します。

MAIN_FILE = 'filename'

Streamlitエントリポイントファイルを指定します。要件はランタイムのタイプによって異なります。

  • ウェアハウスランタイム:このファイルは、FROM で指定したソースディレクトリのルートに存在する必要があります。パスではなく、ファイル名のみが許可されます。

  • コンテナランタイム:ファイルはルートまたはサブディレクトリにあります。'subdir/my_app.py' のように、ソースディレクトリのルートからの相対パスを指定することができます。

    If your app was created with ROOT_LOCATION instead of FROM, then MAIN_FILE can be a path relative to ROOT_LOCATION even though ROOT_LOCATION only supports warehouse runtimes.

QUERY_WAREHOUSE = warehouse_name

Specifies the warehouse used by the Streamlit app. The behavior depends on the runtime type:

  • ウェアハウスランタイム:アプリコードを実行して SQL クエリを実行するウェアハウスを指定します。これはコードウェアハウスです。クエリのために、アプリコード内の別のウェアハウスに手動で切り替えることをお勧めします。

  • コンテナランタイム:アプリが発行した SQL クエリを実行するウェアハウスを指定します。アプリコードは COMPUTE_POOL で指定されたコンピューティングプール上で実行されます。

RUNTIME_NAME = 'runtime_name'

Streamlitアプリのランタイム環境を指定します。これを使用して、ウェアハウスからコンテナに、コンテナからウェアハウスに、またはあるバージョンから別のバージョンにランタイムを変更します。ランタイム名は、SYSTEM$ST_<タイプ>_RUNTIME_PY<version> というパターンに従います。

  • ウェアハウスランタイム:仮想ウェアハウスでアプリを実行します。各ビューアーは、アプリの個人用インスタンスを取得します。次のウェアハウスランタイムは有効です。

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_9

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_10

    • SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

  • コンテナランタイム:Snowpark Container Servicesのコンピューティングプールでアプリを実行します。すべてのビューアーは、アプリの単一の長時間実行インスタンスを共有します。次のコンテナランタイムは有効です。

    • SYSTEM$ST_CONTAINER_RUNTIME_PY3_11

重要

ウェアハウスランタイムからコンテナランタイムに変更する場合は、必要に応じて COMPUTE_POOL パラメーターも設定する必要があります。コンテナランタイムにはコンピューティングプールが必要です。

COMPUTE_POOL = compute_pool_name

Streamlitアプリを実行するコンピューティングプールを指定します。このパラメーターは、コンテナランタイムを使用する場合に必要であり、ウェアハウスランタイムでは無視されます。

COMMENT = 'string_literal'

Streamlitオブジェクトのコメントを追加するか、既存のコメントを上書きします。

TITLE = 'app_title'

Snowsight に表示する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.

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'

Specifies the root stage name and prefix containing the Streamlit Python files, media files, and environment.yml file. This parameter must point to a single directory inside a named internal stage.

RENAME TO new_name

Specifies the new identifier for the Streamlit object. The identifier must be unique for the schema where the object was created.

識別子の詳細については、 識別子の要件 をご参照ください。

COMMIT

LIVE バージョンで保留中の編集を新しい LAST バージョンにコミットします。コミット直後、 LIVE バージョンは LAST バージョンと同一になります。

PUSH

コミットされた最新の変更をGitリポジトリにプッシュします。TO git_branch_uri が指定されていない場合は、ベースバージョンに保存されているブランチを使用します。

If the base version is not based on a Git branch, this throws an error.

TO git_branch_uri

コミットした変更を指定したブランチにプッシュします。

GIT_CREDENTIALS = snowflake_secret

リポジトリとの認証に使用する認証情報が含まれるSnowflakeシークレットを指定します。

USERNAME = git_username

Gitのユーザー名を指定します。

PASSWORD = git_password

Gitのパスワードを指定します。

NAME = git_author_name

使用するgit authorの名前を指定します。

EMAIL = git_author_email

git authorの名前として使用する有効なメールアドレスを指定します。

COMMENT = git_push_comment

git pushに含めるコメントを指定します。

ABORT

コミットされていない Snowsight で行われたすべての編集を含む、アプリの現在のライブバージョンを削除します。

PULL

最新の変更をプルします。プルする前に、現在のライブバージョンを中止する必要があります。

ADD LIVE VERSION FROM LAST

最後にコミットされたバージョンに基づいて、アプリの新しいライブバージョンを作成します。

Streamlitアプリの所有者が Snowsight でアプリを開いたときにライブバージョンが存在しない場合、このコマンドが自動的に実行されます。別のユーザーがアプリにアクセスしたときにライブバージョンが存在しない場合、エラーが返されます。

アクセス制御の要件

If your role does not own the objects in the following table, then your role must have the listed privileges on those objects:

権限

オブジェクト

Notes

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 でアプリにアクセスします。

  • If you run the ALTER STREAMLIT command while viewing a Streamlit app in Snowsight, the app reflects the changes differently depending on the runtime type:

    • ウェアハウスランタイム:アプリは Run を選択するまで変更を反映しません。

    • コンテナランタイム:アプリは次にアプリを操作したときすぐに変更を反映します。

    変更をアプリに反映させる場合は、アプリをリロードするか再起動する必要があります。

  • ウェアハウスランタイムからコンテナランタイムに移行する場合:

    • RUNTIME_NAME および COMPUTE_POOL の両方を設定する必要があります。

    • アプリはPython 3.11とStreamlit 1.49以降を使用する必要があります。

    • アプリコードがスレッドセーフで、同時ビューアー用に最適化されていることを確認してください。

    • Replace get_active_session() with st.connection("snowflake").

    • _snowflake モジュールをネイティブPythonの同等のものに置き換えます。

    完全な移行のチェックリストについては、 ランタイム環境間の移行 をご参照ください。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

クエリウェアハウスを変更する

Streamlitアプリが使用するウェアハウスを変更するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。

ALTER STREAMLIT my_app
  SET QUERY_WAREHOUSE = new_warehouse;
Copy

ウェアハウスランタイムからコンテナランタイムへの移行

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);
Copy

コンテナランタイムには、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);
Copy

シークレットはウェアハウスのランタイムでのみ利用可能で、外部アクセス統合に関連付けられている必要があります。コンテナランタイムのStreamlitアプリは SQL 関数を使用してシークレットにアクセスする必要があります。詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。

Rename a Streamlit app

Streamlitアプリの名前を変更するには、次の例に示すように ALTER STREAMLIT コマンドを実行します。

ALTER STREAMLIT old_app_name
  RENAME TO new_app_name;
Copy