今年から使いはじめた Streamlit in Snowflake についての記事です。
とはいえ、Sreamlit要素はほぼなく、Snowflake上で使うからこそ発生するSQLの結果の取得方法(=pandasのDataFrameとしての取得方法)をまとめておきます。
Streamlit in Snowflake の場合、Snowflkaeにログインして使いますので認証情報として現時点でログインしているセッションの情報が使えます。それを取得する専用の関数として、get_active_session があるので、これを呼び出すのが最初の準備です。
from snowflake.snowpark.context import get_active_session
# Snowflakeセッションの取得
session = get_active_session()
ここから下は 「query」という変数にSQL(SELECT)文が格納されている前提になります。
sessionの sql()というメソッドでSQLを発行し、結果を得ることができます。さらに、その結果は to_pandas() というメソッドを持っており、これを使うことでDataFrame型に変換できます。
結果を表示したい場合は streamlitの dataframeとかtableといったメソッドが使えますね。
# クエリの実行と結果の取得
result = session.sql(query).to_pandas()
st.dataframe(result)
st.table(result)
続いて、 SELECT文ではなく show columns や describe table のケースも紹介します。
こちらは sqlメソッドで発行できるのは同じなのですが、結果が to_padnas()メソッドを持っていません。
ここでは、collect() というメソッドを使います。
result = session.sql(query).collect()
st.dataframe(result)
簡潔ですが以上で Streamlit in SnowflakeでSQLを発行し結果をStreamlit内で使えるようになります。