Skip to content

refactor: カテゴリーマスターの取得をBQクエリからローカルCSV読み取りに変更 #41

Description

@kawawan

概要

カテゴリー補完ページ(1_カテゴリ補完.py)の fetch_categories() 関数が BigQuery の category_master テーブルをクエリしているが、このテーブルは dbt seed で管理されており、ローカルの analytics/seeds/category_master.csv と内容が一致している。
BigQuery を叩かずにローカルCSVを直接読み取る実装に変更し、不要なBQコストと遅延を削減する。

現状

analytics/webui/pages/1_カテゴリ補完.pyfetch_categories():

@st.cache_data(ttl=300)
def fetch_categories():
    sql = f"""
    SELECT category_name_small
    FROM `{categoryMst}`
    ORDER BY countif desc
    """
    return [r["category_name_small"] for r in bq.query(sql).result()]

改善案

  • analytics/seeds/category_master.csv を Streamlit アプリから直接 pandas.read_csv() で読み取る
  • BQクライアントの初期化・クエリが不要になる(カテゴリー取得の目的のみでBQクライアントを使っている場合は削除可能)
  • @st.cache_data はそのまま活用してファイル再読み取りを抑制する
  • dbt seed で CSV が更新されたらアプリ再デプロイ(または cache_data の TTL)で反映される

メリット

  • BQクエリコストの削減
  • ページ初回ロードの高速化
  • BQ接続失敗時の影響範囲を縮小

対象ファイル

  • analytics/webui/pages/1_カテゴリ補完.py
  • analytics/deploy/streamlit/pages/1_カテゴリ補完.py(sync後)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions