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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ayumu Yamaguchi
January 09, 2024
Technology
690
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
290
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
210
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
890
Cortex_Searchを活用したメタデータ検索Chatbot開発.pdf
ayumu_yamaguchi
0
120
Streamlitの入門書を執筆した話
ayumu_yamaguchi
1
250
Streamlitで開発した自作データカタログの導入
ayumu_yamaguchi
4
1.2k
Streamlitのデータカタログが社内にもたらした変化
ayumu_yamaguchi
1
1.8k
StreamlitとTerraformでデータカタログを作った話
ayumu_yamaguchi
1
3.1k
Other Decks in Technology
See All in Technology
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.1k
AI de Idea
kawaguti
PRO
2
120
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
9
4k
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
360
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
750
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
110
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
27
16k
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
170
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
2
490
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Code Review Best Practice
trishagee
74
20k
Music & Morning Musume
bryan
48
7.4k
Code Reviewing Like a Champion
maltzj
528
40k
New Earth Scene 8
popppiees
4
2.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Scaling GitHub
holman
464
140k
Balancing Empowerment & Direction
lara
6
1.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
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. ご清聴ありがとうございました!