设备付费率

This commit is contained in:
haoqiyue 2023-02-28 10:09:36 +08:00
parent e50780e273
commit d8a5735cea

View File

@ -70,7 +70,7 @@ class CustomEvent:
# 总次数 # 总次数
if comp == 'total_count': if comp == 'total_count':
return func.sum(getattr(func, 'if')(getattr(self.tbl.c, '#event_name') == event_name, 1, 0)) return func.sum(getattr(func, 'if')(getattr(self.tbl.c, '#event_name') == event_name, 1, 0))
elif comp == 'touch_user_count': elif comp == 'touch_user_count' or comp == 'touch_device_count':
return func.uniqCombined(getattr(func, 'if')(getattr(self.tbl.c, '#event_name') == event_name, return func.uniqCombined(getattr(func, 'if')(getattr(self.tbl.c, '#event_name') == event_name,
getattr(self.tbl.c, '#account_id'), None)) getattr(self.tbl.c, '#account_id'), None))
elif comp == 'touch_user_avg': elif comp == 'touch_user_avg':
@ -684,7 +684,7 @@ class BehaviorAnalysis:
# 聚合方式 # 聚合方式
if analysis == 'total_count': if analysis == 'total_count':
selectd = select_exprs + [func.count().label('values')] selectd = select_exprs + [func.count().label('values')]
elif analysis == 'touch_user_count': elif analysis == 'touch_user_count' or analysis == 'touch_device_count':
selectd = select_exprs + [func.count(sa.distinct(e_account_id_col)).label('values')] selectd = select_exprs + [func.count(sa.distinct(e_account_id_col)).label('values')]
elif analysis == 'touch_user_avg': elif analysis == 'touch_user_avg':
selectd = select_exprs + [ selectd = select_exprs + [
@ -701,7 +701,7 @@ class BehaviorAnalysis:
if analysis == 'total_count': if analysis == 'total_count':
selectd = select_exprs + [ selectd = select_exprs + [
settings.ARITHMETIC[operator](func.count(), operator_val).label('values')] settings.ARITHMETIC[operator](func.count(), operator_val).label('values')]
elif analysis == 'touch_user_count': elif analysis == 'touch_user_count' or analysis == 'touch_device_count':
selectd = select_exprs + [ selectd = select_exprs + [
settings.ARITHMETIC[operator](func.count(sa.distinct(e_account_id_col)), settings.ARITHMETIC[operator](func.count(sa.distinct(e_account_id_col)),
operator_val).label('values')] operator_val).label('values')]
@ -774,6 +774,19 @@ FROM {game}.event
WHERE addHours({game}.event."#event_time", 8) >= '{stat_date}' AND addHours({game}.event."#event_time", 8) <= '{end_date}' 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 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
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
"""
# 单独把新增付费人数(以设备为维度)拿出来 # 单独把新增付费人数(以设备为维度)拿出来
if event.get('event_attr') == '触发用户数' and ['is_new_device', 'orderid'] == [i['columnName'] for i in if event.get('event_attr') == '触发用户数' and ['is_new_device', 'orderid'] == [i['columnName'] for i in
event.get('filts')]: event.get('filts')]: