Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Streamlitを使ってデータカタログを作ってみた
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ayumu Yamaguchi
January 09, 2024
Technology
670
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 x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
180
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
770
Cortex_Searchを活用したメタデータ検索Chatbot開発.pdf
ayumu_yamaguchi
0
110
Streamlitの入門書を執筆した話
ayumu_yamaguchi
1
240
Streamlitで開発した自作データカタログの導入
ayumu_yamaguchi
4
1.1k
Streamlitのデータカタログが社内にもたらした変化
ayumu_yamaguchi
1
1.8k
StreamlitとTerraformでデータカタログを作った話
ayumu_yamaguchi
1
3k
Other Decks in Technology
See All in Technology
cccccc
moznion
0
1.7k
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
250
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
1
780
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
0
170
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
440
10x Speed With QA Agent Platform - How we scaled adoption from individual effort to organizational capability
lycorptech_jp
PRO
0
130
はじめてのWDM
miyukichi_ospf
1
110
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
180
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
430
Why is RC4 still being used?
tamaiyutaro
0
290
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
160
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
170
How to Talk to Developers About Accessibility
jct
2
280
Unsuck your backbone
ammeep
672
58k
The Language of Interfaces
destraynor
162
27k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
Practical Orchestrator
shlominoach
191
11k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Writing Fast Ruby
sferik
630
63k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
330
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. ご清聴ありがとうございました!