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