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
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
380
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
350
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
230
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
960
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
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
130
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
yama3133
0
140
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
140
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
5
650
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
210
AIエージェント時代、Kaggleにどう取り組むか
takanao
2
470
なぜAI時代に技術記事を書くのか?どう書くのか? 〜bunの場合〜
kworkdev
PRO
0
4.6k
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
110
Consistency for mere mortals - A gentle guide to consistency
ufried
0
120
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
750
20261031_IoTLT_vol140_kitazaki_v1.pdf
kitazaki
0
150
AI AgentによるEmbedded SREの取り組み
tgidgd
1
320
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
730
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.6k
How to make the Groovebox
asonas
2
2.5k
Believing is Seeing
oripsolob
1
260
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Test your architecture with Archunit
thirion
2
2.5k
Building Applications with DynamoDB
mza
96
7.3k
How STYLIGHT went responsive
nonsquared
100
6.3k
Leo the Paperboy
mayatellez
10
2.4k
Design in an AI World
tapps
1
380
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. ご清聴ありがとうございました!