1
This commit is contained in:
parent
8544d876ae
commit
2348f67621
@ -15,6 +15,7 @@ from db import get_database
|
|||||||
from api import deps
|
from api import deps
|
||||||
from db.ckdb import CKDrive, get_ck_db
|
from db.ckdb import CKDrive, get_ck_db
|
||||||
from db.redisdb import get_redis_pool, RedisDrive
|
from db.redisdb import get_redis_pool, RedisDrive
|
||||||
|
|
||||||
# from utils import casbin_enforcer
|
# from utils import casbin_enforcer
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
@ -95,9 +96,6 @@ async def data_authority(request: Request,
|
|||||||
return schemas.Msg(code=0, msg='ok', data=data)
|
return schemas.Msg(code=0, msg='ok', data=data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/my_event")
|
@router.get("/my_event")
|
||||||
async def my_event(request: Request,
|
async def my_event(request: Request,
|
||||||
game: str,
|
game: str,
|
||||||
@ -114,12 +112,11 @@ async def my_event(request: Request,
|
|||||||
|
|
||||||
my_data_auth = await ck.distinct(game, 'event_view', '#event_name')
|
my_data_auth = await ck.distinct(game, 'event_view', '#event_name')
|
||||||
|
|
||||||
#
|
#
|
||||||
# else:
|
# else:
|
||||||
# # 设置了数据权限
|
# # 设置了数据权限
|
||||||
# my_data_auth = await crud.data_auth.get(db, ObjectId(data_auth_id))
|
# my_data_auth = await crud.data_auth.get(db, ObjectId(data_auth_id))
|
||||||
# my_data_auth = my_data_auth['data']
|
# my_data_auth = my_data_auth['data']
|
||||||
|
|
||||||
|
|
||||||
event_show_name = await crud.event_mana.get_all_show_name(db, game)
|
event_show_name = await crud.event_mana.get_all_show_name(db, game)
|
||||||
event_list.append({'id': 'event', 'title': '全部事件', 'category': []})
|
event_list.append({'id': 'event', 'title': '全部事件', 'category': []})
|
||||||
@ -259,26 +256,20 @@ async def load_filter_props(request: Request,
|
|||||||
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
||||||
) -> schemas.Msg:
|
) -> schemas.Msg:
|
||||||
"""事件属性 过滤条件"""
|
"""事件属性 过滤条件"""
|
||||||
key = f'{game}_event_{data_in.event_name}'
|
|
||||||
event_prop_set = await rdb.smembers(key)
|
|
||||||
event_prop_list = sorted(event_prop_set)
|
|
||||||
|
|
||||||
key = f'{game}_user'
|
event_columns = await ck.get_columns(game, 'event')
|
||||||
user_prop_dict = await rdb.get(key)
|
user_columns = await ck.get_columns(game, 'user')
|
||||||
user_prop_dict = json.loads(user_prop_dict)
|
|
||||||
user_prop_list = sorted(user_prop_dict.keys())
|
|
||||||
|
|
||||||
all_filed = await rdb.get(f'{game}_event')
|
|
||||||
all_filed = json.loads(all_filed)
|
|
||||||
|
|
||||||
data_attr = await crud.data_attr.find_many(db, {'game': game, 'cat': 'event'})
|
data_attr = await crud.data_attr.find_many(db, {'game': game, 'cat': 'event'})
|
||||||
data_attr = {item['name']: item for item in data_attr}
|
data_attr = {item['name']: item for item in data_attr}
|
||||||
event_props = []
|
event_props = []
|
||||||
for item in event_prop_list:
|
for item in event_columns:
|
||||||
data_type = settings.CK_TYPE_DICT.get(all_filed.get(item))
|
data_type = settings.CK_TYPE_DICT.get(item['type'])
|
||||||
title = data_attr.get(item, {}).get('show_name') or item
|
title = data_attr.get(item['name'], {}).get('show_name') or item['name']
|
||||||
event_prop = {
|
event_prop = {
|
||||||
'id': item,
|
'id': item['name'],
|
||||||
'data_type': data_type,
|
'data_type': data_type,
|
||||||
'title': title,
|
'title': title,
|
||||||
'category': settings.CK_FILTER.get(data_type) or []
|
'category': settings.CK_FILTER.get(data_type) or []
|
||||||
@ -288,11 +279,11 @@ async def load_filter_props(request: Request,
|
|||||||
data_attr = await crud.data_attr.find_many(db, {'game': game, 'cat': 'user'})
|
data_attr = await crud.data_attr.find_many(db, {'game': game, 'cat': 'user'})
|
||||||
data_attr = {item['name']: item for item in data_attr}
|
data_attr = {item['name']: item for item in data_attr}
|
||||||
user_props = []
|
user_props = []
|
||||||
for item in user_prop_list:
|
for item in user_columns:
|
||||||
data_type = settings.CK_TYPE_DICT.get(user_prop_dict.get(item))
|
data_type = settings.CK_TYPE_DICT.get(item['type'])
|
||||||
title = data_attr.get(item, {}).get('show_name') or item
|
title = data_attr.get(item['name'], {}).get('show_name') or item['name']
|
||||||
user_prop = {
|
user_prop = {
|
||||||
'id': item,
|
'id': item['name'],
|
||||||
'data_type': data_type,
|
'data_type': data_type,
|
||||||
'title': title,
|
'title': title,
|
||||||
'category': settings.CK_FILTER.get(data_type) or []
|
'category': settings.CK_FILTER.get(data_type) or []
|
||||||
|
@ -272,7 +272,7 @@ class Settings(BaseSettings):
|
|||||||
'PT15M': lambda col, zone: func.toStartOfFifteenMinutes(func.addHours(col, zone)).label('date'),
|
'PT15M': lambda col, zone: func.toStartOfFifteenMinutes(func.addHours(col, zone)).label('date'),
|
||||||
'PT1H': lambda col, zone: func.toStartOfHour(func.addHours(col, zone)).label('date'),
|
'PT1H': lambda col, zone: func.toStartOfHour(func.addHours(col, zone)).label('date'),
|
||||||
'P1D': lambda col, zone: func.toStartOfDay(func.addHours(col, zone)).label('date'),
|
'P1D': lambda col, zone: func.toStartOfDay(func.addHours(col, zone)).label('date'),
|
||||||
'P1W': lambda col, zone: func.toMonday(func.addHours(col, zone)).label('date'),
|
'P1W': lambda col, zone: func.toStartOfWeek(func.addHours(col, zone)).label('date'),
|
||||||
'P1M': lambda col, zone: func.toStartOfMonth(func.addHours(col, zone)).label('date'),
|
'P1M': lambda col, zone: func.toStartOfMonth(func.addHours(col, zone)).label('date'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +67,11 @@ class CKDrive:
|
|||||||
df = await self.query_dataframe(sql)
|
df = await self.query_dataframe(sql)
|
||||||
return df.set_index('event_name').T.to_dict()
|
return df.set_index('event_name').T.to_dict()
|
||||||
|
|
||||||
|
async def get_columns(self, db: str, tb: str):
|
||||||
|
sql = f"select name,type from system.columns where database='{db}' and table='{tb}'"
|
||||||
|
df = await self.query_dataframe(sql)
|
||||||
|
return df.T.to_dict().values()
|
||||||
|
|
||||||
|
|
||||||
ckdb = CKDrive()
|
ckdb = CKDrive()
|
||||||
|
|
||||||
|
@ -106,7 +106,13 @@ class BehaviorAnalysis:
|
|||||||
report = await crud.report.get(db, id=self.data_in.report_id)
|
report = await crud.report.get(db, id=self.data_in.report_id)
|
||||||
self.event_view = report['query']['eventView']
|
self.event_view = report['query']['eventView']
|
||||||
self.events = report['query']['events']
|
self.events = report['query']['events']
|
||||||
e_days, s_days = self.event_view['recentDay'].split('-')
|
try:
|
||||||
|
e_days = self.event_view['e_days']
|
||||||
|
s_days = self.event_view['s_days']
|
||||||
|
except:
|
||||||
|
# 兼容以前的
|
||||||
|
e_days, s_days = self.event_view['recentDay'].split('-')
|
||||||
|
|
||||||
self.event_view['endTime'] = arrow.get().shift(days=-int(e_days) + 1).strftime('%Y-%m-%d 23:59:59')
|
self.event_view['endTime'] = arrow.get().shift(days=-int(e_days) + 1).strftime('%Y-%m-%d 23:59:59')
|
||||||
self.event_view['startTime'] = arrow.get().shift(days=-int(s_days)).strftime('%Y-%m-%d 00:00:00')
|
self.event_view['startTime'] = arrow.get().shift(days=-int(s_days)).strftime('%Y-%m-%d 00:00:00')
|
||||||
|
|
||||||
@ -141,6 +147,9 @@ class BehaviorAnalysis:
|
|||||||
end_date: str = self.event_view.get('endTime')
|
end_date: str = self.event_view.get('endTime')
|
||||||
date_range = pd.date_range(start_date, end_date, freq=settings.PROPHET_TIME_GRAIN_MAP[self.time_particle],
|
date_range = pd.date_range(start_date, end_date, freq=settings.PROPHET_TIME_GRAIN_MAP[self.time_particle],
|
||||||
tz='UTC').tolist()
|
tz='UTC').tolist()
|
||||||
|
if self.time_particle in ('P1M','P1W'):
|
||||||
|
date_range = [item.date() for item in date_range]
|
||||||
|
|
||||||
|
|
||||||
return start_date, end_date, date_range
|
return start_date, end_date, date_range
|
||||||
|
|
||||||
@ -291,7 +300,7 @@ class BehaviorAnalysis:
|
|||||||
event_name = event['event_name']
|
event_name = event['event_name']
|
||||||
|
|
||||||
select_exprs += self.groupby
|
select_exprs += self.groupby
|
||||||
if event_name!='*':
|
if event_name != '*':
|
||||||
base_where.append(event_name_col == event_name)
|
base_where.append(event_name_col == event_name)
|
||||||
|
|
||||||
analysis = event['analysis']
|
analysis = event['analysis']
|
||||||
|
Loading…
Reference in New Issue
Block a user