ltv账号筛选条件
This commit is contained in:
parent
74be7a6ed3
commit
39989a130f
@ -25,11 +25,12 @@ class XAnalysis:
|
||||
self.events = []
|
||||
|
||||
self.global_filters = []
|
||||
self.account_filters = []
|
||||
|
||||
def _get_global_filters(self):
|
||||
return self.event_view.get('filts') or []
|
||||
|
||||
async def init(self,*args, **kwargs):
|
||||
async def init(self, *args, **kwargs):
|
||||
if self.data_in.report_id:
|
||||
db = get_database()
|
||||
report = await crud.report.get(db, id=self.data_in.report_id)
|
||||
@ -54,11 +55,11 @@ class XAnalysis:
|
||||
self.global_filters = self._get_global_filters()
|
||||
# 用户自带过滤
|
||||
if 'data_where' in kwargs:
|
||||
self.global_filters.extend(kwargs['data_where'].get(self.game, []))
|
||||
self.account_filters = kwargs['data_where'].get(self.game, [])
|
||||
|
||||
def handler_filts(self):
|
||||
def handler_filts(self, filters):
|
||||
where = []
|
||||
for item in self.global_filters:
|
||||
for item in filters:
|
||||
|
||||
col = sa.Column(item['columnName'])
|
||||
|
||||
@ -121,20 +122,27 @@ class XAnalysis:
|
||||
sql = str(qry.compile(compile_kwargs={"literal_binds": True}))
|
||||
where_str = sql.split('WHERE ')[1]
|
||||
|
||||
where_order = self.handler_filts()
|
||||
where_order = self.handler_filts(self.global_filters)
|
||||
where_order_str = 1
|
||||
if where_order:
|
||||
qry = sa.select().where(*where_order)
|
||||
sql = str(qry.compile(compile_kwargs={"literal_binds": True}))
|
||||
where_order_str = sql.split('WHERE ')[1]
|
||||
|
||||
where_account = self.handler_filts(self.account_filters)
|
||||
where_account_str = 1
|
||||
if where_account:
|
||||
qry = sa.select().where(*where_account)
|
||||
sql = str(qry.compile(compile_kwargs={"literal_binds": True}))
|
||||
where_account_str = sql.split('WHERE ')[1]
|
||||
|
||||
sql = f"""SELECT toString(reg.date) as date,
|
||||
cnt1,
|
||||
{select_ltv_str}
|
||||
FROM (SELECT toDate(addHours(`#event_time`, `#zone_offset`)) as date, uniqExact(`{quota}`) cnt1
|
||||
FROM {self.game}.event
|
||||
where `#event_name` = 'create_account'
|
||||
AND {where_str}
|
||||
AND {where_str} AND {where_account_str}
|
||||
GROUP BY toDate(addHours(`#event_time`, `#zone_offset`))) as reg
|
||||
left join
|
||||
(select a.date,
|
||||
@ -142,16 +150,16 @@ class XAnalysis:
|
||||
from (SELECT toDate(addHours(`#event_time`, `#zone_offset`)) as date, `{quota}`
|
||||
FROM {self.game}.event
|
||||
where `#event_name` = 'create_account'
|
||||
and {where_str}) as a
|
||||
AND {where_str} AND {where_account_str} ) as a
|
||||
left join (select `{quota}`, unitPrice/100 as money, toDate(addHours(`#event_time`, `#zone_offset`)) as date
|
||||
from {self.game}.event
|
||||
where `#event_name` = 'pay' and {where_order_str}) b
|
||||
where `#event_name` = 'pay' and {where_order_str} AND {where_account_str}) b
|
||||
on a.`{quota}` = b.`{quota}`
|
||||
group by a.date) log on reg.date = log.date
|
||||
order by date
|
||||
"""
|
||||
print(sql)
|
||||
return {'sql': sql,'quota':quota,
|
||||
return {'sql': sql, 'quota': quota,
|
||||
'start_date': self.event_view['startTime'][:10],
|
||||
'end_date': self.event_view['endTime'][:10],
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user