こんにちは!佐々木です!
みなさんはStreamlit in Snowflakeを使ったことがありますか?
Streamlitは、データを可視化するための便利なツールとして広く知られていますが、
Snowflakeと組み合わせることで、データの操作や分析をさらに効率化することができます。
今回はSnowflakeにある機械学習のモデルやテーブルを呼び出して、Streamlitアプリ上で使用する方法を紹介します!
本記事でわかること
本記事では、Streamlit in SnowflakeによるStreamlitアプリ上で、Snowflakeに格納したデータの使用方法を解説します。
具体的には以下の内容について理解することができます。
- Snowflakeのデータを活用したアプリを簡単に作ることができる
- Snowpark Sessionを使って、Snowflakeに格納したデータをやり取りすることができる
- Snowpark Sessionを使って、PythonモジュールやSnowflake内のテーブルを呼び出すことができる
Streamlit in Snowflakeとは?
まずは、「Streamlit in Snowflake」について解説します。
簡単にStreamlitアプリ開発を始めることができる!
Streamlit in Snowflakeは、Snowflake上で簡単にStreamlitアプリを作成することができる機能です。
Snowflakeを導入していれば、Snowsight上に表示されている「Streamlit」から、誰でもすぐに利用することができます。
※SnowsightのUIは、変更されることがあるため、ご注意ください。
Streamlitは、機械学習やデータサイエンスと親和性が良いとされており、今後はより存在感を増していくと考えられています。
アプリの画面を見ながらコーディングすることができる!
Streamlitアプリを立ち上げると、”コードを編集する画面”と”アプリの画面”が同時に表示されます。
コードを編集しながら、随時その結果アプリがどのように表示されるかを確認することができるため、効率的な編集が可能です。
Snowflakeのデータを活用することができる!
Snowflake上で立ち上げているため、Snowflakeに格納されたデータの連携も簡単できます。
テーブルを読み込んだり、保存しておいたPythonモジュールを呼び出したりすることができ、Snowflakeの環境を活かしてアプリ開発が可能です。
※Streamlitアプリの作成をする際の前提条件や基本的な手順は、
以下の公式ドキュメントを参考にしてください。
Streamlit in Snowflake | Snowflake Documentation
Snowsight を使用したStreamlitアプリの作成と表示 | Snowflake Documentation
Snowpark Sessionとは?
続いて、「Snowpark Session」について解説します。
Snowflakeのデータを使用するための”魔法の言葉”!
StreamlitアプリからSnowflakeに存在するデータを呼び出す際に、Snowpark Sessionは非常に役立ちます。
テーブルをデータフレーム形式で呼び出したり、保存しておいた機械学習モデルを呼び出したりすることができます。
データをやり取りする手段が多岐にわたる!
他にも、Snowpark Sessionには様々なメソッドが用意されています。
30を超えるメソッドがサポートされており、アプリを開発する上で必要なSnowflakeとの通信をサポートしてくれます。
本記事で紹介していない他のメソッドについても、公式ドキュメントに記載されているので、こちらもぜひ参照してください!
Snowpark Session | Snowflake Documentation
(例えば、StreamlitアプリからSnowflakeのテーブルに対してSQLクエリを実行することができるメソッドもあります)
Snowpark Sessionでこんなことができる!
本記事では、「モデルファイルの読み込み」と「テーブルの読み込み」について紹介します。
Snowflakeに保存したモデルファイルを読み込む
機械学習を扱う上で欠かせないのがPythonです。
手持ちのPythonの資材を活用できたら開発もスムーズに進められるかと思います。
今回は学習済みのモデルファイルを.joblibの拡張子でSnowflakeに保存しておき、Streamlitアプリから呼び出してみました。
.joblibファイルをステージに格納
※Streamlitアプリ作成時に、自動的に作成されるステージもありますが、
今回は新規内部ステージを作成し、必要な権限を付与して使用しています。
Streamlitアプリからモデルファイルを呼び出す
①Snowpark Sessionを使うために必要な”get_active_session”をインポートする
from snowflake.snowpark.context import get_active_session
②Sessionとして定義する
session = get_active_session()
③アプリ内部の”tmpフォルダ”に学習済みモデルのファイルをロードする
session.file.get("<ステージ名>/model.joblib.gz",'/tmp')
④”tmpフォルダ”にあるモデルファイルを”model”として呼び出す
model = joblib.load(os.path.join("/tmp","model.joblib.gz")
⑤使用例:“model”内の説明変数の重要度(feature_importances_)を表示
st.write(model.feature_importances_)
これで学習済みモデルをStreamlitアプリで使えるようになります!
テーブルを読み込む
Snowpark Sessionの役立つメソッドの一つとして、テーブルを呼び出すこともできます。
Snowflakeには多くのデータをテーブルに保存していると思いますが、Snowpark Sessionを使用することで、データフレームの形式で呼び出すことができます。
①指定したテーブルを”table”としてデータフレーム形式で呼び出す
table = session.table(<テーブル名>)
②使用例:呼び出したSnowflakeのテーブルを表示
st.write(table_)
テーブルのデータを直接活用できるとアプリ開発の幅が広がりますね!
Snowpark Sessionを使用する上での制約や注意点
どのテーブルを参照するか要注意
スキーマ名を指定せずテーブル名のみで参照可能ですが、スキーマを指定して呼び出すこともできます。
ただし、権限のないスキーマにあるテーブルは呼び出せないので、確認してから使用しましょう。
活用事例が少ない
Snowpark Sessionの活用事例について調べましたが、あまり情報がありませんでした。
そのため、活用のイメージがしにくい現状です。
もちろん公式ドキュメントの情報は充実していますが、使用する際はより調査する必要があると思います。
まとめ
- Snowflakeのデータを活用したアプリを簡単に作ることができる
- Snowpark Sessionにより、簡単にStreamlitアプリからSnowflakeとデータのやりとりができる
- Snowpark Sessionにより、学習済みのモデルファイルを取り込んだり、テーブルを呼び出したりすることができる
Streamlit in Snowflakeは最近パブリックプレビューになったばかりの機能ですが、今後活用が促進されていくと考えられます。
早くマスターして見やすいアプリを作成できるようになりたいですね!
コメント