优化付费设备留存sql
This commit is contained in:
parent
9d1c279e94
commit
32bebc800d
@ -1360,28 +1360,60 @@ ORDER BY values desc"""
|
||||
keep_str = ','.join(keep)
|
||||
cnt_str = ','.join(cnt)
|
||||
|
||||
if "pay" in event_name_a and "distinct_id" in visit_name:
|
||||
if "huixie" in self.game:
|
||||
check_event = "new_device"
|
||||
else:
|
||||
check_event = "create_account"
|
||||
sql = f"""
|
||||
with '{event_name_a}' as start_event,
|
||||
with '{event_name_a}' as start_event,
|
||||
{event_name_b} as retuen_visit,
|
||||
`{visit_name}` as visit,
|
||||
'{self.start_date}' as start_data,
|
||||
'{self.end_date}' as end_data,
|
||||
toDate(addHours(`#event_time`, {self.zone_time})) as date
|
||||
|
||||
select reg_date,
|
||||
select reg_date,
|
||||
cnt0 ,
|
||||
{keep_str}
|
||||
from(select p.reg_date, uniqExact(p.visit) as cnt0 from ( select date as reg_date,visit from {self.game}.event
|
||||
where `#event_name` = start_event and addHours(`#event_time`, {self.zone_time}) >= start_data and addHours(`#event_time`, {self.zone_time}) <= end_data group by reg_date,visit ) p
|
||||
inner join(SELECT date as reg_date,visit FROM {self.game}.event WHERE addHours({self.game}.event."#event_time", 8) >=start_data AND addHours({self.game}.event."#event_time", 8) <=end_data
|
||||
AND {self.game}.event."#event_name" = '{check_event}' AND {self.game}.event.is_new_device = '1')d on p.visit = d.visit and p.reg_date = d.reg_date group by reg_date ) reg
|
||||
left join
|
||||
(select a.reg_date,
|
||||
{cnt_str}
|
||||
from (select p.* from ( select date as reg_date, visit from {self.game}.event where `#event_name` = start_event and addHours(`#event_time`, {self.zone_time}) >= start_data and addHours(`#event_time`, {self.zone_time}) <= end_data
|
||||
group by reg_date, visit) p inner join (SELECT date as reg_date,visit FROM {self.game}.event WHERE addHours({self.game}.event."#event_time", 8) >=start_data AND addHours({self.game}.event."#event_time", 8) <=end_data
|
||||
AND {self.game}.event."#event_name" = '{check_event}' AND {self.game}.event.is_new_device = '1') d on p.visit = d.visit and p.reg_date = d.reg_date) a
|
||||
left join (select date as visit_date, visit from {self.game}.event where retuen_visit and addHours(`#event_time`, {self.zone_time}) >= start_data group by visit_date, visit) b on
|
||||
a.visit = b.visit
|
||||
group by a.reg_date) log on reg.reg_date=log.reg_date
|
||||
"""
|
||||
print(sql)
|
||||
else:
|
||||
sql = f"""
|
||||
with '{event_name_a}' as start_event,
|
||||
{event_name_b} as retuen_visit,
|
||||
`{visit_name}` as visit,
|
||||
'{self.start_date}' as start_data,
|
||||
'{self.end_date}' as end_data,
|
||||
toDate(addHours(`#event_time`, {self.zone_time})) as date
|
||||
|
||||
select reg_date,
|
||||
cnt0 ,
|
||||
{keep_str}
|
||||
|
||||
from(select date, uniqExact(visit) as cnt0 from {self.game}.event
|
||||
where `#event_name` = start_event and addHours(`#event_time`, {self.zone_time}) >= start_data and addHours(`#event_time`, {self.zone_time}) <= end_data and {where_a}
|
||||
group by date) reg left join
|
||||
(select a.reg_date,
|
||||
where `#event_name` = start_event and addHours(`#event_time`, {self.zone_time}) >= start_data and addHours(`#event_time`, {self.zone_time}) <= end_data and {where_a}
|
||||
group by date) reg left join
|
||||
(select a.reg_date,
|
||||
{cnt_str}
|
||||
from (select date as reg_date, visit from {self.game}.event where `#event_name` = start_event and addHours(`#event_time`, {self.zone_time}) >= start_data and addHours(`#event_time`, {self.zone_time}) <= end_data and {where_a} group by reg_date, visit) a
|
||||
from (select date as reg_date, visit from {self.game}.event where `#event_name` = start_event and addHours(`#event_time`, {self.zone_time}) >= start_data and addHours(`#event_time`, {self.zone_time}) <= end_data and {where_a} group by reg_date, visit) a
|
||||
left join (select date as visit_date, visit from {self.game}.event where retuen_visit and addHours(`#event_time`, {self.zone_time}) >= start_data group by visit_date, visit) b on
|
||||
a.visit = b.visit
|
||||
group by a.reg_date) log on reg.date=log.reg_date
|
||||
"""
|
||||
a.visit = b.visit
|
||||
group by a.reg_date) log on reg.date=log.reg_date
|
||||
"""
|
||||
print(sql)
|
||||
return {
|
||||
'sql': sql,
|
||||
|
Loading…
Reference in New Issue
Block a user