0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflake Cortex Code×Streamlitでデータ探索からアプリ開発までやってみた

0
Posted at

執筆日:2026年4月10日

免責事項     本記事は執筆時点の情報に基づいています。内容は将来変更される可能性があります。

前提条件

・Snowflakeの基本操作が可能であること 

・Snowsightへのアクセス権限を有していること


はじめに

はじめまして。本ブログを閲覧いただきありがとうございます。株式会社NTTデータ九州ビジネス共創部デジタルビジネス推進室D&I(Data & Intelligence)チームの清田です。
D&Iチームでは、TableauAlteryxSnowflakeなどのD&I(データ&インテリジェンス)領域におけるツール導入支援や開発を通じて、お客様の業務/意思決定の効率化・高度化のご支援に取り組んでいます。

今回はAI×データ利活用をテーマにSnowflake Cortex Codeを使って、自然言語でデータの探索からStreamlit(PythonベースのWebアプリフレームワーク)アプリ開発用のPythonコードの生成、Streamlitを用いたアプリ開発までを実施しました。
※ 本記事では、Tableau Public(Salesforce社が提供するデータ可視化サービス)で公開されているサンプルデータを利用しています。

本記事では、プログラミング経験が少ないデータ分析担当者でも、Cortex Codeを活用して分析アプリを構築できることを実演します。


Snowflake Cortex Codeとは

Snowflakeには近年、生成AIを活用した複数の機能が追加されています。
Snowflakeの公式ドキュメントによるとSnowflake Cortex Code もその中の1つであり、

  • SQLの自動生成
  • データ構造の理解支援
  • アプリコードの生成

といった実装寄りの領域をカバーする、Snowflakeに特化したAIコーディングエージェントです。

2026年2月にプレビュー版が公開されたばかりの新機能です。

Snowflake Cortex Codeの概要

データの加工や分析には、通常SQLやPythonといったプログラミングの知識が必要です。Cortex Codeを使うと、「売上データを月別に集計して」「このクエリを最適化して」といった自然言語の指示だけで、コードの生成・実行・最適化まで自動でこなしてくれます

似た機能としてSnowflake Intelligence(Snowflakeの生成AI分析機能)がありますが、Cortex Codeとは役割が異なっています。

  • Snowflake Intelligence:ビジネス担当者向け。チャット形式でデータに質問し、グラフや分析結果をすぐに得られる「データを"使う"ためのUI」
  • Cortex Code:エンジニア・開発者向け。パイプラインの構築・コードの開発・システムの管理など「データ基盤を"作る"ためのエージェント」

Snowflake Intelligenceは、セマンティックの定義が必要など、使うためにはある程度事前準備が必要です。その分、「先月の地域別売上ランキングは?」「前四半期と比べてコンバージョン率はどう変わった?」といったビジネス指標に踏み込んだ複雑な質問にも、正確な数値で答えることができます。

セマンティック
「売上」「先月」「顧客」といったビジネス用語と、データベース上の実際のテーブル・カラムを紐づける定義

一方Cortex Codeは、セマンティックの定義など事前準備なしで使い始めることができます。その分、Snowflake Intelligenceのように複雑な質問に答えることはできませんが、「このSQLを最適化して」「テーブル一覧を見せて」「このパイプラインのエラーを直して」といった開発・運用作業上の基本的な指示への対応を得意としています。

両者は対立するものではなく用途に応じて使い分けるものであり、またCortex Codeで作ったセマンティックモデルをSnowflake Intelligence上で活用するなど、お互いに補完するような形で活用することも可能です。


検証の流れ

今回実施する、Cortex CodeStreamlitアプリを開発するまでの大きな流れは以下の通りです。

主にSnowsightを利用して実施します。

1.Snowflakeオブジェクトの作成

2.サンプルデータの収集とSnowflakeへのデータロード

3.Cortex Codeでデータ探索~Streamlit用コードの生成

4.Streamlitアプリの作成

なお、今回のSnowflake環境では、エディションにビジネスクリティカル、プラットフォームにはAmazon Web Services東京リージョンを採用しています。
上記以外の環境の場合、手順が異なる場合がありますのでご留意ください。


1.Snowflakeオブジェクトの作成

サンプルデータなどを格納するデータベース、スキーマを作成します。
今回は検証目的のため、ロールにはACCOUNTADMINを使用します。
実際の環境を構築される際には、SYSADMINなど最小限の権限での構築を推奨します。

※ 本手順は検証環境向けです。本番環境では必ず社内セキュリティポリシーに従ってください。

まずは、Snowsightにサインインし、「カタログ」 > 「データベースエクスプローラー」を選択します。

次に、画面右上の「+データベース」を押下します。

1-1_DB_Create1.png

任意のデータベース名を入力し、「作成」を押下します。

1-2_DB_Create2.png

データベースエクスプローラーのデータベース一覧に、作成したデータベースの名前が表示されていることを確認します。

続いて、作成したデータベース上にスキーマを作成します。

画面右上の「+スキーマ」を押下します。

1-3_Schema_Create1.png

任意のスキーマ名を入力し、「作成」を押下します。

1-4_Schema_Create2.png

先ほど作成したデータベースの階層内に、作成したスキーマの名前が表示されていることを確認します。

1-5_Schema_Create3.png

2.サンプルデータの収集とSnowflakeへのデータロード

Streamlitアプリで使用するデータとして、今回はTableau Publicで公開されている小売業のサンプルデータを使用します。

下記のTableau Publicのサイトから、「Superstore Sales」の右側にある「Dataset (xls)」を押下し、データをダウンロードしてください。

Tableau Public

2-1_Input_Data1.png

今回使用するデータはxlsファイルですが、Snowsightからロード可能なファイル形式はCSV・TSVなどの構造化データ、JSON・Avro・ORC・Parquet・XMLなどの半構造化データに限られており、Snowsightから直接Excelファイルをロードすることはできません。
そのため、ここではExcelファイルをCSVに変換した上で、Snowflakeへのデータロードを行います。

まずは、ダウンロードしたExcelファイルを開きます。

今回のデータはSuperstoreという架空の店舗のデータで、日々の取引情報や取り扱っている製品・顧客情報などが含まれており、それぞれでシートが分かれたファイルとなっています。

今回使用するのは取引情報を整理した「Orders」シートのため、このシートを開いた状態で画面上部の「ファイル」を選択します。

2-2_Input_Data2.png

「エクスポート」を押下します。

ファイルの種類の変更欄で「CSV (コンマ区切り) (.csv)」を選択し、「名前を付けて保存」を押下します。

2-3_Input_Data3.png

保存時に下記のアラート画面が表示されますので、「OK」を押下します。

2-4_Input_Data4.png

CSVファイルが保存されるので、一度ファイルを開き中身が「Orders」シートの内容になっていることを確認します。

2-5_Input_Data5.png

これでSnowflakeへのデータロードの準備が整いましたので、早速テーブルを作成します。

Snowsightの画面に戻り、データベースエクスプローラーのオブジェクト一覧から先ほど作成したスキーマを選択します。

画面右上の「作成」を押下し、「テーブル」>「ファイルから」を選択します。

2-6_Table_Create1.png

保存したCSVファイルをロードします。

任意のテーブル名を入力し、「次へ」を押下します。

2-7_Table_Create2.png

読み込んだCSVのプレビュー画面が表示されます。

列名が正しく認識されない場合は、画面右上の「○件のエラー」>「列名を自動修正」を押下します。

2-8_Table_Create3.png

列名が正しく認識されエラーが表示されなくなったことを確認し、右下の「ロード」を押下します。

2-9_Table_Create4.png

 下記画面が表示されたら、正常にデータロードが完了しています。

念のため、「テーブルの詳細を表示」を押下し、データが正しくロードされているかを確認します。

2-10_Table_Create5.png

作成したテーブルのデータプレビュー画面が表示されます。

データの内容に不備がないかを確認します。

2-11_Table_Create6.png

3.Cortex Codeでデータ探索~Streamlit用コードの生成

Snowsight左上のSnowflakeのロゴを押下し、一度ホーム画面に戻ります。

Cortex Codeは画面右下の✦マークを押下することで使用できます。

3-1_Cortex_Code1.png

3-2_Cortex_Code2.png

それでは早速Cortex Codeを使って、まずはアクセス可能なテーブルにはどのようなものがあるかを見ていきます。

下記をCortex Codeに質問してみます。

アクセス可能なテーブルを教えて

次のような結果が返ってきました。

3-3_Data_Search1.png

Snowflakeアカウント上でアクセス可能なすべてのテーブルの一覧が表示されました。

一覧の中には、先ほど作成した「SAMPLE_SUPERSTORE」も含まれています。

続けて、ほしいデータがどのテーブルに含まれているのか、追加で質問してみます。

下記をCortex Codeに質問してみます。

スーパーストアの取引情報が含まれるテーブルはどれ?

次のような結果が返ってきました。

3-4_Data_Search2.png

先ほど作成したテーブルが回答として返ってきました。

このテーブルにほしいデータが含まれているか、念のため確認してみましょう。

下記をCortex Codeに質問してみます。

このテーブルのデータ項目を見せて
あと、10レコード抽出して見せて

次のような結果が返ってきました。

3-5_Data_Search3.png

3-6_Data_Search4.png

「SAMPLE_SUPERSTORE」テーブルのデータ構造とデータの中身が表示されました。

今回はスーパーストアの取引データを使ってStreamlitアプリを作成しますので、使用するテーブルはCortex Codeが提示した「SAMPLE_SUPERSTORE」テーブルで良さそうです。

Streamlitアプリで使うテーブルが見つかりましたので、続いてStreamlitアプリを作成するためのPythonコードを生成します。

今回はスーパーストアの売上と利益率を分析し、事業の概況次にどのようなアクションを打っていく必要があるかを教えてくれるアプリを作ってみようと思います。

下記をCortex Codeに依頼してみます。

このテーブルから、全体の売上と利益率をそれぞれ折れ線グラフで、カテゴリ・サブカテゴリ毎の売上/利益率を棒グラフ、集計表で表示するきれいなStreamlitアプリを開発したい。
下記要件を考慮し、Streamlitで動作するPythonコードを生成してほしい。

・データの内容はすべて日本語に翻訳(価格の単位も円に変換)
・ページ上部に結果のサマリと、結果からわかる打つべきアクションと期待効果、その根拠のインサイトも文章で表示
・売上/利益率、カテゴリ・サブカテゴリは、それぞれ1つのチャート上で表現
・チャートはデータビジュアライゼーション方法論に則った表現にする
・分析対象期間を絞れるフィルタの追加(デフォルトは、直近1年間のデータを参照)
・集計表はCSVでダウンロードできるボタンを追加

次のような結果が返ってきました。

3-7_Code_Generate1.png

3-8_Code_Generate2.png

指示したアプリの仕様をポイントに、Streamlitアプリで直接使用可能なPythonコードが生成されています。

4.Streamlitアプリの作成

Cortex Codeで生成したPythonコードを使って、Streamlitのアプリを作成します。

Snowsightで画面左の「プロジェクト」>「Streamlit」を選択します。

4-1_Streamlit_Create1.png

任意のアプリタイトルを入力し、アプリの場所に作成したデータベースとスキーマを指定します。

Python環境は「ウェアハウスで実行」を選択します。

アプリウェアハウスは、作成したデータベースとスキーマへの権限があるものを指定します。

最後に、画面右下の「作成」を押下します。

4-2_Streamlit_Create2.png

Streamlit作成用の画面が表示されます。

作成時は、デフォルトでテンプレートのPythonコードが入力されていますので、こちらのコードを編集します。

4-3_Streamlit_Create3.png

先ほどCortex Codeで生成したPythonコードをコピーし、テンプレートのコードを上書きします。

画面右上の「▶ 実行」を押下します。

4-4_Streamlit_Create4.png

次のようなアプリが作成されました。

4-5_Streamlit_Layout1.png

4-6_Streamlit_Layout2.png

4-7_Streamlit_Layout3.png

4-8_Streamlit_Layout4.png

Cortex Codeへ指示した要件の通り、売上と利益率の推移、カテゴリ・サブカテゴリごとの比較グラフ、集計表と、それぞれの分析結果のサマリ・打つべきアクションが表示されています。
また、データの中身も全て日本語に翻訳されています。

最後に、集計表の下に配置されている「CSVダウンロード」ボタンを押下します。

4-9_Streamlit_Layout5.png

集計表に表示されているデータがCSVファイルとして出力できました。

今回Cortex Codeは上記のようなUIを表示するPythonコードを生成しましたが、Cortex Codeに依頼する度に違ったPythonコードが生成されます。
そのため、本記事と同様なUIにならない可能性がありますので、ご留意ください。

また、今回Cortex Codeにコード生成を依頼する際、いくつかの要件を依頼文に記載しています。
要件の記載がない場合も、Cortex Code側で補完してPythonコードを生成しますが、その場合イメージ通りのUIにならない可能性があります。
作成するアプリに対して具体的な要件など整理されている場合は、本記事のように依頼文に要件を記載することを推奨します。

また、Cortex Codeは対話しながらコードを精緻化していくことも可能です。
生成したコードが思うようなUIになっていない場合は、追加で要件を伝えることで、よりイメージに合ったコードが生成されますので、要件通りのコードが生成されるまで対話いただくことを推奨します。

おわりに

Snowflake Cortex Codeでデータの探索からStreamlit用のPythonコード生成、Streamlitアプリの作成まで実施しました。

今回使用したSnowflakeの環境は管理しているテーブルも少なく、このような環境であればほしいデータを探すのも比較的容易に対応できます。

一方で、実際の本番環境では多くのテーブルが管理されており、データを分析したくてもどこにほしいデータがあるのかわからない といったケースがよく見受けられます。

Cortex Codeであれば、自分が参照できるテーブルにはどのようなものがあるのか?その中で自分がほしい情報はどのテーブルに含まれているのか? といった問いも、自然言語で簡単に解消できるため、ほしいデータにたどり着くまでの時間を大幅に短縮できます。

また、必要なデータは持っていて、これを参照するようなアプリを作成したいとなった場合には、Streamlit in Snowflakeなどのサービスを使ってアプリを作成するケースもあるかと思います。

一方、Streamlitの裏側はPythonなどのプログラムコードで構成されているため、アプリを作成するにはある程度のコーディングのスキルが求められます

Cortex Codeであれば、作りたいアプリのイメージと要件を自然言語で指示するだけで、簡単にStreamlit用のコードを生成してくれるため、コーディングのスキルがなくても簡単にアプリ作成が可能です

私自身、上記のようなお悩みを持たれている企業様をこれまで多く見てきましたが、AI技術の急速な進化により、今回のCortex Codeのように、解決に寄与する便利な機能もどんどん実装されてきています。

本記事を通して、上記のようなお悩みを持たれていた方々の作業負荷が少しでも軽減されれば幸いです。
また、Cortex Codeを試してみた感想やご質問などがあれば是非コメントお待ちしています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?