dwh_auditor.analyzer.recurring のソースコード

"""定常実行クエリの分析ロジック.

注意: このモジュールは google.cloud.bigquery を一切インポートしてはなりません。
"""

from typing import Any

from dwh_auditor.config import AppConfig
from dwh_auditor.models.result import RecurringCostInsight

_BYTES_PER_TB: float = 1024**4


[ドキュメント] def analyze_recurring_cost(raw_stats: list[dict[str, Any]], config: AppConfig) -> list[RecurringCostInsight]: """定常実行されているクエリのメタデータを RecurringCostInsight のリストにマップ・計算する. Args: raw_stats: Extractor から抽出した定常クエリの集計辞書 config: しきい値やコスト単価設定 Returns: RecurringCostInsight のリスト """ tb_usd = config.pricing.tb_scan_usd insights: list[RecurringCostInsight] = [] for stat in raw_stats: billed_bytes = stat.get("total_bytes_billed", 0) scanned_tb = billed_bytes / _BYTES_PER_TB estimated_usd = scanned_tb * tb_usd insights.append( RecurringCostInsight( query_hash=stat["query_hash"], query_sample=stat["query_sample"], execution_count=stat["execution_count"], total_estimated_usd=estimated_usd, total_scanned_tb=scanned_tb, last_executed_at=stat["last_executed_at"], ) ) return insights