# -*- coding: utf-8 -*- """ @author: yq @time: 2024/10/31 @desc: sql直接统计指标直出 """ import pandas as pd from commom import get_logger, f_fill_placeholder from data import DataLoaderBase from entitys import MetricFucEntity from .metric_base import MetricBase logger = get_logger() class MetricBySqlGeneral(MetricBase): def __init__(self, sql: str, *args, **kwargs): super().__init__(*args, **kwargs) self._sql = sql def _fill_placeholder(self, sql: str): return sql def _load_data(self, data_loader: DataLoaderBase, *args, **kwargs) -> pd.DataFrame: sql = f_fill_placeholder(self._sql) logger.info(f"sql: {sql}") data = data_loader.get_data(sql) logger.info(f"sql execute result: {data.head(5)}") return data def calculate(self, *args, **kwargs) -> MetricFucEntity: return MetricFucEntity(table=self._load_data(*args, **kwargs))