【Snowflake】Streamlit in Snowflakeで複数ページ画面を作成!

【Snowflake】Streamlit in Snowflakeで複数ページ画面を作成! | Tableau-id Press -タブロイド-
snowflake-logo-1200x630-960x504

こんにちは!ozawaです!

今回は、Streamlit in Snowflakeで複数ページの画面を作成するための手順を解説していきます。

SnowSightUI上でStreamlitを自動作成してくれる便利な機能がありますが、複数ページを実装しようとした場合は、クエリメインで開発を行っていく必要があります。

複数ページ作成方法のドキュメントをもとに、手順を説明していきます。

Snowsight上の作成手順(単一ページのみ可)

Projects → Streamlit → + Streamlit AppからStreamlitオブジェクトを作成できます。

しかしながら、この手法では複数ページを実装できないので、次の手法を試す必要があります。

複数ページ作成手順

一方で、複数ページを作成する場合は、ローカル上で作成したStreamlitファイルをStageに上げて、StageファイルからStreamlitオブジェクトを作成する必要があります。

Streamlitを作るのに必要なファイルは複数存在します。まずは使用するファイルとフォルダ構造を示します。

| -- OZAWADB (DB)
     | -- PUBLIC (SCHEMA)
           | -- STAGE (MULTI_PAGE_STREAMLIT)
                | -- streamlit_main.py
                | -- pages
                      | -- page1.py
                      | -- page2.py 

1. ローカル上でファイルを作成

次に各ファイルのコードを示します。ローカル上でテキストエディタを使って、Stageをアップするpyファイルを3つ作成します。

#pages/page1.py
import streamlit as st

st.title('ページ1')
st.write('page1.pyで作成されたページ')
#pages/page2.py
import streamlit as st

st.title('ページ2')
st.write('page2.pyで作成されたページ')
# streamlit_main.py
import streamlit as st

st.title('複数ページを作成')
st.write('メインページ・ページ1・ページ2 3つ作成されるよ♪')

2. Stageにアップ

Data→Databaseからスキーマを選択し、Create → Stage → Snowflake ManageでStageを作成します。

 

Stageにアクセスし、+Files から手順1で作成したpyファイルをアップしていきます。

※ page1.pyとpage2.pyはpagesフォルダに入れる必要があるため、下の記入欄に「pages」と記入します。

 

3. Streamlitを作成

Stageに作成したPyファイルを参照して、Streamlitオブジェクトを作っていきます。

create streamlit クエリを実行します。

//stageからStreamlitを作成
CREATE STREAMLIT OZAWADB.PUBLIC.MULTI_PAGE_STREAMLIT
ROOT_LOCATION = '@OZAWADB.PUBLIC.MULTI_PAGE_STREAMLIT' //Stageを指定
MAIN_FILE = '/streamlit_main.py' //メインファイル(streamlit_main)を指定
QUERY_WAREHOUSE = default; //Streamlit内部でのクエリ実行用のウェアハウス

Streamlit画面が作成されたかを確認していきます。

Projects → Streamlitから、先ほど作成したStreamlitを開きます。

 

ウェアハウスを選択します。

 

サイドバーで複数画面を選択できれば成功です!!!

 

おわりに

truestarでは、Snowflakeのアプリ開発だけではなく、検討、導入支援や環境構築まで幅広くサポート可能です。

Snowflakeに゙興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらから相談ください!

これまでのSnowflakeに関する記事はこちら