Snowflake + Streamlit in Snowflakeで売上ダッシュボードを構築する【実践編】

追加のBIツールなし。Snowflake標準機能だけで、スタースキーマのデータモデル設計からダッシュボード構築まで一気通貫で実現する方法を紹介します。

この記事でわかること
  • Snowflake標準機能の Streamlit in Snowflake で、BIツールなしでダッシュボードを構築する方法
  • 分析用途に適したスタースキーマのデータモデル設計
  • KPI表示・月別推移・カテゴリ分析・地域分析・顧客セグメント分析の6つのビューの実装例

Snowflakeとは

Snowflakeは、クラウド上で動くデータプラットフォームです。Amazon Web Services(AWS)、Microsoft Azure、Google Cloudのいずれの環境でも利用でき、データウェアハウス(DWH)・データレイク・データ共有を1つの基盤で実現します。

従来のDWHとの違い

最大の特徴は、ストレージとコンピュート(計算処理)が分離されていること。従来のオンプレミスDWHでは、データ量が増えるとサーバーごと増設する必要がありました。Snowflakeでは、データの保管量と処理能力を別々にスケールできるため、「大量のデータを保管しつつ、分析時だけ計算リソースを立ち上げる」といった柔軟な運用が可能です。使った分だけ課金される従量制なので、夜間や休日にコストが発生しません。

Streamlit in Snowflakeとは

Snowflakeが2023年にStreamlit社を買収したことで、Snowflake内でPythonベースのWebアプリを直接構築・実行できるようになりました。これがStreamlit in Snowflakeです。

通常、ダッシュボードを作るにはTableauやPower BIといったBIツールを別途導入し、Snowflakeへの接続設定やライセンス管理が必要になります。Streamlit in Snowflakeを使えば、Snowflakeの管理画面からPythonスクリプトを書くだけでダッシュボードが完成します。データはSnowflakeの外に出ないため、セキュリティ面でも安心です。

Snowflakeと他のデータ基盤の比較

クラウドDWHは Snowflake だけではありません。代表的な選択肢と比較して、それぞれの強みと弱みを整理します。

観点 Snowflake Google BigQuery Amazon Redshift Databricks
料金体系 従量制(計算+保管を別課金) 従量制(クエリ処理量課金) 時間単位(クラスター常時起動) 従量制(DBU単位)
マルチクラウド AWS / Azure / GCP すべて対応 GCPのみ AWSのみ AWS / Azure / GCP すべて対応
ダッシュボード機能 Streamlit in Snowflake(組み込み) Looker Studio連携(別サービス) QuickSight連携(別サービス) ノートブック / Lakeview(組み込み)
データ共有 Marketplace + Secure Data Sharing Analytics Hub Data Exchange(限定的) Delta Sharing(オープン規格)
学習コスト 標準SQLで操作、UIが直感的 標準SQL、GCPの知識が前提 PostgreSQL方言、AWS運用知識が必要 Spark / SQL両対応、エンジニア向け
向いている用途 DWH + 可視化 + データ共有を一元化したい企業 GCP中心の環境で、大規模アドホック分析をしたい企業 AWS環境に既にコミットしている企業 ML/AIワークロードとデータ分析を統合したい企業

Snowflakeのメリット

  • クラウドを選ばない ― AWS・Azure・GCPのどれでも動くため、将来のクラウド移行や複数クラウド運用でもロックインされにくい
  • 使わない時間のコストがゼロ ― ウェアハウス(計算リソース)は自動で停止できる。夜間・休日にコストが発生しないのは、特に中小企業にとって大きい
  • ダッシュボードまで完結 ― Streamlit in Snowflakeにより、BIツールを別途契約しなくても可視化まで一気通貫で実現できる
  • データ共有が簡単 ― Secure Data Sharingでグループ会社や取引先とデータをコピーなしで共有できる。Marketplaceで外部データも即座に利用可能
  • 管理画面(Snowsight)が使いやすい ― SQLの実行、テーブル操作、Streamlitアプリの管理まで、ブラウザ1つで完結する

Snowflakeのデメリット・注意点

  • 従量課金の予測が難しい ― クエリの実行量に応じて課金されるため、利用が増えると想定外のコストが発生することがある。Resource Monitorで上限設定するなどの対策が必要
  • リアルタイム処理には向かない ― ミリ秒単位のストリーミング処理が必要な場合は、Kafka + Databricksなどの構成の方が適している。ただし、Snowpipeで数分単位のニアリアルタイム取り込みは可能
  • Streamlit in Snowflakeの制約 ― 本格的なBIツール(Tableau、Power BI)と比べると、ドリルダウン、スケジュール配信、アラート通知などの機能は限定的。非エンジニアが自分でダッシュボードを作り変えるのも難しい
  • エコシステムへの依存 ― Snowflake独自の機能(Cortex AI、Snowpark、Marketplace)を活用するほど、他プラットフォームへの移行コストが上がる
選び方のポイント

すでにAWSに集中投資しているならRedshift、GCP中心ならBigQuery、ML/AIが主目的ならDatabricksが自然な選択肢です。「クラウドを決めていない」「DWH + 可視化を手早く始めたい」「グループ会社とデータを共有したい」という場合は、Snowflakeの強みが最も活きます。

こんな企業・チームに読んでほしい

本記事は、以下のような課題を抱える企業を想定しています。

Excelでの集計が限界に達している中小〜中堅企業

売上データが数万件を超え、ピボットテーブルでは重くて回らない。月次レポートの作成に毎回数時間かかっている。そんな状況に心当たりがあれば、まさにSnowflake + Streamlitの出番です。

BIツールのコスト・運用負荷がネックになっている企業

Tableau・Power BIなどのライセンス費用(年間数十万〜数百万円)に二の足を踏んでいる。BIサーバーの構築・保守を担える人材がいない。Streamlit in SnowflakeならSnowflakeの利用料に含まれるため、追加コストが発生しません。

データは溜まっているが活用できていない企業

基幹システムやkintone・SaaSにデータはあるが、横断的に見る手段がない。「まずは可視化したい」がスタートラインになっている企業にとって、最初の一歩として最適です。

社内にPython経験者がいるIT企業・DX推進チーム

BIツール固有の言語(DAX・LODなど)を新たに学ぶより、Pythonで書きたい。エンジニア主導でスピーディにダッシュボードを立ち上げたいチームに向いています。

特にフィットする企業像

年商数億〜数十億円規模の企業で、全国に拠点や取引先を持ち、商品カテゴリごとの売上分析や地域別の傾向把握が求められるケース。

今回作るもの

構成要素内容
データベースSALES_DEMO(Snowflake上に構築)
データモデルスタースキーマ(ファクト1テーブル + ディメンション3テーブル)
ダッシュボードStreamlit in Snowflakeで可視化(KPI・月別推移・カテゴリ別・地域別・商品ランキング・顧客セグメント)

データモデル設計(スタースキーマ)

今回採用したのは、分析用途の定番であるスタースキーマです。中央のファクトテーブル(売上トランザクション)を、商品・顧客・地域の3つのディメンションテーブルが取り囲む構成です。

DIM_PRODUCTS DIM_CUSTOMERS DIM_REGIONS ┌─────────────┐ ┌───────────────┐ ┌────────────┐ │ PRODUCT_ID │ │ CUSTOMER_ID │ │ REGION_ID │ │ PRODUCT_NAME│ │ CUSTOMER_NAME │ │ REGION_NAME│ │ CATEGORY │ │ REGION_ID ────┼────▶│ AREA │ │ UNIT_PRICE │ │ SEGMENT │ └────────────┘ └──────┬──────┘ └───────┬───────┘ │ │ ▼ ▼ ┌──────────────────────────────────────┐ │ FACT_SALES │ │ SALE_ID | SALE_DATE | CUSTOMER_ID │ │ PRODUCT_ID | QUANTITY | AMOUNT │ └──────────────────────────────────────┘

ディメンションテーブル

テーブル件数内容
DIM_PRODUCTS10件商品マスタ。電子機器・周辺機器・消耗品の3カテゴリ
DIM_CUSTOMERS10件顧客マスタ。大企業・中小企業・スタートアップの3セグメント
DIM_REGIONS5件以上地域マスタ。東京・大阪・名古屋・福岡・札幌など全国をカバー

ファクトテーブル

テーブル件数期間内容
FACT_SALES5,000件2024/4〜2025/3(1年間)売上トランザクション
ポイント

ダミーデータですが、日本企業の商品名・顧客名・地域名を使っているので、デモやプレゼンでもリアリティがあります。

ダッシュボードの実装

Streamlit in Snowflakeでは、Pythonスクリプト1ファイルだけでダッシュボードが完成します。Snowflake内で動くため、接続情報の設定は不要。get_active_session() だけでデータにアクセスできます。

KPIカード + 月別売上推移

KPIカードと月別売上推移グラフ

KPI表示と月別売上推移の折れ線グラフ

画面上部には4つのKPIカード(総注文数・総売上・平均注文額・顧客数)を横並びに表示しています。一目で全体の規模感を把握できます。

その下には月別売上推移の折れ線グラフ。2024年4月〜2025年3月の1年間で、売上のトレンドや季節変動が確認できます。

カテゴリ別売上 / 地域別売上

カテゴリ別・地域別売上グラフ

カテゴリ別売上(左)と地域別売上(右)の棒グラフ

画面を2分割し、左にカテゴリ別、右に地域別の棒グラフを配置しています。

  • カテゴリ別 ― 電子機器が圧倒的に多く、周辺機器・消耗品と続きます。単価の違いが売上構成に直結していることがわかります
  • 地域別 ― 東京が最大ですが、大阪・名古屋・福岡なども一定のボリュームがあり、全国に分散した売上構造が見えます

商品別売上ランキング

商品別売上ランキングと顧客セグメント別売上

商品別売上ランキング(テーブル表示)

全商品の売上ランキングをテーブル表示しています。ノートPCが約6.4億円でトップ、次いでモニター・プリンターと高単価の電子機器が上位を占めています。

消耗品(HDMIケーブル・LANケーブル)は数量は多いものの、単価が低いため売上金額では下位に。商品戦略の検討材料として活用できます。

顧客セグメント別売上

顧客セグメント別売上グラフ

顧客セグメント別(大企業・中小企業・スタートアップ)の売上比較

顧客を「大企業」「中小企業」「スタートアップ」の3セグメントに分類し、セグメント別の売上を棒グラフで表示しています。中小企業セグメントが最も売上が大きく、大企業・スタートアップが続く構成です。

Streamlit in Snowflakeのメリット

観点従来のBI構成Streamlit in Snowflake
インフラBIサーバー + DB接続設定Snowflake内で完結
セキュリティDB認証情報の管理が必要SnowflakeのRBACをそのまま利用
開発言語BI固有のDAX/LODなどPython(学習コストが低い)
コストBIライセンス費用Snowflakeの利用料に含まれる
カスタマイズツール依存Pythonで自由に拡張可能
特に大きなメリット

Snowflake内で完結するため、データがSnowflakeの外に出ません。BIサーバーへのDB接続情報の管理が不要になり、セキュリティリスクを大幅に低減できます。

Streamlit in Snowflakeが活きるシナリオ

「ダッシュボードならTableauでもPower BIでもできるのでは?」という疑問はもっともです。ここでは、Streamlit in Snowflakeだからこそ価値が出るシナリオに絞って紹介します。

社内向けKPIダッシュボードの即日立ち上げ

「経営会議用のKPIレポートを毎月Excelで作っている」という企業は多いはずです。Streamlit in Snowflakeなら、Snowflakeに集約した売上・受注・在庫データをリアルタイムでKPI表示できます。月末にExcelをこねくり回す作業がなくなり、経営層はいつでもブラウザから最新の数字を確認できます。今回のデモで構築したKPIカード+月別推移グラフがまさにこのパターンです。

営業チーム向けの地域別・担当者別レポート

「全国の売上は見えるが、自分の担当エリアだけ抜き出すのが面倒」という声は営業現場でよく聞きます。SnowflakeのRBAC(ロールベースアクセス制御)がStreamlitアプリにもそのまま適用されるため、同じダッシュボードを全社に展開しても、東京支社は東京の数字だけ、経営層は全社横断の数字が見えるという制御がBIツール側の設定なしで実現できます。今回のデモの地域別売上グラフを、閲覧者の所属に応じてフィルタリングするイメージです。

Marketplaceの外部データを加味した需要分析

Snowflake Marketplaceでは、気象データ・人口統計・業界レポートなどを自分のSnowflake環境に直接マウントできます。たとえば小売業なら、自社の日別売上データとMarketplaceの気象データを結合して「気温が30度を超えた日は飲料カテゴリの売上が何%伸びるか」を可視化できます。外部データの取り込みにETLパイプラインを組む必要がなく、SQLのJOIN一つで完結するのがSnowflakeならではの強みです。

カスタマーサポートの問い合わせ傾向モニタリング

Snowflakeに組み込まれたAI機能「Cortex AI」を使うと、問い合わせテキストの感情分析をSQL関数として実行できます。Streamlitで「今週のネガティブ問い合わせ件数の推移」「製品別のクレーム発生率」をグラフ化すれば、品質問題の早期発見につながります。外部のAIサービスにデータを送る必要がないため、顧客情報を含むデータでも安心して分析に使えます。

まとめ

Snowflake + Streamlit in Snowflakeの組み合わせは、「データを貯める」と「データを見る」を1つのプラットフォームで実現できる強力なソリューションです。

今回のデモでは、KPI表示・時系列分析・カテゴリ分析・地域分析・ランキング・セグメント分析の6つのビューを持つダッシュボードを構築しました。約100行のPythonコードで、これだけの分析画面が作れます。

Snowflakeをすでにお使いの方も、これから導入を検討される方も、まずはStreamlit in Snowflakeでデータの可視化から始めてみてはいかがでしょうか。

【実践編】自社データで試してみる

本記事で紹介したダッシュボードは、以下の3ステップで自社データに置き換えることができます。

ステップ1 Snowflakeトライアルアカウントを取得する

Snowflakeの無料トライアルは30日間・400ドル分のクレジット付きで利用できます。クレジットカードの登録も不要なので、まずは試してみるハードルは低いです。トライアルでもStreamlit in Snowflakeの全機能が使えます。

ステップ2 自社データをスタースキーマで整理する

本記事のデータモデル設計を参考に、自社の売上データをファクトテーブルとディメンションテーブルに分割します。最初から完璧を目指す必要はありません。まずはExcelの売上一覧をCSVでSnowflakeにアップロードし、商品マスタ・顧客マスタを別テーブルに切り出すところから始めましょう。Snowflakeの管理画面(Snowsight)からCSVを直接アップロードできます。

ステップ3 Streamlitアプリを作成する

Snowsightの左メニューから「Streamlit」を選択し、新規アプリを作成します。本記事のKPIカードや折れ線グラフのコードをベースに、自社のテーブル名・カラム名に書き換えるだけで動作します。Pythonの基本的な知識(変数、if文、ループ)があれば十分です。

はてなベースの支援メニュー

「自社データの整理が難しい」「スタースキーマへの変換がわからない」という場合は、データモデル設計からダッシュボード構築までを一括でご支援しています。既存のExcel・kintone・基幹システムのデータをSnowflakeに集約するETLパイプラインの設計もお任せください。

Snowflakeの導入・データ活用を支援します

データ基盤の設計からダッシュボード構築まで、御社のデータ活用をトータルでサポートいたします。
「まずはSnowflakeで何ができるのか知りたい」という段階からお気軽にご相談ください。

無料相談はこちら
Facebook
X
LinkedIn

関連記事

AIにデータをためてスキルを育てるのは、まるで育成ゲームだ ―― 業務AIが「相棒」になるまでの話

このコラムの要点 社内業務にAIを導入するとき、多くの人が最初に驚くのは「最初は思ったより使えない」という事実です。しかし、毎日少しずつデータを与え、プロンプトを整え、スキルを作りこんでいくと、AIは徐々に「自社専用の相

もっと見る