Streamlit in Snowflake(SiS)を利用し、生成AIであるCortex Codeに、Streamlitアプリケーションを作らせてみました。
Snowflake環境があれば、非常に楽にWEBサイトを構築できます。
開発時の用語や方法は、インターネット検索すれば沢山ヒットするかと思います。
この記事ではCortex Codeにフォーカスします。
Streamlitは、数行のコードでWEBサイトを簡単に開発できるツールです。 おそらく誰でも、数分~数十分で閲覧可能な状態にできます。 Streamlitのサイトのブラウザ上で開発します。言語はPython。
Snowflakeは、クラウドのデータベースです。 少し崩れたデータと、大量のデータの取り扱いが得意なので、分析者向けです。 業務では大抵の場合、ブラウザ上のUIで操作します。
Streamlit in Snowflakeは、StreamlitとSnowflakeを簡単に連携可能にしたSnowflakeの機能です。 Streamlitに1行コードを書くだけで、Snowflakeと接続できます。 開発時は、Snowflakeのブラウザ上のUIから、Streamlitのコードを編集します。 データをすぐに取って来れる点も、分析者向けです。
| 図1. Streamlitサンプル |
とはいえ、まずは分析したいDBとスキーマを作成し、分析対象のファイルを取り込みます。
これは手作業のほうが早そうに考えた為です。
次に、Snowflakeの生成AIであるCortex Code(Coco)に、取り込んだファイルからテーブルを作成するDDLを作るよう指示します。
分からなくなったら、Cortex Codeに聞くと大体やってくれます。
AI専用のクレジットがかかりますので、ご注意を!
Cortex CodeにStreamlitアプリケーションを作成するよう指示します。
| LAB_DB.NO_000001.MY_INTERNAL_STAGEにある「001_CSV_1.csv」を読み込み、 NO_000001スキーマに新しいテーブルのDDLを作成お願いします。 作成したDDLはこのワークスペースにDDLフォルダを作成し、そこに配置してください。 実行はしないてください。 以下、仕様の概略です。 ・テーブルはRAWテーブル・STAGINGテーブルの二つです。同じスキーマ内に作成お願いします。 ・テーブル名称にはRAWかSTAGINGテーブルかが分かるように接頭辞または接尾辞を付与お願いします。 ・RAWテーブルは、ファイル名・レコード作成日時を保持する。永続テーブル。 ・STAGINGテーブルは、RAWテーブルから最新のレコード作成日時のレコードのみ取得する。(動的テーブルなど) ・全て英語名称であること。 ・物理名称は_区切りとする。 ・データ型は適宜カラム名称と値から推測して設定してください。 |
| 以下のDDLやクエリ、Streamlitアプリをワークスペースに作成お願いします。 ①、②は実行はしないでください。 ①「LAB_DB.NO_000001.RAW_SALES」に「LAB_DB.NO_000001.MY_INTERNAL_STAGE.001_CSV_1.csv」のデータを 登録するcopy into文のプロシージャを作成するDDL。 ②①を呼び出すクエリ。トランザクション制御付き。 ③Streamlitアプリケーションをワークスペースに作成お願いします。 ③について ・ソースは、LAB_DB.NO_000001.STG_SALESのデータ。 ・1画面。 ・タイトルは、なんかいい感じに。 ・全体構成は、上側にわりと大きめに総売上金額。その下の左側に「円グラフ」。下の右側に「棒グラフ」。 ・できればベースのクラスを作って、それを継承だったりオーバーライドする形が良い。 ・円グラフも棒グラフも、棒だったり円の中のケーキ部分をクリックすると、その案件だけの状態にフィルタリングされる形が良い。 円グラフは、顧客別の売上割合。 棒グラフは、横に伸びる案件別の売上および利益棒グラフ。利益の高い順に上から。棒グラフは、売上と利益両方欲しい。案件ごと。 |
| 顧客コード,顧客名称,案件コード,案件名称,部門コード,部門名称,売上日,売上金額,売上利益 001,顧客A,300012401,案件1,005,DX推進部,2026/8/26,1580000,1300000 413,顧客B,300005198,案件2,002,システム開発部,2026/8/24,20000000,15000000 102,顧客C,300010012,案件3,001,営業一部,2026/8/1,3500000,800000 205,顧客D,300010013,案件4,003,クラウドソリューション部,2026/8/2,12000000,4500000 001,顧客A,300012401,案件1(追加開発),005,DX推進部,2026/8/3,800000,600000 309,顧客E,300010014,案件5,002,システム開発部,2026/8/3,5000000,1200000 512,顧客F,300010015,案件6,004,インフラ保守部,2026/8/4,2800000,900000 102,顧客C,300010016,案件7,001,営業一部,2026/8/4,1500000,400000 413,顧客B,300005198,案件2(2次フェーズ),002,システム開発部,2026/8/5,8500000,6000000 601,顧客G,300010017,案件8,005,DX推進部,2026/8/5,4200000,1800000 001,顧客A,300010018,案件9,005,DX推進部,2026/8/6,9500000,3200000 703,顧客H,300010019,案件10,003,クラウドソリューション部,2026/8/6,18000000,7000000 205,顧客D,300010020,案件11,001,営業一部,2026/8/7,6000000,1500000 810,顧客I,300010021,案件12,002,システム開発部,2026/8/7,30000000,11000000 309,顧客E,300010014,案件5(保守ライセンス追加),002,システム開発部,2026/8/8,600000,450000 904,顧客J,300010022,案件13,004,インフラ保守部,2026/8/8,1200000,300000 512,顧客F,300010023,案件14,005,DX推進部,2026/8/9,23000000,8500000 102,顧客C,300010024,案件15,001,営業一部,2026/8/9,4800000,1100000 413,顧客B,300010025,案件16,002,システム開発部,2026/8/10,15000000,5000000 601,顧客G,300010026,案件17,003,クラウドソリューション部,2026/8/10,7200000,2100000 703,顧客H,300010019,案件10(追加要件対応),003,クラウドソリューション部,2026/8/11,2500000,1800000 001,顧客A,300010027,案件18,005,DX推進部,2026/8/11,3100000,1000000 810,顧客I,300010028,案件19,004,インフラ保守部,2026/8/12,5500000,1400000 205,顧客D,300010013,案件4(オプション機能拡張),003,クラウドソリューション部,2026/8/12,1800000,950000 904,顧客J,300010029,案件20,001,営業一部,2026/8/13,8900000,2200000 309,顧客E,300010030,案件21,002,システム開発部,2026/8/13,14000000,4800000 512,顧客F,300010031,案件22,005,DX推進部,2026/8/14,6800000,2000000 102,顧客C,300010032,案件23,004,インフラ保守部,2026/8/14,2100000,600000 601,顧客G,300010017,案件8(サーバー増設対応),005,DX推進部,2026/8/15,1100000,700000 413,顧客B,300010033,案件24,002,システム開発部,2026/8/15,11500000,3900000 703,顧客H,300010034,案件25,003,クラウドソリューション部,2026/8/16,16000000,5500000 001,顧客A,300012401,案件1(セキュリティ機能強化),005,DX推進部,2026/8/16,1200000,900000 810,顧客I,300010035,案件26,001,営業一部,2026/8/17,4300000,1000000 205,顧客D,300010036,案件27,002,システム開発部,2026/8/17,22000000,7800000 904,顧客J,300010037,案件28,005,DX推進部,2026/8/18,3600000,1200000 309,顧客E,300010038,案件29,004,インフラ保守部,2026/8/18,1900000,500000 512,顧客F,300010015,案件6(年間保守更新),004,インフラ保守部,2026/8/19,2800000,2100000 102,顧客C,300010039,案件30,003,クラウドソリューション部,2026/8/19,9800000,3000000 601,顧客G,300010040,案件31,001,営業一部,2026/8/20,2700000,700000 413,顧客B,300005198,案件2(運用サポート機能追加),002,システム開発部,2026/8/20,3000000,2200000 703,顧客H,300010041,案件32,002,システム開発部,2026/8/21,13500000,4100000 810,顧客I,300010021,案件12(機能改善フェーズ),002,システム開発部,2026/8/21,5000000,3500000 001,顧客A,300010042,案件33,005,DX推進部,2026/8/22,7500000,2400000 205,顧客D,300010043,案件34,003,クラウドソリューション部,2026/8/22,10500000,3600000 904,顧客J,300010044,案件35,004,インフラ保守部,2026/8/23,4100000,1100000 309,顧客E,300010045,案件36,001,営業一部,2026/8/23,5200000,1300000 512,顧客F,300010046,案件37,002,システム開発部,2026/8/24,17500000,5800000 102,顧客C,300010047,案件38,005,DX推進部,2026/8/24,8200000,2900000 601,顧客G,300010048,案件39,003,クラウドソリューション部,2026/8/25,14000000,4200000 703,顧客H,300010049,案件40,004,インフラ保守部,2026/8/25,3300000,900000 413,顧客B,300010050,案件41,001,営業一部,2026/8/26,6100000,1600000 810,顧客I,300010051,案件42,005,DX推進部,2026/8/26,19000000,6800000 001,顧客A,300010052,案件43,002,システム開発部,2026/8/1,12500000,4000000 205,顧客D,300010053,案件44,004,インフラ保守部,2026/8/2,2400000,700000 904,顧客J,300010037,案件28(ライセンス追加),005,DX推進部,2026/8/2,500000,380000 309,顧客E,300010054,案件45,003,クラウドソリューション部,2026/8/3,11000000,3800000 512,顧客F,300010055,案件46,001,営業一部,2026/8/4,3900000,950000 102,顧客C,300010056,案件47,002,システム開発部,2026/8/5,16500000,5200000 601,顧客G,300010026,案件17(保守構築追記),003,クラウドソリューション部,2026/8/5,900000,650000 703,顧客H,300010057,案件48,005,DX推進部,2026/8/6,25000000,9200000 413,顧客B,300010058,案件49,004,インフラ保守部,2026/8/7,4600000,1300000 810,顧客I,300010059,案件50,003,クラウドソリューション部,2026/8/8,8800000,2700000 001,顧客A,300010060,案件51,001,営業一部,2026/8/8,1800000,450000 205,顧客D,300010036,案件27(追加検証作業),002,システム開発部,2026/8/9,1500000,1100000 904,顧客J,300010061,案件52,002,システム開発部,2026/8/10,13000000,4300000 309,顧客E,300010062,案件53,005,DX推進部,2026/8/10,6200000,1900000 512,顧客F,300010063,案件54,003,クラウドソリューション部,2026/8/11,15500000,5000000 102,顧客C,300010064,案件55,004,インフラ保守部,2026/8/12,2900000,800000 601,顧客G,300010065,案件56,001,営業一部,2026/8/12,4400000,1150000 703,顧客H,300010066,案件57,002,システム開発部,2026/8/13,21000000,7100000 413,顧客B,300010033,案件24(UIデザイン修正),002,システム開発部,2026/8/13,800000,550000 810,顧客I,300010067,案件58,005,DX推進部,2026/8/14,9100000,2800000 001,顧客A,300010068,案件59,003,クラウドソリューション部,2026/8/15,11800000,3900000 205,顧客D,300010069,案件60,004,インフラ保守部,2026/8/15,3700000,1000000 904,顧客J,300010070,案件61,001,営業一部,2026/8/16,5300000,1400000 309,顧客E,300010030,案件21(API連携開発),002,システム開発部,2026/8/17,2400000,1700000 512,顧客F,300010071,案件62,005,DX推進部,2026/8/17,18500000,6200000 102,顧客C,300010072,案件63,003,クラウドソリューション部,2026/8/18,7600000,2300000 601,顧客G,300010073,案件64,002,システム開発部,2026/8/18,12000000,3800000 703,顧客H,300010074,案件65,004,インフラ保守部,2026/8/19,4800000,1350000 413,顧客B,300010075,案件66,005,DX推進部,2026/8/20,28000000,9900000 810,顧客I,300010076,案件67,001,営業一部,2026/8/20,3200000,800000 001,顧客A,300010077,案件68,002,システム開発部,2026/8/21,14500000,4600000 205,顧客D,300010078,案件69,003,クラウドソリューション部,2026/8/21,8300000,2500000 904,顧客J,300010061,案件52(追加アカウント発行),002,システム開発部,2026/8/22,300000,220000 309,顧客E,300010079,案件70,004,インフラ保守部,2026/8/22,2600000,750000 512,顧客F,300010080,案件71,001,営業一部,2026/8/23,6700000,1800000 102,顧客C,300010081,案件72,005,DX推進部,2026/8/23,22500000,7900000 601,顧客G,300010082,案件73,003,クラウドソリューション部,2026/8/24,10000000,3100000 703,顧客H,300010083,案件74,002,システム開発部,2026/8/24,17000000,5400000 413,顧客B,300010084,案件75,004,インフラ保守部,2026/8/25,5100000,1500000 810,顧客I,300010085,案件76,005,DX推進部,2026/8/25,13500000,4400000 001,顧客A,300010086,案件77,001,営業一部,2026/8/26,2100000,500000 205,顧客D,300010087,案件78,002,システム開発部,2026/8/26,16000000,5100000 904,顧客J,300010088,案件79,003,クラウドソリューション部,2026/8/26,9400000,2900000 |