Snowflake Knowledge - INSIGHT LAB

【Snowflake】新機能「Streamlit in Snowflake」とは何者か!?

作成者: uta|2023年9月21日

こんにちは、utaです。
8月末に初めてコロナにかかってしまい後遺症の影響で参加したかったSnowflakeイベント「Data Cloud World Tour」に参加できず、ひたすら咳をする生活が続いています。。

そんな落ち込んだ暗い気持ちを吹き飛ばすほどのインパクトのあるSnowflake新機能が使えるようになったようなので紹介したいと思います!

はじめに

ついに、Snowflake上でアプリ開発ができる機能「Streamlit in Snowflake」がパブリックプレビューになりました!!🎉

この機能の登場で、データ活用を目的としたアプリケーション開発をSnowflakeのプラットフォーム上で行うことができます。

迅速なアプリ開発も魅力ですが、外部との連携を必要とせず、Snowflakeのセキュリティガバナンスの効いたデータクラウド上で安心安全にアプリ構築が行えることが最大の魅力だと思っています。

今年2月に行われた「SNOWDAY JAPAN 2023」にて、Christian Kleinerman氏から紹介のあった「Snowflakeは2014年アナリティクスの改革2018年コラボレーションの改革が行われた。2023年(現在)にはアプリ開発の改革が行われる※」という言葉通り、今まさにアプリ開発の改革が始まっています。

※SNOWDAY JAPAN 2023の「分析・コラボレーション・アプリケーション開発に革命を起こすSnowflakeの最新技術アップデート」セクションより

 

Streamlitとは

Streamlitは、機械学習とデータ サイエンス用のカスタム Web アプリを簡単に作成して共有できるオープンソースの Python ライブラリです。Streamlit を使用すると、強力なデータ アプリケーションを迅速に構築して展開できます。

https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit#label-streamlit-about

一般的にアプリ開発は、フロントエンド側はHTML/CSSやJavaScriptといったマークアップ言語とプログラミング言語、バックエンド側はPHPやPythonなどのプログラミング言語で行われています。

Streamlitは、純粋なPythonのみでデータアプリ開発が行えるPythonフレームワークです。フレームワークは他にもDjangoやFlaskなどがありますが、コード修正が即座にアプリ側に反映されるなど手軽に開発できることから、データサイエンスに領域でのデータアプリ開発で活用されています。

 

Streamlit in Snowflake

Streamlitのドキュメントを元に、「Streamlit in Snowflake」に関する情報をまとめてみました。


料金

Streamlit in Snowflakeで発生する料金はこれまでと同様に、ウェアハウスが稼働した時間によるクレジット請求です。ウェアハウスが稼働するタイミングはアプリ実行アプリから発行されるクエリ実行の2種類のようです。

注意する点として、ドキュメントに以下の記載があります。

This warehouse remains active while the app’s web-socket connection is active. The web-socket connection expires approximately 15 minutes after its last use.

Streamlit in Snowflakeで作成したアプリは、接続がアクティブである間はウェアハウスもアクティブのままになります。ウェアハウスが稼働した時間でクレジット加算されていくので、使い終わったらアプリ一覧の画面に戻るブラウザを閉じるかしておきましょう。
https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit#billing-considerations-for-sis


↑アプリが開いている間、Streamlitを実行するクエリは実行中になっています。

オブジェクトタイプ

構築するアプリはSnowflakeでは「Streamlit」というオブジェクトで管理されます。また、Streamlitのオブジェクトタイプは「スキーマオブジェクト」にあたるので、テーブルやビューと同様にロールによるセキュリティ保護が可能になります。

セキュリティ保護が可能なオブジェクトなので、アプリの作成・編集・操作をユーザごとに各権限を与えたロールを付与して、アプリを管理することができます。


https://docs.snowflake.com/ja/user-guide/security-access-control-overview#securable-objects

 

権限

Streamlitはスキーマオブジェクトのため、作成・編集にはDATABASEとSCHEMAUSAGE権限、あわせてスキーマ上でのSTREAMLITとSTAGECREATE権限が付与されたロールが必要なようです。

  • GRANT USAGE ON SCHEMA mydb.myschema TO ROLE myrole;
  • GRANT USAGE ON DATABASE mydb TO ROLE myrole;
  • GRANT CREATE STREAMLIT ON SCHEMA mydb.myschema TO ROLE myrole;
  • GRANT CREATE STAGE ON SCHEMA mydb.myschema TO ROLE myrole;

https://docs.snowflake.com/en/developer-guide/streamlit/about-streamlit#privileges-required-to-create-a-streamlit-app

 

始め方

前提として、Streamlit in Snowflakeでのアプリ開発にあたり、あらかじめ必要な権限が付与されているロールに切り替えておく必要があります。

Snowflakeにログインし、左のサイドメニューから「Streamlit」をクリック。

右上の「+ Streamlitアプリ」をクリック。以下の情報を入力し「作成」をクリック。


すると、左にエディタ画面、右にアプリ画面が表示されます。

サンプルで作成されているアプリはスライダーを動かすことでQ3の値が変更される内容になっています。

▼ 変更前(60)

▼ 変更後(60→10)

 

試しに末尾にst.snow()を追記して実行すると、なんと雪が降ってきました!!

 

おわりに

本記事では、Snowflake上でアプリ開発が行える新機能「Streamlit in Snowflake」を紹介しました。

Snowflake上でアプリを構築できるようになったことで、データ活用を目的とするアプリ開発が迅速に行えるようになっただけでなく、アプリにSnowflakeの強固なセキュリティガバナンスを効かせることができるようになります。余計な作業に時間を割くこともなくなりデータ活用に注力できるようになるので、さらなるデータ活用の促進が期待されます。

SNOWDAY JAPAN 2023でのMike Scarpelli氏の「仕事の上にデータがくるわけではない、データの上に仕事がくるのである」という発言がずっと心に残っていました。

その言葉通り、Snowflakeでアプリ開発が行えるようになったことで、企業内のデータアプリエンジニアやAIエンジニアまでもがSnowflake上に集まる環境になることでしょう。Snowflakeにある企業のデータを用いた新たなデータ活用の道が今まさに開かれようとしています。