Skip to main content

SnowflakeのNotebookでStreamlitを使う方法

notebook_cover_image

Image by Jan from Pixabay

データ分析において、結果を分かりやすく可視化し、共有することは非常に重要です。従来のBIツールに加えて、近年ではインタラクティブなデータアプリが注目されています。

Snowflake で Notebook と Streamlit を使えるのを知っていますか? Notebook の中で Streamlit を使えるのも知っていますか?

SnowflakeノートブックとStreamlitを使えば、Pythonの知識だけで、簡単にインタラクティブなデータアプリを作成できます。Snowflakeノートブックは、コード、Markdownによる説明、そして可視化結果を1つのドキュメントにまとめることができるため、データ分析の作業効率を向上させます。

この記事では、Snowflakeノートブック上でStreamlitを使ってインタラクティブなデータアプリを作成する方法を紹介します。SQLクエリからデータを取得し、Streamlitのコンポーネントを使って動的なグラフや入力フォームを備えたアプリを構築する手順を、実際のコード例とともに解説します。

Notebook と Streamlit は何でしょう?

Notebook
ノートブックは、コードとその出力を 1 つのドキュメントに統合し、コード、説明文、視覚化、その他のリッチ メディアを組み合わせることができます。つまり、1 つのドキュメントで、コードを実行し、説明を追加し、出力を表示し、作業をより透明化することができます。
人気なのノートブックはJupyter LabsGoogle Colabです。

Snowflake もノートブックをサポートしています n ので、Snowflake のノートブックではMarkdown, PythonSQLコードを書けます。

notebook_example

内部ノートブックは .ipynb. Interactive Python Notebook (インタラクティブ Python ノートブック) ファイル形式を使用します。

Notebook Extension

Notebook に加えて、Snowflake が Streamlit もサポートしています。

Streamlit
Streamlit を利用したら、Python だけを使ってインタラクティブなウェッブアプリを開発する為に使えます。
つまり、HTML, JavaScript, CSS とかサーバサイドの言語とフレームワークの知識がなくても Streamlit を使ってウェッブアプリを開発出来ます。
Streamlit の概要

Notebookで Streamlit

NotebookでStreamlitを使う事が可能です。

注意点⚠️ :

Notebookで Streamlit のコードを書き、実行するのは可能ですが、もう作成された別の場所である Streamlit のアプリを呼ぶことが出来ないです。

もしもう作成された別の場所である Streamlit のアプリを Notebook の中で使いたいなら、その Streamlit アプリのコードをコピーし、Notebook に paste する必要があります。

Streamlit を使う為に、Streamlit と他の必要なライブラリを以下のようにimportする必要があります。

import streamlit as st

Streamlit を Notebook で使って見ましょう!
以下のコードを実行してみてください。

st.header('Streamlit is working!')
slider = st.slider(label='My Slider', min_value=0, max_value=10)

結果:

python code1

Notebook では python セルが他のセルのデータをアクセ出来ます

他のセルのデータをアクセ出来為に、そのセルのセル名が必要です。
Snowflake が自動的にcell1cell2ようなセル名を生成します。
cell#形も、cells.cell#形も使えます。

もっと進め前に、デモする為に使うデータの準備をしましょう。

dummy_sales_tableと言うテーブルを作成します。

create or replace table dummy_sales_table
(ID integer, Region varchar, Sales integer);

このテーブルにデータを入力します。

insert into dummy_sales_table
values (1, 'China', 100),
 (2, 'Japan', 70),
 (3, 'US', 120),
 (4, 'France', 30),
 (5, 'Germany', 90);

データの確認:

select *
from dummy_sales_table;

sql code1

このクエリーのセル名はcell7です。
このセル名を利用し、python のコードを確認してみましょう。

python code

クエリーの結果を直接に使えないです。使う前に、結果をいずれかPandasDataFrameオブジェクトかSnowparkDataFrameオブジェクトに変える必要があります。

じゃあ、Streamlit を利用し、上のクエリーの結果からグラフを作成しましょう。

# cell7の結果を Pandas dataframeに変える
my_df = cell7.to_pandas()

# Chart the data
st.subheader("Sales in 3 key countries")
st.bar_chart(data=my_df, x='REGION', y='SALES')

python code 3

Python セルのデータを SQL セルで使う方法

Python セルのデータを SQL セルで使う為に、variable 名を SQL セルで {{ variable名 }}として書いてください。

python code4

Streamlit セルのデータを SQL セルで使う方法

Streamlit は Python ライブラリので、Streamlit セルのデータを上にように、{{ variable名 }}、形を使って使います。

table_name = st.selectbox(
    label='見たい例名を選択してください',
    options=['dummy_sales_table', 'some_other_table']
    )

row_count = st.number_input(
    label='見たい行数を入力してください',
    value=1,
    min_value=1,
    max_value=100
    )

結果:

python code5

もし、セルのコードじゃなくて、セルの結果だけを見たいなら、セルの上の右側にアル 2 番目のボタンを押してください。

cell

結果:

python code6

この Streamlit のtable_namerow_countデータを SQL クエリーで使いましょう。

select *
from {{ table_name }}
limit {{ row_count }};

結果:

sql code2

Streamlit はインテラクティブなので、Streamlit のデータの価値が変わったら、Streamlit のセルから下にアル全てのセルが自動的に再実行されります。

python_code7


役に立つリソース

Snowflake についてもっと学びたいなら、以下の記事をご覧ください。

Comments

Popular posts from this blog

脱初心者! Git ワークフローを理解して開発効率アップ

Git – チーム開発に必須のバージョン管理システムですが、その真価を発揮するにはワークフローの理解が欠かせません。 色々な人は Git の使い方を良く知っていますが、Git を仕事やワークフローに統合する方法を余り良く知らない人もいます。本記事では、Git をワークフローに組み込むことで、開発プロセスがどのように効率化され、チーム全体のパフォーマンスが向上するのかを解説します。Centralized Workflow から Forking Workflow まで、代表的な 9 つのワークフローの特徴を分かりやすく紹介します。それぞれのメリット・デメリット、そして最適なユースケースを理解することで、あなたのプロジェクトに最適なワークフローを選択し、開発をスムーズに進めましょう! Centralized Workflow Feature branching/GitHub Flow Trunk Based Flow Git Feature Flow Git Flow Enhanced Git Flow One Flow GitLab Flow Forking Workflow 分かりやすくするために、同じコンセプトを説明するに一つ以上の図を使った場合があります。 Centralized Workflow 説明: 集中化ワークフローではプロジェクトにおけるすべての変更の単一の入力箇所として中央リポジトリを使用します。デフォルトの開発用ブランチは main と呼ばれ、すべての変更がこのブランチにコミットされます。 集中化ワークフローでは main 以外のブランチは不要です。チームメンバー全員がひとつのブランチで作業し、変更を直接中央リポジトリにプッシュします。 メリット: SVN のような集中型バージョン管理システムから移行する小規模チームに最適。 デメリット: お互いのコードが邪魔になり (お互いの変更を上書きするように)、プロダクション環境にバグをい入れる可能性が高くて、複数のメンバいるチームでこのフローを使いにくい。 地図: graph TD; A[Central Repository] -->|Clone| B1[Developer A's Local Repo] A --...

From Generic to Genius: Fine-tuning LLMs for Superior Accuracy in Snowflake

TL;DR: Cortex Fine-tuning is a fully managed service that lets you fine-tune popular LLMs using your data, all within Snowflake. While large language models (LLMs) are revolutionizing various fields, their "out-of-the-box" capabilities might not always align perfectly with your specific needs. This is where the power of fine-tuning comes into play. As it will be explained in this article, this feature empowers you to take a base LLM and customize it to excel in your particular domain. Here's the brief summary of why you might want to leverage Snowflake's fine-tuning capabilities: Unlocking Domain Expertise : Pre-trained LLMs are trained on massive, general datasets. Fine-tuning allows you to build upon this foundation and train the LLM further using data specific to your field, such as legal documents, medical records, or financial data. This empowers the LLM to understand complex terminology and patterns unique to your domain, leading to more accurate a...

How Wendy’s Successfully Penetrated the Japanese Market After Long Struggles

Wendy’s had long struggled to penetrate the Japanese market. Initially the Daiei Group tried to bring Wendy’s to Japan but failed. The next owner of Wendy’s’ Japanese franchise, Zensho Holdings Co. also failed miserably. However, Japanese-American entrepreneur Ernest M. Higa seems to have managed to do the task. This article will discuss the challenges Wendy’s faced when entering the Japanese market, how Ernie Higa addressed those challenges, macro environmental factors that impacted the success of the brand in Japan, future threats the Japanese fast food market is facing , and potential solutions. The prior challenges that Wendy’s faced when they entered the Japanese market There is no one-size-fits-all formula in business, especially when Japan is involved in the conversation. According to Japanese-American entrepreneur Ernie Higa, even if a company has a good product and good pricing, penetrating the Japanese market is more difficult compared to the US’s market. Foreign e...