单事件属性漏斗概率

This commit is contained in:
Àî×ÚÕñ 2022-08-18 22:34:51 +08:00
parent b75e84b3cf
commit 240cbccb52

View File

@ -1061,7 +1061,8 @@ async def funnel_model(
date_range = res['date_range'] date_range = res['date_range']
cond_level = res['cond_level'] cond_level = res['cond_level']
groupby = res['groupby'] groupby = res['groupby']
switch_test = analysis.event_view.switchTest
if switch_test:
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty: if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None) return schemas.Msg(code=-9, msg='无数据', data=None)
@ -1190,6 +1191,56 @@ async def funnel_model(
'date_data': date_data, 'date_data': date_data,
'title': title, 'title': title,
'level': cond_level, 'level': cond_level,
'switch_test': switch_test,
'start_date': res['start_date'],
'end_date': res['end_date'],
'time_particle': res['time_particle']
}
return schemas.Msg(code=0, msg='ok', data=resp)
else:
try:
res = await analysis.guide_model_sql()
except Exception as e:
return schemas.Msg(code=-9, msg='报表配置参数异常')
sql = res['sql']
df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
group_str = res['analysis']
# 转int
df[group_str] = df[group_str].astype(int)
step_list = [str(i) for i in sorted(df[group_str].unique())]
dict_k = {}
for k, nedf in df.groupby("date"):
ste_k = {}
for kk, ste_df in nedf.groupby(group_str):
value_list = ste_df.iloc[:, -1].to_list()
ste_k[str(kk)] = int(sum(value_list))
for ste in step_list:
if ste not in list(ste_k.keys()):
ste_k[ste] = 0
dict_k[str(k)] = ste_k
p_data = {}
data = {}
for dict_key, dict_data in dict_k.items():
dict_data1 = deepcopy(dict_data)
dict_k1 = {int(k): v for k, v in dict_data1.items()}
sorted(dict_k1.keys())
data_values = list(dict_k1.values())
p_values = [round(i / sum(data_values), 2) or 0 for i in data_values]
p_values.insert(0, dict_key)
data_values.insert(0, dict_key)
data[dict_key] = data_values
p_data[dict_key] = p_values
step_list.insert(0, '日期')
resp = {'list': data,
'date_data': p_data,
'title': '1',
'level': step_list,
'switch_test': switch_test,
'start_date': res['start_date'], 'start_date': res['start_date'],
'end_date': res['end_date'], 'end_date': res['end_date'],
'time_particle': res['time_particle'] 'time_particle': res['time_particle']