控制显隐指标

This commit is contained in:
wuaho 2021-11-01 11:43:50 +08:00
parent aec4ebf825
commit 362a1cb1d2
2 changed files with 29 additions and 24 deletions

View File

@ -148,7 +148,12 @@ async def event_model(
await analysis.init(data_where=current_user.data_where) await analysis.init(data_where=current_user.data_where)
sqls = await analysis.event_model_sql() sqls = await analysis.event_model_sql()
res = [] res = []
for item in sqls: is_hide = []
for idx, item in enumerate(sqls):
if item.get('is_show') == False:
is_hide.append(idx)
q = { q = {
'groups': [], 'groups': [],
'values': [], 'values': [],
@ -262,6 +267,7 @@ async def event_model(
item['values'] = np.array(item['values'])[sort_key].tolist() item['values'] = np.array(item['values'])[sort_key].tolist()
item['sum'] = np.array(item['sum'])[sort_key].tolist() item['sum'] = np.array(item['sum'])[sort_key].tolist()
item['avg'] = np.array(item['avg'])[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) return schemas.Msg(code=0, msg='ok', data=res)

View File

@ -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_view', metadata, *[sa.Column(column) for column in columns])
self.event_tbl = sa.Table('event', 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): async def handler_filts(self, *filters):
""" """
@ -244,7 +243,7 @@ class BehaviorAnalysis:
elif item['tableType'] == 'event': elif item['tableType'] == 'event':
where = event_filter where = event_filter
elif item['tableType'] == 'user_label': 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() await user_cluster_def.init()
sub_qry = user_cluster_def.to_sql_qry() sub_qry = user_cluster_def.to_sql_qry()
if comparator == 'in': if comparator == 'in':
@ -252,7 +251,6 @@ class BehaviorAnalysis:
else: else:
event_filter.append(sa.Column('#account_id').notin_(sub_qry)) event_filter.append(sa.Column('#account_id').notin_(sub_qry))
continue continue
else: else:
continue continue
@ -260,7 +258,6 @@ class BehaviorAnalysis:
tbl = getattr(self, f'{item["tableType"]}_tbl') tbl = getattr(self, f'{item["tableType"]}_tbl')
col = getattr(tbl.c, item['columnName']) col = getattr(tbl.c, item['columnName'])
ftv = item['ftv'] ftv = item['ftv']
if comparator == '==': if comparator == '==':
if len(ftv) > 1: if len(ftv) > 1:
@ -319,7 +316,7 @@ class BehaviorAnalysis:
who_visit = getattr(self.event_tbl.c, visit_name) who_visit = getattr(self.event_tbl.c, visit_name)
filters, _ = await self.handler_filts((self.events[0]['filts'], self.events[0].get('relation')), filters, _ = await self.handler_filts((self.events[0]['filts'], self.events[0].get('relation')),
self.ext_filters) self.ext_filters)
filters = filters or [1] filters = filters or [1]
selectd = [func.toStartOfDay(func.addHours(event_time_col, self.zone_time)).label('date'), selectd = [func.toStartOfDay(func.addHours(event_time_col, self.zone_time)).label('date'),
*self.groupby, *self.groupby,
@ -379,6 +376,7 @@ class BehaviorAnalysis:
for event in self.events: for event in self.events:
event_name_display = event.get('eventNameDisplay') event_name_display = event.get('eventNameDisplay')
is_show = event.get('is_show', True)
select_exprs = [] select_exprs = []
if self.time_particle != 'total': if self.time_particle != 'total':
@ -403,9 +401,9 @@ class BehaviorAnalysis:
event_name = custom['event_name'] event_name = custom['event_name']
where = [event_name_col.in_(event_name)] where = [event_name_col.in_(event_name)]
event_filter, _ = await self.handler_filts((event['filts'], event.get('relation')), event_filter, _ = await self.handler_filts((event['filts'], event.get('relation')),
(self.global_filters, self.global_relation), (self.global_filters, self.global_relation),
self.ext_filters self.ext_filters
) )
select_exprs.extend(self.groupby) select_exprs.extend(self.groupby)
qry = sa.select( qry = sa.select(
*select_exprs, *select_exprs,
@ -420,7 +418,8 @@ class BehaviorAnalysis:
'end_date': self.end_date[:10], 'end_date': self.end_date[:10],
'event_name': event.get('eventNameDisplay'), 'event_name': event.get('eventNameDisplay'),
'format': event.get('format') or 'float', 'format': event.get('format') or 'float',
'date_range': self.date_range 'date_range': self.date_range,
'is_show': is_show,
} }
) )
continue continue
@ -482,7 +481,7 @@ class BehaviorAnalysis:
'time_particle': self.time_particle, 'time_particle': self.time_particle,
'start_date': self.start_date[:10], 'start_date': self.start_date[:10],
'end_date': self.end_date[:10], 'end_date': self.end_date[:10],
'is_show': is_show,
}) })
return sqls return sqls
@ -512,7 +511,7 @@ ORDER BY level
cond_level = [] cond_level = []
for item in self.events: for item in self.events:
event_filter, _ = await self.handler_filts((item['filts'], item.get('relation', 'and')) event_filter, _ = await self.handler_filts((item['filts'], item.get('relation', 'and'))
, self.ext_filters) , self.ext_filters)
conds.append( conds.append(
and_(event_name_col == item['eventName'], *event_filter) and_(event_name_col == item['eventName'], *event_filter)
) )
@ -523,7 +522,7 @@ ORDER BY level
self.event_tbl) self.event_tbl)
g_event_filter, _ = await self.handler_filts((self.global_filters, self.global_relation) g_event_filter, _ = await self.handler_filts((self.global_filters, self.global_relation)
, self.ext_filters) , self.ext_filters)
where = [ where = [
func.addHours(event_time_col, self.zone_time) >= self.start_date, func.addHours(event_time_col, self.zone_time) >= self.start_date,
func.addHours(event_time_col, self.zone_time) <= self.end_date, func.addHours(event_time_col, self.zone_time) <= self.end_date,
@ -572,8 +571,8 @@ ORDER BY level
if event_name != '*': if event_name != '*':
where.append(event_name_col == event_name) where.append(event_name_col == event_name)
event_filter, user_filter = await self.handler_filts((event['filts'], event.get('relation', 'and')), event_filter, user_filter = await self.handler_filts((event['filts'], event.get('relation', 'and')),
(self.global_filters, self.global_relation) (self.global_filters, self.global_relation)
, self.ext_filters) , self.ext_filters)
if user_filter: if user_filter:
where.append(e_account_id_col.in_(sa.select(u_account_id_col).where(*user_filter))) where.append(e_account_id_col.in_(sa.select(u_account_id_col).where(*user_filter)))
where.extend(event_filter) where.extend(event_filter)
@ -583,9 +582,9 @@ ORDER BY level
if analysis in ['times', 'number_of_days', 'number_of_hours']: if analysis in ['times', 'number_of_days', 'number_of_hours']:
if self.time_particle == 'total': if self.time_particle == 'total':
qry = sa.select( *self.groupby, values_col) \ qry = sa.select(*self.groupby, values_col) \
.where(and_(*where)) \ .where(and_(*where)) \
.group_by( *self.groupby, e_account_id_col) .group_by(*self.groupby, e_account_id_col)
else: else:
qry = sa.select(event_date_col, *self.groupby, values_col) \ qry = sa.select(event_date_col, *self.groupby, values_col) \
.where(and_(*where)) \ .where(and_(*where)) \
@ -606,10 +605,10 @@ ORDER BY level
elif event.get('quota'): elif event.get('quota'):
event_attr_col = getattr(self.event_tbl.c, event['quota']) event_attr_col = getattr(self.event_tbl.c, event['quota'])
if self.time_particle == 'total': 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')) \ settings.CK_FUNC[analysis](event_attr_col).label('values')) \
.where(and_(*where)) \ .where(and_(*where)) \
.group_by( *self.groupby, e_account_id_col) .group_by(*self.groupby, e_account_id_col)
else: else:
qry = sa.select(event_date_col, e_account_id_col, qry = sa.select(event_date_col, e_account_id_col,
settings.CK_FUNC[analysis](event_attr_col).label('values')) \ 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') visit_name = self.events[0].get('event_attr_id')
where, _ = await self.handler_filts((self.events[0]['filts'], self.events[0].get('relation', 'and')), where, _ = await self.handler_filts((self.events[0]['filts'], self.events[0].get('relation', 'and')),
(self.global_filters, self.global_relation) (self.global_filters, self.global_relation)
, self.ext_filters) , self.ext_filters)
where_a = '1' where_a = '1'
if where: if where:
qry = sa.select().where(*where) qry = sa.select().where(*where)
@ -758,8 +757,8 @@ ORDER BY values desc"""
where_a = sql.split('WHERE ')[1] where_a = sql.split('WHERE ')[1]
where, _ = await self.handler_filts((self.events[1]['filts'], self.events[1].get('relation', 'and')), where, _ = await self.handler_filts((self.events[1]['filts'], self.events[1].get('relation', 'and')),
(self.global_filters, self.global_relation) (self.global_filters, self.global_relation)
, self.ext_filters) , self.ext_filters)
where_b = '1' where_b = '1'
if where: if where:
qry = sa.select().where(*where) qry = sa.select().where(*where)
@ -817,7 +816,7 @@ group by a.reg_date) log on reg.date=log.reg_date
'sql': sql, 'sql': sql,
'date_range': self.date_range, 'date_range': self.date_range,
'unit_num': self.unit_num, 'unit_num': self.unit_num,
'retention_n':retention_n, 'retention_n': retention_n,
'filter_item_type': filter_item_type, 'filter_item_type': filter_item_type,
'filter_item': filter_item, 'filter_item': filter_item,
'time_particle': self.time_particle, 'time_particle': self.time_particle,