diff --git a/api/api_v1/endpoints/query.py b/api/api_v1/endpoints/query.py index 794d38d..40273d8 100644 --- a/api/api_v1/endpoints/query.py +++ b/api/api_v1/endpoints/query.py @@ -148,7 +148,12 @@ async def event_model( await analysis.init(data_where=current_user.data_where) sqls = await analysis.event_model_sql() res = [] - for item in sqls: + is_hide = [] + + for idx, item in enumerate(sqls): + if item.get('is_show') == False: + is_hide.append(idx) + q = { 'groups': [], 'values': [], @@ -262,6 +267,7 @@ async def event_model( item['values'] = np.array(item['values'])[sort_key].tolist() item['sum'] = np.array(item['sum'])[sort_key].tolist() item['avg'] = np.array(item['avg'])[sort_key].tolist() + res = [item for idx, item in enumerate(res) if idx not in is_hide] return schemas.Msg(code=0, msg='ok', data=res) diff --git a/models/behavior_analysis.py b/models/behavior_analysis.py index 646f820..a1f4edc 100644 --- a/models/behavior_analysis.py +++ b/models/behavior_analysis.py @@ -220,7 +220,6 @@ class BehaviorAnalysis: # self.event_tbl = sa.Table('event_view', metadata, *[sa.Column(column) for column in columns]) self.event_tbl = sa.Table('event', metadata, *[sa.Column(column) for column in columns]) - async def handler_filts(self, *filters): """ @@ -244,7 +243,7 @@ class BehaviorAnalysis: elif item['tableType'] == 'event': where = event_filter elif item['tableType'] == 'user_label': - user_cluster_def=UserClusterDef(self.game,item['columnName'],self.data_where) + user_cluster_def = UserClusterDef(self.game, item['columnName'], self.data_where) await user_cluster_def.init() sub_qry = user_cluster_def.to_sql_qry() if comparator == 'in': @@ -252,7 +251,6 @@ class BehaviorAnalysis: else: event_filter.append(sa.Column('#account_id').notin_(sub_qry)) - continue else: continue @@ -260,7 +258,6 @@ class BehaviorAnalysis: tbl = getattr(self, f'{item["tableType"]}_tbl') col = getattr(tbl.c, item['columnName']) - ftv = item['ftv'] if comparator == '==': if len(ftv) > 1: @@ -319,7 +316,7 @@ class BehaviorAnalysis: who_visit = getattr(self.event_tbl.c, visit_name) filters, _ = await self.handler_filts((self.events[0]['filts'], self.events[0].get('relation')), - self.ext_filters) + self.ext_filters) filters = filters or [1] selectd = [func.toStartOfDay(func.addHours(event_time_col, self.zone_time)).label('date'), *self.groupby, @@ -379,6 +376,7 @@ class BehaviorAnalysis: for event in self.events: event_name_display = event.get('eventNameDisplay') + is_show = event.get('is_show', True) select_exprs = [] if self.time_particle != 'total': @@ -403,9 +401,9 @@ class BehaviorAnalysis: event_name = custom['event_name'] where = [event_name_col.in_(event_name)] event_filter, _ = await self.handler_filts((event['filts'], event.get('relation')), - (self.global_filters, self.global_relation), - self.ext_filters - ) + (self.global_filters, self.global_relation), + self.ext_filters + ) select_exprs.extend(self.groupby) qry = sa.select( *select_exprs, @@ -420,7 +418,8 @@ class BehaviorAnalysis: 'end_date': self.end_date[:10], 'event_name': event.get('eventNameDisplay'), 'format': event.get('format') or 'float', - 'date_range': self.date_range + 'date_range': self.date_range, + 'is_show': is_show, } ) continue @@ -482,7 +481,7 @@ class BehaviorAnalysis: 'time_particle': self.time_particle, 'start_date': self.start_date[:10], 'end_date': self.end_date[:10], - + 'is_show': is_show, }) return sqls @@ -512,7 +511,7 @@ ORDER BY level cond_level = [] for item in self.events: event_filter, _ = await self.handler_filts((item['filts'], item.get('relation', 'and')) - , self.ext_filters) + , self.ext_filters) conds.append( and_(event_name_col == item['eventName'], *event_filter) ) @@ -523,7 +522,7 @@ ORDER BY level self.event_tbl) g_event_filter, _ = await self.handler_filts((self.global_filters, self.global_relation) - , self.ext_filters) + , self.ext_filters) where = [ func.addHours(event_time_col, self.zone_time) >= self.start_date, func.addHours(event_time_col, self.zone_time) <= self.end_date, @@ -572,8 +571,8 @@ ORDER BY level if event_name != '*': where.append(event_name_col == event_name) event_filter, user_filter = await self.handler_filts((event['filts'], event.get('relation', 'and')), - (self.global_filters, self.global_relation) - , self.ext_filters) + (self.global_filters, self.global_relation) + , self.ext_filters) if user_filter: where.append(e_account_id_col.in_(sa.select(u_account_id_col).where(*user_filter))) where.extend(event_filter) @@ -583,9 +582,9 @@ ORDER BY level if analysis in ['times', 'number_of_days', 'number_of_hours']: if self.time_particle == 'total': - qry = sa.select( *self.groupby, values_col) \ + qry = sa.select(*self.groupby, values_col) \ .where(and_(*where)) \ - .group_by( *self.groupby, e_account_id_col) + .group_by(*self.groupby, e_account_id_col) else: qry = sa.select(event_date_col, *self.groupby, values_col) \ .where(and_(*where)) \ @@ -606,10 +605,10 @@ ORDER BY level elif event.get('quota'): event_attr_col = getattr(self.event_tbl.c, event['quota']) if self.time_particle == 'total': - qry = sa.select( e_account_id_col, + qry = sa.select(e_account_id_col, settings.CK_FUNC[analysis](event_attr_col).label('values')) \ .where(and_(*where)) \ - .group_by( *self.groupby, e_account_id_col) + .group_by(*self.groupby, e_account_id_col) else: qry = sa.select(event_date_col, e_account_id_col, settings.CK_FUNC[analysis](event_attr_col).label('values')) \ @@ -749,8 +748,8 @@ ORDER BY values desc""" visit_name = self.events[0].get('event_attr_id') where, _ = await self.handler_filts((self.events[0]['filts'], self.events[0].get('relation', 'and')), - (self.global_filters, self.global_relation) - , self.ext_filters) + (self.global_filters, self.global_relation) + , self.ext_filters) where_a = '1' if where: qry = sa.select().where(*where) @@ -758,8 +757,8 @@ ORDER BY values desc""" where_a = sql.split('WHERE ')[1] where, _ = await self.handler_filts((self.events[1]['filts'], self.events[1].get('relation', 'and')), - (self.global_filters, self.global_relation) - , self.ext_filters) + (self.global_filters, self.global_relation) + , self.ext_filters) where_b = '1' if where: qry = sa.select().where(*where) @@ -817,7 +816,7 @@ group by a.reg_date) log on reg.date=log.reg_date 'sql': sql, 'date_range': self.date_range, 'unit_num': self.unit_num, - 'retention_n':retention_n, + 'retention_n': retention_n, 'filter_item_type': filter_item_type, 'filter_item': filter_item, 'time_particle': self.time_particle,