56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
from collections import defaultdict
|
|
|
|
import pandas as pd
|
|
import numpy as np
|
|
from fastapi import APIRouter, Depends, Request
|
|
from motor.motor_asyncio import AsyncIOMotorDatabase
|
|
|
|
import crud, schemas
|
|
from common import *
|
|
|
|
from api import deps
|
|
from db import get_database
|
|
from db.ckdb import get_ck_db, CKDrive
|
|
from db.redisdb import get_redis_pool, RedisDrive
|
|
|
|
from models.behavior_analysis import BehaviorAnalysis
|
|
from models.user_analysis import UserAnalysis
|
|
from models.x_analysis import XAnalysis
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/ltv_model_sql")
|
|
async def ltv_model_sql(
|
|
request: Request,
|
|
game: str,
|
|
analysis: XAnalysis = Depends(XAnalysis),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
""" ltv模型sql """
|
|
await analysis.init()
|
|
sql = analysis.ltv_model_sql()
|
|
return schemas.Msg(code=0, msg='ok', data=sql)
|
|
|
|
|
|
@router.post("/ltv_model")
|
|
async def ltv_model_sql(
|
|
request: Request,
|
|
game: str,
|
|
analysis: XAnalysis = Depends(XAnalysis),
|
|
ckdb: CKDrive = Depends(get_ck_db),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
""" ltv模型sql """
|
|
await analysis.init()
|
|
sql = analysis.ltv_model_sql()
|
|
df = await ckdb.query_dataframe(sql)
|
|
df.fillna(0, inplace=True)
|
|
df.rename(columns={'date': '注册日期', 'cnt1': '角色数'}, inplace=True)
|
|
data = {
|
|
'title': df.columns.tolist(),
|
|
'rows': df.values.tolist()
|
|
}
|
|
|
|
return schemas.Msg(code=0, msg='ok', data=data)
|