diff --git a/sage_datamart/init.py b/sage_datamart/init.py index 4323394..2486b0d 100644 --- a/sage_datamart/init.py +++ b/sage_datamart/init.py @@ -57,7 +57,15 @@ async def api_model_perf(sor, params_kw=None): try: model = params_kw.get('model') if params_kw else None stat_date = params_kw.get('date') if params_kw else None - sql = "SELECT * FROM dm_model_perf_daily WHERE 1=1" + sql = """SELECT model, catelogid, providerid, + SUM(total_calls) as total_calls, + SUM(success_calls) as success_calls, + SUM(fail_calls) as fail_calls, + CASE WHEN SUM(total_calls)>0 THEN ROUND(SUM(success_calls)*100.0/SUM(total_calls),1) ELSE 0 END as success_rate, + CASE WHEN SUM(total_calls)>0 THEN ROUND(SUM(total_calls*avg_ttft_ms)/SUM(total_calls),1) ELSE NULL END as avg_ttft_ms, + CASE WHEN SUM(total_calls)>0 THEN ROUND(SUM(total_calls*avg_ttot_ms)/SUM(total_calls),1) ELSE NULL END as avg_ttot_ms, + COALESCE(SUM(total_amount_cny),0) as total_amount_cny + FROM dm_model_perf_daily WHERE 1=1""" ns = {} if stat_date: sql += " AND stat_date=${stat_date}$" @@ -65,6 +73,7 @@ async def api_model_perf(sor, params_kw=None): if model: sql += " AND model=${model}$" ns['model'] = model + sql += " GROUP BY model, catelogid, providerid" sql += " ORDER BY total_calls DESC LIMIT 50" rows = await sor.sqlExe(sql, ns) return [dict(r) for r in rows]