From 5e8a7c3a365eca266bb839c496e11a8fad07da4e Mon Sep 17 00:00:00 2001 From: MauricioGarciaS <47052044+MauricioGarciaS@users.noreply.github.com> Date: Mon, 16 Jan 2023 11:31:47 +0100 Subject: [PATCH] Fixed some issues --- ee/api/chalicelib/core/sessions_insights.py | 88 +++++++++++++-------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/ee/api/chalicelib/core/sessions_insights.py b/ee/api/chalicelib/core/sessions_insights.py index fff082308..ed55ebc2e 100644 --- a/ee/api/chalicelib/core/sessions_insights.py +++ b/ee/api/chalicelib/core/sessions_insights.py @@ -134,25 +134,32 @@ def query_requests_by_period(project_id, start_time, end_time, conn=None): source_idx = columns.index('source') duration_idx = columns.index('avg_duration') - success_idx = columns.index('success_rate') - delta_duration = dict() - delta_success = dict() + # success_idx = columns.index('success_rate') + # delta_duration = dict() + # delta_success = dict() + new_duration_values = dict() + duration_values = dict() for n in common_names: d1_tmp = _table_where(table_hh1, source_idx, n) d2_tmp = _table_where(table_hh2, source_idx, n) - _duration1 = _mean_table_index(d2_tmp, duration_idx) - if _duration1 == 0: + old_duration = _mean_table_index(d2_tmp, duration_idx) + new_duration = _mean_table_index(d1_tmp, duration_idx) + if old_duration == 0: continue - delta_duration[n] = (_mean_table_index(d1_tmp, duration_idx) - _duration1) / _duration1 - delta_success[n] = _mean_table_index(d1_tmp, success_idx) - _mean_table_index(d2_tmp, success_idx) + duration_values[n] = new_duration, old_duration, (new_duration-old_duration)/old_duration + # delta_duration[n] = (_mean_table_index(d1_tmp, duration_idx) - _duration1) / _duration1 + # delta_success[n] = _mean_table_index(d1_tmp, success_idx) - _mean_table_index(d2_tmp, success_idx) + for n in new_hosts: + d1_tmp = _table_where(table_hh1, source_idx, n) + new_duration_values[n] = _mean_table_index(d1_tmp, duration_idx) - #names_idx = columns.index('names') + #names_idx = columns.index('names') total = _sum_table_index(table_hh1, duration_idx) d1_tmp = _sort_table_index(table_hh1, duration_idx, reverse=True) _tmp = _table_slice(d1_tmp, duration_idx) _tmp2 = _table_slice(d1_tmp, source_idx) - increase = sorted(delta_duration.items(), key=lambda k: k[1], reverse=True) + increase = sorted(duration_values.items(), key=lambda k: k[1][-1], reverse=True) ratio = sorted(zip(_tmp2, _tmp), key=lambda k: k[1], reverse=True) # names_ = set([k[0] for k in increase[:3]+ratio[:3]]+new_hosts[:3]) names_ = set([k[0] for k in increase[:3] + ratio[:3]]) # we took out new hosts since they dont give much info @@ -164,12 +171,15 @@ def query_requests_by_period(project_id, start_time, end_time, conn=None): data_ = {'category': 'network', 'name': n, 'value': None, 'oldValue': None, 'ratio': None, 'change': None, 'isNew': True} for n_, v in ratio: if n == n_: - data_['value'] = v + if n in new_hosts: + data_['value'] = new_duration_values[n] data_['ratio'] = v/total break for n_, v in increase: if n == n_: - data_['change'] = v + data_['value'] = v[0] + data_['oldValue'] = v[1] + data_['change'] = v[2] data_['isNew'] = False break results.append(data_) @@ -206,7 +216,6 @@ def query_most_errors_by_period(project_id, start_time, end_time, conn=None): table_hh1, table_hh2, columns, this_period_errors, last_period_errors = __get_two_values(res, time_index='hh', name_index='names') - print(f'res {res}') del res new_errors = [x for x in this_period_errors if x not in last_period_errors] @@ -216,16 +225,21 @@ def query_most_errors_by_period(project_id, start_time, end_time, conn=None): names_idx = columns.index('names') percentage_errors = dict() total = _sum_table_index(table_hh1, sessions_idx) - error_increase = dict() + # error_increase = dict() + new_error_values = dict() + error_values = dict() for n in this_period_errors: percentage_errors[n] = _sum_table_index(_table_where(table_hh1, names_idx, n), sessions_idx) + new_error_values[n] = _sum_table_index(_table_where(table_hh1, names_idx, n), names_idx) for n in common_errors: - errors_ = _sum_table_index(_table_where(table_hh2, names_idx, n), names_idx) - if errors_ == 0: + old_errors = _sum_table_index(_table_where(table_hh2, names_idx, n), names_idx) + if old_errors == 0: continue - error_increase[n] = (_sum_table_index(_table_where(table_hh1, names_idx, n), names_idx) - errors_) / errors_ + new_errors = _sum_table_index(_table_where(table_hh1, names_idx, n), names_idx) + # error_increase[n] = (new_errors - old_errors) / old_errors + error_values[n] = new_errors, old_errors, (new_errors - old_errors) / old_errors ratio = sorted(percentage_errors.items(), key=lambda k: k[1], reverse=True) - increase = sorted(error_increase.items(), key=lambda k: k[1], reverse=True) + increase = sorted(error_values.items(), key=lambda k: k[1][-1], reverse=True) names_ = set([k[0] for k in increase[:3] + ratio[:3]] + new_errors[:3]) results = list() @@ -235,12 +249,15 @@ def query_most_errors_by_period(project_id, start_time, end_time, conn=None): data_ = {'category': 'errors', 'name': n, 'value': None, 'oldValue': None, 'ratio': None, 'change': None, 'isNew': True} for n_, v in ratio: if n == n_: - data_['value'] = v + if n in new_errors: + data_['value'] = new_error_values[n] data_['ratio'] = v/total break for n_, v in increase: if n == n_: - data_['change'] = v + data_['value'] = v[0] + data_['oldValue'] = v[1] + data_['change'] = v[2] data_['isNew'] = False break results.append(data_) @@ -321,15 +338,9 @@ def query_click_rage_by_period(project_id, start_time, end_time, conn=None): if conn is None: with ch_client.ClickHouseClient() as conn: query = conn.format(query=query, params=params) - print("--------------------") - print(query) - print("--------------------") res = conn.execute(query=query) else: query = conn.format(query=query, params=params) - print("--------------------") - print(query) - print("--------------------") res = conn.execute(query=query) table_hh1, table_hh2, columns, this_period_rage, last_period_rage = __get_two_values(res, time_index='hh', @@ -338,24 +349,32 @@ def query_click_rage_by_period(project_id, start_time, end_time, conn=None): new_names = [x for x in this_period_rage if x not in last_period_rage] common_names = [x for x in this_period_rage if x not in new_names] - print(f'[res...] {new_names}\n') - print(f'[common...] {common_names}\n') sessions_idx = columns.index('sessions') names_idx = columns.index('sources') - raged_increment = dict() + # raged_increment = dict() + raged_values = dict() + new_raged_values = dict() # TODO verify line (188) _tmp = table_hh2[:, sessions_idx][n].sum() for n in common_names: if n is None: continue - _tmp = _sum_table_index(_table_where(table_hh2, names_idx, n), sessions_idx) - raged_increment[n] = (_sum_table_index(_table_where(table_hh1, names_idx, n), sessions_idx) - _tmp) / _tmp + _oldvalue = _sum_table_index(_table_where(table_hh2, names_idx, n), sessions_idx) + _newvalue = _sum_table_index(_table_where(table_hh1, names_idx, n), sessions_idx) + # raged_increment[n] = (_newvalue - _oldvalue) / _oldvalue + raged_values[n] = _newvalue, _oldvalue, (_newvalue - _oldvalue) / _oldvalue + + for n in new_names: + if n is None: + continue + _newvalue = _sum_table_index(_table_where(table_hh1, names_idx, n), sessions_idx) + new_raged_values[n] = _newvalue total = _sum_table_index(table_hh1, sessions_idx) names, ratio = _table_slice(table_hh1, names_idx), _table_slice(table_hh1, sessions_idx) ratio = sorted(zip(names, ratio), key=lambda k: k[1], reverse=True) - increase = sorted(raged_increment.items(), key=lambda k: k[1], reverse=True) + increase = sorted(raged_values.items(), key=lambda k: k[1][-1], reverse=True) names_ = set([k[0] for k in increase[:3] + ratio[:3]] + new_names[:3]) results = list() @@ -365,12 +384,15 @@ def query_click_rage_by_period(project_id, start_time, end_time, conn=None): data_ = {'category': 'rage', 'name': n, 'value': None, 'oldValue': None, 'ratio': None, 'change': None, 'isNew': True} for n_, v in ratio: if n == n_: - data_['value'] = v + if n in new_names: + data_['value'] = new_raged_values[n] data_['ratio'] = v/total break for n_, v in increase: if n == n_: - data_['change'] = v + data_['value'] = v[0] + data_['oldValue'] = v[1] + data_['change'] = v[2] data_['isNew'] = False break results.append(data_)