From f8c48df43bb3c403815b9c88c05ccf52b0c5124a Mon Sep 17 00:00:00 2001 From: wuaho Date: Fri, 24 Sep 2021 12:11:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=B8=83=E5=88=86=E6=9E=90=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/query.py | 21 +++++++++++++++++++++ models/behavior_analysis.py | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/api/api_v1/endpoints/query.py b/api/api_v1/endpoints/query.py index 60c2622..84b6b7b 100644 --- a/api/api_v1/endpoints/query.py +++ b/api/api_v1/endpoints/query.py @@ -587,6 +587,27 @@ async def scatter_model_sql( data = analysis.scatter_model_sql() return schemas.Msg(code=0, msg='ok', data=[data]) +@router.post("/scatter_model_export") +async def retention_model_export(request: Request, + game: str, + ckdb: CKDrive = Depends(get_ck_db), + analysis: BehaviorAnalysis = Depends(BehaviorAnalysis), + current_user: schemas.UserDB = Depends(deps.get_current_user) + ): + """ 分布分析 数据导出""" + await analysis.init(data_where=current_user.data_where) + data = analysis.scatter_model_sql() + file_name = quote(f'分布分析.xlsx') + mime = mimetypes.guess_type(file_name)[0] + + sql = data['sql'] + df = await ckdb.query_dataframe(sql) + df_to_stream = DfToStream((df, '分布分析')) + with df_to_stream as d: + export = d.to_stream() + return StreamingResponse(export, media_type=mime, headers={'Content-Disposition': f'filename="{file_name}"'}) + + @router.post("/scatter_model") async def scatter_model( diff --git a/models/behavior_analysis.py b/models/behavior_analysis.py index edac96e..daf7368 100644 --- a/models/behavior_analysis.py +++ b/models/behavior_analysis.py @@ -593,7 +593,7 @@ ORDER BY level event = self.events[0] event_name = event['eventName'] analysis = event['analysis'] - e_account_id_col = getattr(self.event_tbl.c, '#account_id') + e_account_id_col = getattr(self.event_tbl.c, '#account_id').label('uid') u_account_id_col = getattr(self.user_tbl.c, '#account_id') event_name_col = getattr(self.event_tbl.c, '#event_name') event_time_col = getattr(self.event_tbl.c, '#event_time').label('date') @@ -641,7 +641,7 @@ ORDER BY level elif event.get('quota'): event_attr_col = getattr(self.event_tbl.c, event['quota']) - qry = sa.select(event_date_col, settings.CK_FUNC[analysis](event_attr_col).label('values')) \ + qry = sa.select(event_date_col,e_account_id_col, settings.CK_FUNC[analysis](event_attr_col).label('values')) \ .where(and_(*where)) \ .group_by(event_date_col, *self.groupby, e_account_id_col) sql = str(qry.compile(compile_kwargs={"literal_binds": True}))