metric_by_sql_general.py 1014 B

1234567891011121314151617181920212223242526272829303132333435
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: yq
  4. @time: 2024/10/31
  5. @desc: sql直接统计指标直出
  6. """
  7. import pandas as pd
  8. from loader import DataLoaderBase
  9. from metric.metric_base import MetricBase
  10. class MetricBySqlGeneral(MetricBase):
  11. def __init__(self, metric_name: str, metric_code: str):
  12. super().__init__(metric_name, metric_code)
  13. def validate_data(self):
  14. pass
  15. def load_data(self, data_loader: DataLoaderBase, sql: str) -> pd.DataFrame:
  16. data = data_loader.get_data(sql)
  17. return data
  18. def calculate(self, data_loader: DataLoaderBase, sql: str) -> pd.DataFrame:
  19. return self.load_data(data_loader, sql)
  20. if __name__ == "__main__":
  21. from loader import DataLoaderMysql
  22. data_loader = DataLoaderMysql(host="101.126.81.2", port=18001, user="root", passwd="Cqrcb2024", db="test")
  23. metric_clzz = MetricBySqlGeneral(metric_name="auc", metric_code="auc")
  24. metric = metric_clzz.calculate(data_loader, "select * from test.t1")
  25. print(metric.head(5))