特殊处理的sql加条件

This commit is contained in:
haoqiyue 2023-03-01 18:22:16 +08:00
parent d8a5735cea
commit d02b25e5c0

View File

@ -763,6 +763,20 @@ class BehaviorAnalysis:
stat_date = self.start_date
end_date = self.end_date
game = self.game
if len(event_filter) > 0:
where_fil = str(and_(*event_filter, *base_where).compile(compile_kwargs={"literal_binds": True}))
sql = f"""
select aa.date as date,round((a/b)*100,2) as values from
(select toDate(addHours({game}.event."#event_time", 8)) AS date,uniqCombined(if({game}.event."#event_name" = 'pay', {game}.event."#account_id", NULL)) as a from {game}.event
WHERE {where_fil}
AND {game}.event."#event_name"='pay' and orderid NOT LIKE '%GM%' GROUP BY toDate(addHours({game}.event."#event_time", 8))) as aa
LEFT join
(SELECT toDate(addHours({game}.event."#event_time", 8)) AS date, round(uniqExact({game}.event."#account_id"), 2) AS b
FROM {game}.event
WHERE {where_fil}
GROUP BY toDate(addHours({game}.event."#event_time", 8))) as bb on aa.date = bb.date ORDER by date
"""
else:
sql = f"""
select aa.date as date,round((a/b)*100,2) as values from
(select toDate(addHours({game}.event."#event_time", 8)) AS date,uniqCombined(if({game}.event."#event_name" = 'pay', {game}.event."#account_id", NULL)) as a from {game}.event
@ -770,20 +784,29 @@ class BehaviorAnalysis:
AND {game}.event."#event_name"='pay' and orderid NOT LIKE '%GM%' GROUP BY toDate(addHours({game}.event."#event_time", 8))) as aa
LEFT join
(SELECT toDate(addHours({game}.event."#event_time", 8)) AS date, round(uniqExact({game}.event."#account_id"), 2) AS b
FROM {game}.event
WHERE addHours({game}.event."#event_time", 8) >= '{stat_date}' AND addHours({game}.event."#event_time", 8) <= '{end_date}'
GROUP BY toDate(addHours({game}.event."#event_time", 8))) as bb on aa.date = bb.date ORDER by date
FROM {game}.event
WHERE addHours({game}.event."#event_time", 8) >= '{stat_date}' AND addHours({game}.event."#event_time", 8) <= '{end_date}'
GROUP BY toDate(addHours({game}.event."#event_time", 8))) as bb on aa.date = bb.date ORDER by date
"""
# 单独设备付费率的拿出来
if event.get('customEvent') == 'pay.touch_device_count/login.touch_device_count':
stat_date = self.start_date
end_date = self.end_date
game = self.game
if len(event_filter) > 0:
where_fil = str(and_(*event_filter, *base_where).compile(compile_kwargs={"literal_binds": True}))
sql = f"""
select toDate(addHours({game}.event."#event_time", 8)) AS date,round((uniqCombined(if({game}.event."#event_name" = 'pay',{game}.event.`#distinct_id`,NULL)) / uniqCombined(if({game}.event."#event_name" = 'login',{game}.event."#distinct_id",NULL))) * 100,2) AS values
FROM {game}.event
WHERE addHours({game}.event."#event_time", 8) >= '{stat_date}'
AND addHours({game}.event."#event_time", 8) <= '{end_date}'
WHERE {where_fil}
AND {game}.event."#event_name" IN ('pay', 'login')
GROUP BY toDate(addHours({game}.event."#event_time", 8)) ORDER BY date LIMIT 100000
"""
else:
sql = f"""
select toDate(addHours({game}.event."#event_time", 8)) AS date,round((uniqCombined(if({game}.event."#event_name" = 'pay',{game}.event.`#distinct_id`,NULL)) / uniqCombined(if({game}.event."#event_name" = 'login',{game}.event."#distinct_id",NULL))) * 100,2) AS values
FROM {game}.event
WHERE addHours({game}.event."#event_time", 8) >= '{stat_date}' AND addHours({game}.event."#event_time", 8) <= '{end_date}'
AND {game}.event."#event_name" IN ('pay', 'login')
GROUP BY toDate(addHours({game}.event."#event_time", 8)) ORDER BY date LIMIT 100000
"""