Skip to content

StreamlitとSnowflakeを接続する:データ駆動型Webアプリケーションの力を解き放つ

Updated on

この包括的なガイドは、データ分析ソフトウェア開発に携わっている方や、PythonでのWebアプリケーションの構築に興味を持つ技術愛好家のために用意されています。データの領域が広がるにつれて、それを処理して有益な情報を抽出するための効率的なツールの必要性も高まっています。そこで、StreamlitSnowflakeが登場します。

Python向けの急成長中のノーコードWebフレームワークであるStreamlitは、最小限のコーディングでインタラクティブでデータ駆動型のWebアプリケーションを構築することができます。一方、データウェアハウスプラットフォームであるSnowflakeは、データの保存、計算、分析に堅牢なソリューションを提供します。この2つは、データの世界に便利さと効率性をもたらす印象的なデュオを形成しています。

Snowflake Native Application Framework

冒険に乗り出す前に、まずはSnowflakeのユニバースの中心地であるネイティブアプリケーションフレームワークで一休みしましょう。保存されたプロシージャ、タスク、ストリーム、UDF、Snowpark、その他多くの機能が満載されたツールボックスを想像してみてください。それがこのフレームワークの正体です!

このツール群のおかげで、アプリケーションプロバイダは以下のことができます:

  • アプリケーションの開発にSnowflakeのコア機能を活用する
  • Snowflake Marketplace(App Storeのようなものです)で配布と販売を行う
  • アプリケーションを顧客のSnowflakeアカウントに直接デプロイする。

アプリケーションが作成されると、Snowflakeの堅牢なセキュアデータ共有機能を使用して、Snowflake Marketplaceを通じて世界中に配布することができます。ユーザーはMarketplaceからこのアプリケーションを直接自分のSnowflakeアカウントにデプロイすることができます。

ネイティブアプリケーションフレームワークは、機能のセットだけでなく、可能性の領域へのゲートウェイです。Streamlitなどの低コードUXフレームワークと組み合わせると、この組み合わせは魔法のような効果を生み出します。

Streamlit in Snowflake

Streamlitの世界に飛び込んでみると、この無料でオープンソースのフレームワークは、機械学習やデータサイエンスのために美しいWebアプリを構築する方にとって、新鮮な風です。

データサイエンティストや機械学習エンジニアの生活を簡素化することを目的として作成されたStreamlitは、わずか数行のコードで素晴らしいアプリケーションを簡単に作成することができます。

無料でデータ分析とデータの可視化アプリをStreamlitで作成したいですか?

PyGWalker (opens in a new tab)は、Pythonライブラリであり、StreamlitアプリにTableauのようなユーザーインターフェースを簡単に組み込むことができます。Coding is Fun (opens in a new tab)のSven氏によって制作された素晴らしいビデオをご覧ください。このビデオでは、強力なデータ可視化Pythonライブラリを使用してStreamlitアプリを強化するための詳細な手順が説明されています!


PyGWalkerコミュニティへのスヴェン氏と彼の素晴らしい貢献 (opens in a new tab)に特別な感謝を表します!

さらに、PyGWalkerのGitHubページ (opens in a new tab)もチェックしてみてください。PyGWalkerのさらなる例があります。

StreamlitをSnowflakeと統合すると(SiSとも呼ばれる)、Pythonを使用してSnowflake内で直接Streamlitコードを書くことができます。Streamlitオブジェクト(Snowflakeの他のスキーマオブジェクトと同様)を作成し、アプリの名前を付け、ウェアハウスを割り当て、アプリの場所を決定するだけです。Snowflake内部にきちんとネストされているため、役割ベースのアクセス制御が一貫して強制されます。

さらなる利点として、Streamlitアプリをデプロイし、リンクを使用して他の人と共有し、モバイルデバイスで表示することもできます。かなり素敵ですね?

Streamlit + Snowflakeの統合のための準備

Snowflakeデータベースの作成

Webアプリケーションの作成に入る前に、Streamlitアプリに接続するためのSnowflakeデータベースを設定することが重要です。以下の手順に従って、Snowflakeデータベースを作成します:

  1. https://signup.snowflake.comにアクセスして、Snowflakeアカウントに**サインアップ**します。 (opens in a new tab)
  2. SnowflakeアカウントにアクセスするためのアカウントURLを確認するために、「Welcome to Snowflake!」という件名のメールをチェックします。LOG IN TO SNOWFLAKEボタンを使用するか、アカウントURLをブラウザにコピーします。
  3. Snowflakeの認証情報を入力します。
  4. ログイン後、Worksheetsパネルに移動します。
  5. 新しいSQLワークシートを作成するには、Snowflakeのインターフェースに表示される指示に従います。
  6. クエリボックスに以下のSQLクエリを入力して、単純なPETSデータベースを作成し、いくつかのデータを追加します:
CREATE DATABASE PETS;
 
CREATE TABLE MYTABLE (
    NAME varchar(80),
    PET varchar(80)
);
 
INSERT INTO MYTABLE VALUES ('Mary', 'dog'), ('John', 'cat'), ('Robert', 'bird');
 
SELECT * FROM MYTABLE;
  1. クエリを実行すると、PETSデータベースが作成されます。メインページに戻ります。
  2. メインページから、Dataタブをクリックして、新しく作成したPETSデータベースを表示します。

環境のセットアップ

さて、Anacondaを使用してコーディング環境をセットアップしましょう。

conda create -n snowpark python=3.8
conda activate snowpark
pip install snowflake-snowpark-python streamlit

忘れずに、コーディングセッション後にconda環境を無効にすることもできます:conda deactivate

次に、Streamlitアプリのディレクトリとファイルを設定しましょう:

まず、新しいディレクトリをプロジェクト用に作成します。ターミナルを開いて、次のコマンドを入力します:

mkdir streamlit-snowflake-app && cd streamlit-snowflake-app
touch main.py secrets.py .gitignore
  • main.pyファイルは、Streamlitアプリケーションのコードを記述する場所です。
  • secrets.pyファイルには、Snowflakeアクセス認証情報が保存されます。
  • .gitignoreファイルは、これらの機密情報を公共のリポジトリに誤ってコミットしないようにします。

Snowflakeを使ったStreamlitアプリの構築

ここからが楽しい部分です:Streamlitアプリケーションの構築です。ここでは、先ほど作成したPETSデータベースをクエリし、その結果をStreamlitアプリで表示します。

  1. main.pyファイルで必要なライブラリをインポートします:
import streamlit as st
from snowflake.snowpark import Session
from secrets import SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER, SNOWFLAKE_PASSWORD
  1. secrets.pyに保存された認証情報を使用してSnowflakeセッションを確立します:
session = Session(url=SNOWFLAKE_ACCOUNT, user=SNOWFLAKE_USER, password=SNOWFLAKE_PASSWORD)
  1. Snowflakeからデータを取得します:
 

df = session.sql("SELECT * FROM PETS.MYTABLE").to_pandas()

  1. Streamlitでデータを表示する:
st.write(df)
  1. secrets.tomlにスクリーンを格納する
touch secrets.toml

secrets.tomlにSnowflakeの認証情報を追加する:

[secrets]
SNOWFLAKE_ACCOUNT = "あなたのアカウント"
SNOWFLAKE_USER = "あなたのユーザー名"
SNOWFLAKE_PASSWORD = "あなたのパスワード"

main.pyファイルを更新して、Streamlitの秘密管理機能を使用する:

session = Session(url=st.secrets["SNOWFLAKE_ACCOUNT"], user=st.secrets["SNOWFLAKE_USER"], password=st.secrets["SNOWFLAKE_PASSWORD"])

.gitignoreを更新することを忘れないでください。

さあ!Snowflakeデータベースに接続する最初のStreamlitアプリが完成しました。アプリを実行するには、ターミナルでstreamlit run main.pyを使用してください。

Streamlitアプリのデプロイ方法

アプリが準備できて、秘密が安全に管理されている状態で、作業を共有する時がきました。Streamlitは、アプリケーションをデプロイするためのStreamlit Shareというプラットフォームを提供しています:

  1. プロジェクトを公開GitHubリポジトリにコミットします(secrets.tomlファイルは除外)。
  2. share.streamlit.io (opens in a new tab)を訪れ、「アプリのデプロイ」をクリックします。
  3. GitHubリポジトリとブランチを選択し、アプリケーションファイルとしてmain.pyを指定します。
  4. 「シークレット」セクションで、「シークレットの追加」をクリックし、secrets.tomlからキーと値のペアを入力します。
  5. 「デプロイ」をクリックします。Streamlit Shareが残りの作業を担当します!

おわりに

StreamlitをSnowflakeに接続することで、Pythonを使用した効率的でインタラクティブなWebアプリケーションの可能性が広がります。このガイドでは、SnowflakeデータベースとStreamlitアプリケーションのセットアップから、秘密の管理とアプリのデプロイまで、これら2つの強力なプラットフォームを統合するためのステップバイステップのプロセスを紹介しました。少しの創造力を加えることで、このプロセスをさまざまなアプリケーションやワークフローに適応させることができます。

これらの知識を持っている今、データ駆動型のアプリを作り出してください。

Snowflakeデータを簡単に視覚化したいですか? RATH (opens in a new tab)は、AIパワーのデータ可視化と自動データ分析のための最も簡単なソリューションを提供します!

次のビデオを見て、RATHを使ってデータインサイトを簡単に探索する方法を学びましょう。


今すぐSnowflakeデータベースをRATHに接続したいですか? Snowflake統合のステップバイステップガイドをRATHのドキュメンテーションで確認してください。

Snowflakeの他にも、RATHはさまざまなデータソースをサポートしています。以下は、RATHに接続できる主要なデータベースソリューションのいくつかです: サポートされているデータベース

興味がありますか?RATHのウェブサイト (opens in a new tab)でRATHを試して

みてください。

RATHでSnowflakeデータを視覚化 (opens in a new tab)

よくある質問

StreamlitのSnowflakeとは何ですか?

StreamlitのSnowflake(SiS)とは、StreamlitをSnowflakeプラットフォームに直接統合することを指します。SiSを使用すると、ユーザーはStreamlitコードを直接Snowflakeで記述し、Snowflakeのデータストレージ、処理、セキュリティの機能を利用することができます。

StreamlitはSnowflakeによって所有されていますか?

いいえ、Streamlitは独立したオープンソースプロジェクトであり、Snowflakeによって所有されていません。Streamlitはデータサイエンスコミュニティで広く使用されるインタラクティブウェブアプリを構築するためのツールであり、Snowflakeはクラウドベースのデータプラットフォームです。

PythonとStreamlitでのSnowparkとは何ですか?

Snowparkは、開発者がさまざまなプログラミング言語でコードを書くことができるSnowflakeの機能です。Python用Snowparkは、Pythonコードを書いてSnowflakeのデータ処理機能と統合することを可能にします。Snowflake内のStreamlitは、Python用Snowparkを活用して、Snowflake内で直接Streamlitコードを書き、インタラクティブなデータアプリケーションを作成します。