Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Streamlitを使ってデータカタログを作ってみた

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 Streamlitを使ってデータカタログを作ってみた

Avatar for Ayumu Yamaguchi

Ayumu Yamaguchi

January 09, 2024
Tweet

More Decks by Ayumu Yamaguchi

Other Decks in Technology

Transcript

  1. © GENDA Inc. 作成までの経緯 ▪Streamlitで作るメリット • 無料! • DWHにSnowflakeを使用しているため SnowflakeのCOMMENTやコード内に設定を書くことになるので

    最新バージョンがどこにあるかわかりやすい • WEB開発の知識が無くても、 UIを簡単に作成することができる • Streamlit in Snowflakeにて、簡単にアプリをデプロイすることもできる • 今後、Streamlitで何か作るための知見も貯まる
  2. © GENDA Inc. システム設計 ▪Streamlit in Snowflakeで動かすにあたって感じている課題 • データカタログを使用する人全員に Snowflakeアカウントを作成する必要がある

    (一つのパスワードを使い回すのはセキュリティ的に良く無い ) • 一度起動するとWHが15分間稼働し続けるので、 多くの人が起動し続けると、タイミングによってはずっと WHが動き続けてしまう(お金がかかる)
  3. © 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'})
  4. © 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. 変数に入れた文字がテーブルの概要に含まれるデータをデータフレームとして出力するように実装
  5. © GENDA Inc. 採用情報 【株式会社GENDA 採用情報】 募集要項はこちら 【GENDA Creators Blog】

    技術記事などはこちら GENDAでは一緒に働く仲間を募集しています! 採用情報やブログ記事などは、下記の 2次元コードからご確認ください! 【GENDA note】 社員インタビューはこちら