单事件属性漏斗概率
This commit is contained in:
parent
b75e84b3cf
commit
240cbccb52
@ -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']
|
||||||
|
Loading…
Reference in New Issue
Block a user