Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Streamlitを使ってデータカタログを作ってみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ayumu Yamaguchi
January 09, 2024
Technology
710
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Streamlitを使ってデータカタログを作ってみた
Ayumu Yamaguchi
January 09, 2024
More Decks by Ayumu Yamaguchi
See All by Ayumu Yamaguchi
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
390
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
360
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
230
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
970
Cortex_Searchを活用したメタデータ検索Chatbot開発.pdf
ayumu_yamaguchi
0
130
Streamlitの入門書を執筆した話
ayumu_yamaguchi
1
270
Streamlitで開発した自作データカタログの導入
ayumu_yamaguchi
4
1.2k
Streamlitのデータカタログが社内にもたらした変化
ayumu_yamaguchi
1
1.9k
StreamlitとTerraformでデータカタログを作った話
ayumu_yamaguchi
1
3.1k
Other Decks in Technology
See All in Technology
公共分野での生成AI活用
toru_kubota
1
320
会社説明資料_最新版
demaecan
0
32k
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
640
2026 Apache Flink Community Checkpoint
rmetzger
0
210
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
180
MCPでAIが自分で調べに行く
cdataj
0
140
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
260
現場を動かすAIエージェント#2_製造業現場でのAI活用から見た、ハマる罠と実践知
kintotechdev
2
210
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
190
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
120
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.1k
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
Visualization
eitanlees
153
17k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Odyssey Design
rkendrick25
PRO
3
940
Chasing Engaging Ingredients in Design
codingconduct
0
390
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Typedesign – Prime Four
hannesfritz
42
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Skip the Path - Find Your Career Trail
mkilby
1
290
Transcript
© GENDA Inc. Streamlitを使ってデータカタログを作ってみた Data Engineer 山口 歩夢
© GENDA Inc. 自己紹介 名前 :山口歩夢 ブログ:https://qiita.com/Ayumu-y ▪所属 株式会社GENDA データエンジニア ▪経歴
営業職→データエンジニア ▪趣味 • 筋トレ • 音楽
© GENDA Inc. 本日のお話 Streamlitでデータカタログを作成したことついてお話します!
© GENDA Inc. 作成までの経緯
© GENDA Inc. 作成までの経緯 ▪抱えていた悩み • 社内にしっかり管理されたデータカタログが存在しなかった • Excelファイルや口伝で情報が伝わっており、 どれが最新のものか分かりにくく、メンテナンスが行き届いていなかった
• カタログ型のソフトウェアは高額なため、こちらも参入障壁が高かった • SQLを実行する時に、どのテーブルを使うべきか理解するのに苦労した
© GENDA Inc. 作成までの経緯 StreamlitがイケてそうだからStreamlitで作ろう! ということになりました。
© GENDA Inc. 作成までの経緯 ▪Streamlitで作るメリット • 無料! • DWHにSnowflakeを使用しているため SnowflakeのCOMMENTやコード内に設定を書くことになるので
最新バージョンがどこにあるかわかりやすい • WEB開発の知識が無くても、 UIを簡単に作成することができる • Streamlit in Snowflakeにて、簡単にアプリをデプロイすることもできる • 今後、Streamlitで何か作るための知見も貯まる
© GENDA Inc. データカタログの詳細
© GENDA Inc. システム設計 ▪設計内容 • SnowflakeのCOMMENTにカラムやスキーマの概要を挿入 • 社内VPNからのみ接続を許可してセキュリティ対策 •
ALBを使用してhttps化 • EC2に作成したアプリをcloneしてデーモン化して $ streamlit run を実行
© GENDA Inc. システム設計 Streamlit in Snowflakeで動かせるようにしていきたい... (インフラがシンプルになる)
© GENDA Inc. システム設計 ▪Streamlit in Snowflakeで動かすにあたって感じている課題 • データカタログを使用する人全員に Snowflakeアカウントを作成する必要がある
(一つのパスワードを使い回すのはセキュリティ的に良く無い ) • 一度起動するとWHが15分間稼働し続けるので、 多くの人が起動し続けると、タイミングによってはずっと WHが動き続けてしまう(お金がかかる)
© GENDA Inc. システム設計 課題が解決できれば、将来的にEC2ではなく Streamlit in Snowflakeにて動かせるようにしていきたい!
© GENDA Inc. データカタログのUI ▪確認できる内容 • 指定したスキーマのテーブル一覧 • テーブルのカラム情報 •
テーブル内のデータプレビュー
© GENDA Inc. データカタログの機能① こちらでデータベース, スキーマ, テーブルを指定すると ▪ドロップダウンでDatabase・Schema・Tableを選択
© GENDA Inc. データカタログの機能① 指定したスキーマのテーブル一覧がこちらに表示されます ▪ドロップダウンでDatabase・Schema・Tableを選択
© GENDA Inc. データカタログの機能① 16 ▪ドロップダウンでDatabase・Schema・Tableを選択 下部にここで指定したテーブルのカラムの情報やプレビューも表示されます
© GENDA Inc. データカタログの機能① ▪実装方法 手順1. ドロップダウンで選択した Database・Schema・Tableを変数に入れる select_database =
st.selectbox('データベースを選択してください ', [Database一覧(リスト型)]) select_schema = st.selectbox('スキーマを選択してください ', [Schema一覧(リスト型)]) select_table = st.selectbox('テーブルを選択してください ', [Table一覧(リスト型)]) 手順2. Pythonコード内でクエリを実行して結果を変数に入れる show_tables = run_query(f"SHOW TABLES IN {select_database}.{select_schema}") show_views = run_query(f"SHOW VIEWS IN {select_database}.{select_schema}") 手順3.データフレーム化して UNIONし、column_name・commentのみを抽出 show_tables_df = pd.DataFrame(show_tables) show_views_df = pd.DataFrame(show_views) tables_df = show_tables_df.rename(columns={1: 'column_name', 5: 'comment'}) views_df = show_views_df.rename(columns={1: 'column_name', 6: 'comment'})
© GENDA Inc. データカタログの機能② ▪テーブルの概要を検索 赤枠の部分に検索したい文字列を入力すると
© GENDA Inc. データカタログの機能② 指定したスキーマ内のテーブルの概要に検索をかけられます ▪テーブルの概要を検索
© GENDA Inc. データカタログの機能② table_details_search = st.text_input('テーブル一覧の概要を検索 ') # サイドバーにてinputboxに文字列を入れた場合、その文字列が入っているデータをデータフレームから抽出できるように実装
if table_details_search is None: st.dataframe( tables_views_df, column_config={ "column_name": st.column_config.TextColumn("テーブル名"), "comment": st.column_config.TextColumn("概要", width="large") }, hide_index=True, ) else: tables_views_df = tables_views_df[tables_views_df['comment'].str.contains(table_details_search, case=False)] st.dataframe( tables_views_df, column_config={ "column_name": st.column_config.TextColumn("テーブル名"), "comment": st.column_config.TextColumn("概要", width="large") }, hide_index=True, ) ▪実装方法ご紹介 手順1. テキストボックス入れた文字を変数に入れて保持する 手順2. 変数に入れた文字がテーブルの概要に含まれるデータをデータフレームとして出力するように実装
© GENDA Inc. 機能としては以上です! 現在は、まだ仮導入中ですが、評判は良好です。
© GENDA Inc. 今後の展望
© GENDA Inc. 今後の展望 • まだ一つのプロダクトでのみの仮導入のため、 今後は様々なプロダクトの情報をデータカタログに格納して、 広い範囲でデータ活用に貢献していきたい • データカタログの運用・管理を効率的にできるようにしていきたい
◦ データの最新情報の管理方法 ◦ データカタログの更新方法 など • Streamlit in Snowflakeで動かせるようにしたい!
© GENDA Inc. サンプルコード
© GENDA Inc. サンプルコード GitHubにてサンプルコードを公開しました! https://github.com/genda-tech/sample-data-catalog
© GENDA Inc. 採用情報 【株式会社GENDA 採用情報】 募集要項はこちら 【GENDA Creators Blog】
技術記事などはこちら GENDAでは一緒に働く仲間を募集しています! 採用情報やブログ記事などは、下記の 2次元コードからご確認ください! 【GENDA note】 社員インタビューはこちら
© GENDA Inc. ご清聴ありがとうございました!