例:Snowflakeに書き込むフォームをビルドする¶
この例では、フォームからユーザー入力を収集し、Snowflakeテーブルに書き込む|sis|アプリの構築について説明します。アプリはまた、データを読み込んですべての送信を表示し、:code:`st.user`を使用して誰が各エントリを送信したかを追跡します。
アプリはコンテナランタイムを使用します。始める前に、:ref:`前提条件<label-streamlit_prereqs>`を完了していることを確認してください。
ターゲットテーブルの設定¶
この例では、``crud_demo``というデータベースを使用します。アクセスできる任意のデータベースとスキーマに置き換えることができます。SQLとアプリコード内の参照を一致するように更新するだけです。
フォーム送信を保存するテーブルを作成します。ワークシートまたはSQLセッションで次のSQLを実行します。
アプリコードの記述¶
ローカルマシンで、次のコードを使用して:file:`streamlit_app.py`という名前のファイルを作成します。|sf-web-interface|を使用する予定の場合は、アプリを作成した後にこのコードをエディターに貼り付けることができます。
このアプリは以下を使用します。
st.form:送信する前に入力を収集し、すべてのウィジェットインタラクションでの再実行を防ぎます。st.connection("snowflake").session():データを書き込むためのSnowparkセッションを取得します。詳細については、 シークレットを管理し、Streamlitアプリを設定する をご参照ください。conn.query()`ではなく:code:`session.sql():送信を再度読み取ります。:code:`conn.query()`はデフォルトで結果をキャッシュするため、キャッシュの有効期限が切れるまで新しいエントリは表示されません。:code:`session.sql()`は再実行のたびに新しいクエリを実行します。st.user.user_name:誰が各エントリを送信したかを記録します。詳細については、 ユーザー情報によるStreamlitアプリのパーソナライズ をご参照ください。
依存関係の宣言¶
このアプリは``streamlit``と組み込みのSnowflake接続のみを使用するため、追加の依存関係は必要ありません。
詳細については、 Streamlitアプリの依存関係を管理する をご参照ください。
アプリのデプロイ¶
アプリファイルをステージングします。
Streamlitアプリを作成します。
アプリを表示するには、|sf-web-interface-link|にサインインし、ナビゲーションメニューで:ui:`Projects` |raa| :ui:`Streamlit`を選択して、アプリを選択します。
注釈
Snowflake CLI バージョン3.14.0以降が必要です。バージョン3.14以降は、デフォルトで最新の CREATESTREAMLIT 構文を使用します。
以下の構造を持つプロジェクトディレクトリを作成します。
:file:`snowflake.yml`ファイルを作成します。
アプリをデプロイします。
アプリを試す¶
ブラウザーでアプリを開きます。
フォームフィールドに入力し、:ui:`Submit`を選択します。
フォームの下にあるフィードバックテーブルが更新され、メールアドレスとタイムスタンプを含む新しい送信が表示されます。
さらにいくつかのエントリを送信してから、テーブル内のデータのフィルターまたはソートを試してください。
アプリの拡張¶
各行の横に削除ボタン、またはカテゴリ別に平均評価を示すチャートを追加してみてください。たとえば、データフレームの後に以下を追加します。
``plotly``を追加する場合は、:file:`requirements.txt`ファイルで宣言します。
より複雑な依存関係シナリオの場合は、代わりに:file:pyproject.toml`ファイルを使用できます。詳細については、 :doc:../app-development/dependency-management` をご参照ください。
クリーンアップする¶
この例で作成したリソースを削除するには、次のSQLを実行します。
次の内容¶
Streamlitアプリの作成:アプリを作成するためのすべてのオプションについて学習する。
ユーザー情報によるStreamlitアプリのパーソナライズ::code:`st.user`を通じて利用可能なすべてのユーザー属性を調べる。
シークレットを管理し、Streamlitアプリを設定する:アプリでシークレットと外部サービスにアクセスする。
|sis|アプリの共有:アプリを他のユーザーと共有する。