|
@@ -0,0 +1,35 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+@author: yq
|
|
|
+@time: 2024/10/31
|
|
|
+@desc: sql直接统计指标直出
|
|
|
+"""
|
|
|
+import pandas as pd
|
|
|
+
|
|
|
+from data_loader.data_loader_base import DataLoaderBase
|
|
|
+from metric.metric_base import MetricBase
|
|
|
+
|
|
|
+
|
|
|
+class MetricBySqlGeneral(MetricBase):
|
|
|
+
|
|
|
+ def __init__(self, metric_name: str, metric_code: str):
|
|
|
+ super().__init__(metric_name, metric_code)
|
|
|
+
|
|
|
+ def validate_data(self):
|
|
|
+ pass
|
|
|
+
|
|
|
+ def load_data(self, data_loader: DataLoaderBase, sql: str) -> pd.DataFrame:
|
|
|
+ data = data_loader.get_data(sql)
|
|
|
+ return data
|
|
|
+
|
|
|
+ def calculate(self, data_loader: DataLoaderBase, sql: str) -> pd.DataFrame:
|
|
|
+ return self.load_data(data_loader, sql)
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ from data_loader.data_loader_mysql import DataLoaderMysql
|
|
|
+
|
|
|
+ data_loader = DataLoaderMysql(host="101.126.81.2", port=18001, user="root", passwd="Cqrcb2024", db="test")
|
|
|
+ metric_clzz = MetricBySqlGeneral(metric_name="auc", metric_code="auc")
|
|
|
+ metric = metric_clzz.calculate(data_loader, "select * from test.t1")
|
|
|
+ print(metric.head(5))
|