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> [ , ... ] ) ]
Copy

以下の構文はレガシーです。

重要

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> [ , ... ] ) ]
Copy

必須パラメーター

name

Specifies 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_name

Streamlitアプリが使用するウェアハウスを指定します。動作はランタイムのタイプによって異なります。

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

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

DEFAULT: 値なし

注釈

このパラメーターを指定せずにStreamlitオブジェクトを作成することもできますが、クエリウェアハウスを指定するまでアプリは実行されません。

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

ランタイムは最新のウェアハウスランタイムにデフォルト設定されます。

DEFAULT: SYSTEM$ST_WAREHOUSE_RUNTIME_PY3_11

COMPUTE_POOL = compute_pool_name

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

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.yml file, for example:

ROOT_LOCATION = '@streamlit_db.streamlit_schema.streamlit_stage'
Copy

この例では、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;
Copy

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

カスタムソースファイルから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;
Copy

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

シークレットでウェアハウスランタイムの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);
Copy

コンテナランタイムの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;
Copy