SQL を使用してStreamlitアプリを作成し、デプロイします。

このトピックでは、 SQLコマンドを使用してSnowflakeでStreamlitアプリを展開する方法について説明します。ローカル開発環境から始めて、Snowflakeの名前付きステージにStreamlitアプリファイルをコピーし、それらのファイルからStreamlitオブジェクトを作成することができます。

SQL を使用してStreamlitアプリを作成する

SQL を使用して Streamlit アプリを作成する前に、必要な 前提条件 を満たしていることを確認してください。

SQL コマンドを使用してSnowflakeでStreamlitアプリを作成するには、以下の各タスクを実行します。

オプション:ローカルファイルシステムでのStreamlitファイルの作成

このセクションでは、アプリソースファイルのローカルセットを作成し、それらをSnowflakeでステージングする方法について説明します。次のセクションでは、STREAMLIT の作成時にステージングされたソースファイルがない場合、代わりにソースファイルのデフォルトセットが STREAMLIT オブジェクトにコピーされます。

  1. ローカルファイルシステムに、 メインのStreamlitアプリを作成します

  2. オプション:デプロイメント環境を構成して依存関係を指定するには、 environment.yml ファイルを作成します。

    このファイルを含めない場合、アプリは Streamlit in Snowflake でサポートされている最新バージョンのPythonとStreamlitで実行されます。アプリの依存関係については、 environment.yml ファイルを使ったパッケージの管理 をご参照ください。

Streamlitアプリを作成した後、ディレクトリ構造は次のようになります。

project_directory/
├── .streamlit/
│   └── config.toml
├── environment.yml
└── streamlit_app.py
Copy

注釈

Streamlit in Snowflake は、マルチページのStreamlitアプリをサポートしています。この例では単一ページのアプリしか示していませんが、 pages/ ディレクトリを追加することや、 st.navigation を使用してマルチページアプリを作成することができます。マルチページアプリの詳細については、Streamlitオープンソースドキュメント内の マルチページアプリの概要 をご参照ください。

Streamlitファイルの名前付きステージへのアップロード

Streamlit in Snowflake でStreamlitアプリを作成するには、アプリケーションファイルを名前付きステージにアップロードする必要があります。

  • アプリケーションファイルをアップロードするには、以下のうちの1つを実行します。

    • Snowsightを使用したファイルのステージング に記載されているように、 Snowsight を使用してアプリケーションファイルをアップロードします。

    • 以下の例に示すように、 SnowSQL を使用してアプリケーションファイルをアップロードします。

      PUT file:///<path_to_your_project_directory>/streamlit/streamlit_app.py @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_project_directory>/streamlit/environment.yml @streamlit_db.streamlit_schema.streamlit_stage overwrite=true auto_compress=false;
      PUT file:///<path_to_your_project_directory>/streamlit/.streamlit/config.toml @streamlit_db.streamlit_schema.streamlit_stage/.streamlit/ overwrite=true auto_compress=false;
      
      Copy

STREAMLIT オブジェクトを作成する

STREAMLIT オブジェクトは、Streamlitアプリで必要なファイルをカプセル化したSnowflakeのデータベースオブジェクトです。

  1. STREAMLIT オブジェクトを作成するには、以下の例に示すように CREATE STREAMLIT コマンドを実行します。

    CREATE STREAMLIT hello_streamlit
    FROM '@streamlit_db.streamlit_schema.streamlit_stage'
    MAIN_FILE = 'streamlit_app.py'
    QUERY_WAREHOUSE = my_warehouse;
    
    Copy

    このコマンドは、 STREAMLIT と hello_streamlit で指定されたパスとファイルに基づいて、 FROM という名前の MAIN_FILE オブジェクトを作成します。

    注釈

    QUERY_WAREHOUSE 句はオプションですが、SnowflakeでStreamlitアプリを実行するためには、クエリウェアハウスを指定する必要があります。

  2. オプション:Streamlitオブジェクトが作成されたことを確認するには、 SHOW STREAMLITS コマンドを実行してください。

    SHOW STREAMLITS;
    
    Copy
  3. アプリの初期化を完了するには、所有者ロールは Snowsight でアプリを表示するか、次のコマンドを実行する必要があります。

    ALTER STREAMLIT hello_streamlit ADD LIVE VERSION FROM LAST;
    
    Copy

environment.yml ファイルを使ったパッケージの管理

Streamlitアプリに追加のPythonパッケージをインストールするには

  1. ローカルファイルシステムに environment.yml ファイルを作成します。

  2. STREAMLIT オブジェクトの ROOT_LOCATION パラメーターで指定されたステージのロケーションにファイルをアップロードするには、 PUT コマンドを実行します。

    environment.yml に記載されているパッケージは、 Snowflake Anacondaチャネル からインストールされます。

以下の environment.yml サンプルは、Streamlit環境に scikit-learn をインストールする方法を示しています。

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
Copy

name および channels プロパティは必須です。また、 channels プロパティでは、 - snowflake キーが必要です。

注釈

Snowflake Anacondaチャネル に記載されているパッケージのみをインストールできます。SnowflakeのStreamlitは外部Anacondaチャネルをサポートしていません。

Streamlitバージョンを environment.yml ファイルで固定します。

  • Streamlitのバージョンを environment.yml ファイルに固定するには、次の例のように streamlit 依存関係を含めます。

    name: sf_env
    channels:
    - snowflake
    dependencies:
    - scikit-learn
    - streamlit=1.31.1
    
    Copy

Streamlitアプリを表示する

  • STREAMLIT オブジェクトに関する情報を表示するには、以下の例に示すように DESCRIBE STREAMLIT コマンドを実行します。

    DESC STREAMLIT hello_streamlit;
    
    Copy
  • Snowsight でStreamlitアプリを表示する方法については、 Streamlitアプリを表示する をご参照ください。

STREAMLIT オブジェクトの管理

STREAMLIT オブジェクトを作成した後、 ALTER STREAMLIT コマンドを使用して、以下のセクションで記載されたさまざまなプロパティを変更します。

STREAMLIT オブジェクトの名前変更

  • STREAMLIT オブジェクトの名前を変更するには、以下の例に示すように ALTER STREAMLIT コマンドの RENAMETO 句を使用します。

    ALTER STREAMLIT hello_streamlit RENAME TO hello_snowflake;
    
    Copy

STREAMLIT オブジェクトのステージまたはメインファイルを変更します。

  • STREAMLIT オブジェクトのステージへのパスを変更するには、以下の例に示すように ALTER STREAMLIT コマンドを使用してオブジェクトの ROOT_LOCATION プロパティを設定します。

    ALTER STREAMLIT hello_streamlit SET ROOT_LOCATION = '@snowflake_db.snowflake_schema.snowflake_stage'
    
    Copy
  • STREAMLIT オブジェクトのメインStreamlitファイルを変更するには、以下の例に示すように ALTER STREAMLIT コマンドを使用してオブジェクトの MAIN_FILE プロパティを設定します。

    ALTER STREAMLIT hello_streamlit SET MAIN_FILE = 'snowflake_main.py'
    
    Copy

STREAMLIT オブジェクトに割り当てられたクエリウェアハウスを変更します。

  • STREAMLIT オブジェクトにクエリウェアハウスを追加したり、現在のクエリウェアハウスを変更するには、以下の例に示すように ALTER STREAMLIT コマンドを使用してオブジェクトの QUERY_WAREHOUSE プロパティを設定します。

    ALTER STREAMLIT hello_streamlit SET QUERY_WAREHOUSE = my_new_warehouse;
    
    Copy

利用可能な STREAMLIT オブジェクトの一覧表示

  • 現在のロールで利用可能なStreamlitアプリを一覧表示するには、以下の例に示すように SHOW STREAMLITS コマンドを実行します。

    SHOW STREAMLITS;
    
    Copy

STREAMLIT オブジェクトの削除

  • STREAMLIT オブジェクトを削除するには、以下の例に示すように DROP STREAMLIT コマンドを実行します。

    DROP STREAMLIT hello_streamlit;
    
    Copy