1.优化路径分析,展示对应的中文显示,按固定格式进行排序
This commit is contained in:
parent
e83c49caf3
commit
69fa383c44
@ -1401,16 +1401,35 @@ async def trace_model_sql(
|
|||||||
if df.empty:
|
if df.empty:
|
||||||
return schemas.Msg(code=-9, msg='无数据', data=None)
|
return schemas.Msg(code=-9, msg='无数据', data=None)
|
||||||
chain_dict = defaultdict(dict)
|
chain_dict = defaultdict(dict)
|
||||||
|
event_num_dict={}
|
||||||
nodes = {'流失'}
|
nodes = {'流失'}
|
||||||
|
name_list=analysis.events['event_namesdes']
|
||||||
|
name_dict={}
|
||||||
|
for i in name_list:
|
||||||
|
name_dict[i['event_name']]=i['event_desc']
|
||||||
for event_names, count in zip(df['event_chain'], df['values']):
|
for event_names, count in zip(df['event_chain'], df['values']):
|
||||||
|
fmt_keys=[]
|
||||||
chain_len = len(event_names)
|
chain_len = len(event_names)
|
||||||
for i, event_name in enumerate(event_names):
|
for i, event_name in enumerate(event_names):
|
||||||
if i >= 10:
|
if i >= 10:
|
||||||
continue
|
continue
|
||||||
next_event = event_names[i + 1] if i < chain_len - 1 else '流失'
|
next_event = event_names[i + 1] if i < chain_len - 1 else '流失'
|
||||||
key = (f'{event_name}{i}', f'{next_event}{i + 1}')
|
#按对应的中文名显示
|
||||||
|
event_namess=name_dict.get(event_name,event_name)
|
||||||
|
next_eventss=name_dict.get(next_event,next_event)
|
||||||
|
key = (f'{event_namess}-{i}', f'{next_eventss}-{i + 1}')
|
||||||
|
#key = (f'{event_name}', f'{next_event}')
|
||||||
nodes.update(key)
|
nodes.update(key)
|
||||||
chain_dict[i][key] = chain_dict[i].setdefault(key, 0) + count
|
chain_dict[i][key] = chain_dict[i].setdefault(key, 0) + count
|
||||||
|
keys = list(key)
|
||||||
|
for true_key in keys:
|
||||||
|
if true_key in fmt_keys:
|
||||||
|
continue
|
||||||
|
if true_key in event_num_dict:
|
||||||
|
event_num_dict[true_key] += count
|
||||||
|
else:
|
||||||
|
event_num_dict[true_key] = count
|
||||||
|
fmt_keys.append(true_key)
|
||||||
|
|
||||||
links = []
|
links = []
|
||||||
for _, items in chain_dict.items():
|
for _, items in chain_dict.items():
|
||||||
@ -1420,15 +1439,30 @@ async def trace_model_sql(
|
|||||||
"target": keys[1],
|
"target": keys[1],
|
||||||
"value": val
|
"value": val
|
||||||
})
|
})
|
||||||
# nodes = set()
|
node=[ item for item in nodes]
|
||||||
# for item in links:
|
node.sort()
|
||||||
# nodes.update((
|
#按固定的首尾排序
|
||||||
# item['source'],
|
first = []
|
||||||
# item['target'])
|
trail = []
|
||||||
# )
|
nodes = []
|
||||||
|
for i in node:
|
||||||
|
if analysis.events['source_event']['eventDesc'] in i:
|
||||||
|
first.append(i)
|
||||||
|
elif '流失' in i:
|
||||||
|
trail.append(i)
|
||||||
|
else:
|
||||||
|
nodes.append(i)
|
||||||
|
first.sort(reverse=True)
|
||||||
|
for i in first:
|
||||||
|
nodes.insert(0, i)
|
||||||
|
for i in trail:
|
||||||
|
nodes.append(i)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
|
#'nodes': [{'name': item} for item in nodes],
|
||||||
'nodes': [{'name': item} for item in nodes],
|
'nodes': [{'name': item} for item in nodes],
|
||||||
'links': links,
|
'links': links,
|
||||||
|
#'event_num':event_num_dict,
|
||||||
'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