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
700
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
360
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
340
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
220
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
940
Cortex_Searchを活用したメタデータ検索Chatbot開発.pdf
ayumu_yamaguchi
0
120
Streamlitの入門書を執筆した話
ayumu_yamaguchi
1
260
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
SharedWorkerを使ったキャッシュでネイティブアプリに負けないユーザー体験を目指す
kakehashi
PRO
1
110
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
150
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
210
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
320
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
210
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
310
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
430
Browser Spec: Testing Hotwire with Ruby
takahashim
1
140
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
510
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
190
Featured
See All Featured
Docker and Python
trallard
47
4.2k
Building Adaptive Systems
keathley
44
3.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Being A Developer After 40
akosma
92
590k
A designer walks into a library…
pauljervisheath
211
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Tell your own story through comics
letsgokoyo
1
1.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Paper Plane
katiecoart
PRO
5
54k
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. ご清聴ありがとうございました!