|
@@ -1,25 +1,150 @@
|
|
|
from model.DateUtils import DateUtils
|
|
|
-from model.DataBaseUtils import MysqlUtils
|
|
|
+from model.DataBaseUtils import MysqlUtils, CkUtils
|
|
|
|
|
|
db = MysqlUtils()
|
|
|
du = DateUtils()
|
|
|
+ck = CkUtils()
|
|
|
|
|
|
|
|
|
def insert_data():
|
|
|
bt_sql = '''
|
|
|
- select b.pitcher,b.channel ,DATE_FORMAT(a.`date`, '%Y-%m-%d'),sum(cost) as cost,sum(view_count) as view_count ,
|
|
|
+ select b.pitcher,b.channel ,DATE_FORMAT(a.`date`, '%Y-%m-%d'),
|
|
|
+ round(sum(cost)/100,2) as cost,sum(view_count) as view_count ,
|
|
|
sum(valid_click_count) as click_count from daily_tt a
|
|
|
left join bytedance_pitcher_change b
|
|
|
on a.account_id =b.advertiser_id
|
|
|
group by b.pitcher ,a.`date` ,b.channel
|
|
|
'''
|
|
|
byte_list = db.quchen_text.get_data_list(bt_sql)
|
|
|
- for _ in byte_list:
|
|
|
- print(_)
|
|
|
isql = "insert into bytedance_info_tmp values (%s,%s,%s,%s,%s,%s)"
|
|
|
db.dm.execute("truncate table bytedance_info_tmp")
|
|
|
db.dm.executeMany(isql, byte_list)
|
|
|
|
|
|
|
|
|
+def dw_daily_bytedance_cost(ymd):
|
|
|
+ dt_sql = f'''
|
|
|
+ select b.pitcher,b.channel ,a.`date` ,round(sum(cost)/100,2) as cost,sum(view_count) as view_count ,
|
|
|
+ sum(valid_click_count) as click_count ,c.stage as stage,d.book as book, e.current_platform as platform
|
|
|
+ from daily_tt a
|
|
|
+ left join bytedance_pitcher_change b on a.account_id =b.advertiser_id
|
|
|
+ left join stage_change c on b.channel =c.channel
|
|
|
+ left join book_change d on b.channel =d.name
|
|
|
+ left join platform_change e on b.channel = e.name
|
|
|
+ where a.`date`='{ymd}'
|
|
|
+ group by b.pitcher ,a.`date` ,b.channel
|
|
|
+ '''
|
|
|
+
|
|
|
+ data_list = db.quchen_text.get_data_list(dt_sql)
|
|
|
+ byte_list = []
|
|
|
+ for _ in data_list:
|
|
|
+ _[2] = str(_[2]) if _[2] else 0
|
|
|
+ _[3] = round(float(_[3]), 2) if _[3] else 0
|
|
|
+ _[4] = round(float(_[4]), 2) if _[4] else 0
|
|
|
+ _[5] = round(float(_[5]), 2) if _[5] else 0
|
|
|
+ _[6] = str(_[6]) if _[6] else ''
|
|
|
+ _[7] = str(_[7]) if _[7] else ''
|
|
|
+ _[8] = str(_[8]) if _[8] else ''
|
|
|
+ _.append('BYTEDANCE')
|
|
|
+ byte_list.append(tuple(_))
|
|
|
+ col = '''pitcher,channel,dt,cost,view_count,click_count,stage,book,platform,type'''
|
|
|
+ print(byte_list)
|
|
|
+ ck.execute(f"alter table dw_daily_bytedance_cost drop partition '{ymd}' ")
|
|
|
+
|
|
|
+ ck.insertMany("dw_daily_bytedance_cost", col, tuple(byte_list))
|
|
|
+
|
|
|
+
|
|
|
+def replace_data():
|
|
|
+ channel_name='BYTEDANCE'
|
|
|
+ sql = f"""
|
|
|
+select
|
|
|
+ dt1,channel1,pitcher,stage,platform,book,'{channel_name}' type,
|
|
|
+ order_count,order_user,order_amount,
|
|
|
+ first_order_count,first_order_user,first_order_amount,
|
|
|
+ view_count,click_count,follow_user,
|
|
|
+ cost,reg_order_count,reg_order_user,reg_order_amount,
|
|
|
+ web_view_count,platform_view_count,web_order_count,
|
|
|
+ reg_order_user_again,
|
|
|
+ reg_order_user_again3,
|
|
|
+ reg_order_user_again4,
|
|
|
+ reg_order_user_again5,
|
|
|
+ reg_order_user_again6
|
|
|
+from (
|
|
|
+ select
|
|
|
+ if(dt4='1970-01-01',dt,dt4) dt1,if(channel4='',channel,channel4) channel1,
|
|
|
+ pitcher,stage,platform,book,cost,view_count,click_count, ---基础属性和消耗数据
|
|
|
+ follow_user,web_view_count,platform_view_count,web_order_count,'{channel_name}' type,
|
|
|
+ require_roi,require_mult,order_count,order_user,order_amount from
|
|
|
+
|
|
|
+ (select * from dw_daily_bytedance_cost) aa
|
|
|
+ left join
|
|
|
+ (select date as dt4,channel as channel4,count(1) as order_count, ---账面充值
|
|
|
+ count(distinct user_id) as order_user,sum(amount) as order_amount
|
|
|
+ from order where status=2 group by date,channel) dd
|
|
|
+ on dt=dt4 and channel=channel4) a
|
|
|
+
|
|
|
+left outer join (
|
|
|
+ select sum(if(user_order_count>=2,1,0)) reg_order_user_again,channel channel6,toDate(reg_date) dt6, ---复冲人数
|
|
|
+ sum(if(user_order_count>=3,1,0)) reg_order_user_again3,
|
|
|
+ sum(if(user_order_count>=4,1,0)) reg_order_user_again4,
|
|
|
+ sum(if(user_order_count>=5,1,0)) reg_order_user_again5,
|
|
|
+ sum(if(user_order_count>=6,1,0)) reg_order_user_again6
|
|
|
+ from (select formatDateTime(reg_time,'%Y-%m-%d') reg_date,channel,count(1) user_order_count
|
|
|
+ from order where status=2 group by formatDateTime(reg_time,'%Y-%m-%d') ,user_id,channel) x group by reg_date,channel
|
|
|
+ ) f on dt1=dt6 and channel1=channel6
|
|
|
+
|
|
|
+left outer join
|
|
|
+ (
|
|
|
+ select toDate(formatDateTime(reg_time,'%Y-%m-%d')) as dt2, ---新用户累计充值数据
|
|
|
+ channel as channel2,
|
|
|
+ sum(amount) as reg_order_amount,
|
|
|
+ count(distinct user_id) as reg_order_user,
|
|
|
+ count(1) as reg_order_count
|
|
|
+ from order where status=2 and reg_time>'2019-03-18 00:00:00' group by toDate(formatDateTime(reg_time,'%Y-%m-%d')),channel) b
|
|
|
+ on dt1=dt2 and channel1=channel2
|
|
|
+left outer join
|
|
|
+ (select date as dt3,channel as channel3,count(1) as first_order_count, ---新用户首日充值
|
|
|
+ count(distinct user_id) as first_order_user,sum(amount) as first_order_amount
|
|
|
+ from order where status=2 and toDate(reg_time)=date group by date,channel) c
|
|
|
+ on dt1=dt3 and channel1=channel3
|
|
|
+
|
|
|
+ having order_amount+cost+reg_order_amount>0"""
|
|
|
+
|
|
|
+ data = ck.execute(sql)
|
|
|
+ print(data)
|
|
|
+
|
|
|
+ isql = "replace into dw_channel values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
|
|
|
+ # db.dm.execute("truncate table dw_channel")
|
|
|
+ db.dm.executeMany(isql, data)
|
|
|
+
|
|
|
+def platform_data_sum(ymd):
|
|
|
+ ck.execute("alter table dw_daily_platform_cost drop partition '{}' ".format(ymd))
|
|
|
+ sql=f'''
|
|
|
+ insert into dw_daily_platform_cost
|
|
|
+ select * from
|
|
|
+ (select * from dw_daily_bytedance_cost a where dt='{ymd}'
|
|
|
+ union all
|
|
|
+ select * from dw_daily_channel_cost b where dt='{ymd}'
|
|
|
+ AND channel not in (select channel from dw_daily_bytedance_cost a
|
|
|
+ where dt='{ymd}'))
|
|
|
+ '''
|
|
|
+ ck.execute(sql)
|
|
|
+
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
- insert_data()
|
|
|
+ dt = DateUtils()
|
|
|
+
|
|
|
+ # insert_data()
|
|
|
+ for i in dt.getDateLists('2021-09-18','2021-09-23'):
|
|
|
+ print(i)
|
|
|
+ dw_daily_bytedance_cost(i)
|
|
|
+ platform_data_sum(i)
|
|
|
+ exit()
|
|
|
+ # replace_data()
|
|
|
+ for i in dt.getDateLists('2019-03-18','2021-10-17'):
|
|
|
+ print(i)
|
|
|
+ platform_data_sum(i)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|