|  | @@ -0,0 +1,307 @@
 | 
	
		
			
				|  |  | +# Author renyupeng
 | 
	
		
			
				|  |  | +# coding=utf-8
 | 
	
		
			
				|  |  | +# @Time    : 2021/9/15 5:10 下午
 | 
	
		
			
				|  |  | +# @Site    :
 | 
	
		
			
				|  |  | +# @File    : MateirialVideoDailyReport.py
 | 
	
		
			
				|  |  | +# @Software: PyCharm
 | 
	
		
			
				|  |  | +# @contact: renyupeng@c-top.com.cn
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import logging
 | 
	
		
			
				|  |  | +from math import ceil
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from Apietl.kwai_etl.report.ReplaceAccountInfo import ReplaceAccountInfo
 | 
	
		
			
				|  |  | +from Apietl.utlis.Logger import Logger
 | 
	
		
			
				|  |  | +from Apietl.utlis.Utils import Utils
 | 
	
		
			
				|  |  | +from TidbConn import TidbConn
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class MateirialVideoDailyReport:
 | 
	
		
			
				|  |  | +    def __init__(self):
 | 
	
		
			
				|  |  | +        self.conn = TidbConn.get_connection()
 | 
	
		
			
				|  |  | +        self.parm = Utils.get_args()
 | 
	
		
			
				|  |  | +        self.start_time = self.parm[0]
 | 
	
		
			
				|  |  | +        self.end_time = self.parm[1]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def daily_report(self):
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            sql = """replace into application.kuaishou_material_video_report_daily_dw
 | 
	
		
			
				|  |  | +(account_id, project_id, product_id, advertiser_id,
 | 
	
		
			
				|  |  | + company_id, account_name, project_name,
 | 
	
		
			
				|  |  | + advertiser_name, company_name, sale_id, user_id,
 | 
	
		
			
				|  |  | + clip_id, shot_id, plan_id, leader_id, org_code,
 | 
	
		
			
				|  |  | + photo_url, photo_id, cover_url, image_token,
 | 
	
		
			
				|  |  | + photo_caption, stat_date, charge, `show`, photo_click,
 | 
	
		
			
				|  |  | + aclick, bclick, photo_click_ratio, play_3s_ratio,
 | 
	
		
			
				|  |  | + action_ratio, impression_1k_cost, photo_click_cost,
 | 
	
		
			
				|  |  | + action_cost, share, comment, `like`, follow,
 | 
	
		
			
				|  |  | + cancel_follow, report, block, negative, submit,
 | 
	
		
			
				|  |  | + download_started, download_completed, activation,
 | 
	
		
			
				|  |  | + event_pay_first_day,
 | 
	
		
			
				|  |  | + event_pay_purchase_amount_first_day,
 | 
	
		
			
				|  |  | + event_pay_first_day_roi, event_pay,
 | 
	
		
			
				|  |  | + event_pay_purchase_amount, event_pay_roi,
 | 
	
		
			
				|  |  | + event_register, event_register_cost,
 | 
	
		
			
				|  |  | + event_register_ratio, event_jin_jian_app,
 | 
	
		
			
				|  |  | + event_jin_jian_app_cost, event_credit_grant_app,
 | 
	
		
			
				|  |  | + event_credit_grant_app_cost,
 | 
	
		
			
				|  |  | + event_credit_grant_app_ratio, event_order_paid,
 | 
	
		
			
				|  |  | + event_order_paid_purchase_amount,
 | 
	
		
			
				|  |  | + event_order_paid_cost, event_next_day_stay,
 | 
	
		
			
				|  |  | + event_next_day_stay_cost, event_next_day_stay_ratio,
 | 
	
		
			
				|  |  | + form_count, form_cost, form_action_ratio,
 | 
	
		
			
				|  |  | + event_jin_jian_landing_page,
 | 
	
		
			
				|  |  | + event_jin_jian_landing_page_cost,
 | 
	
		
			
				|  |  | + event_credit_grant_landing_page,
 | 
	
		
			
				|  |  | + event_credit_grant_landing_page_cost,
 | 
	
		
			
				|  |  | + event_credit_grant_landing_page_ratio,
 | 
	
		
			
				|  |  | + event_valid_clues, event_valid_clues_cost,
 | 
	
		
			
				|  |  | + event_add_wechat, event_add_wechat_cost,
 | 
	
		
			
				|  |  | + event_add_wechat_ratio, event_get_through,
 | 
	
		
			
				|  |  | + event_get_through_cost, event_get_through_ratio,
 | 
	
		
			
				|  |  | + event_app_invoked, event_app_invoked_cost,
 | 
	
		
			
				|  |  | + event_app_invoked_ratio,
 | 
	
		
			
				|  |  | + event_credit_grant_landing_ratio, play_5s_ratio,
 | 
	
		
			
				|  |  | + play_end_ratio, event_new_user_pay,
 | 
	
		
			
				|  |  | + event_new_user_pay_cost, event_new_user_pay_ratio,
 | 
	
		
			
				|  |  | + click_1k_cost, ad_product_cnt, event_goods_view,
 | 
	
		
			
				|  |  | + merchant_reco_fans, event_order_amount_roi,
 | 
	
		
			
				|  |  | + event_goods_view_cost, merchant_reco_fans_cost,
 | 
	
		
			
				|  |  | + event_button_click, event_button_click_cost,
 | 
	
		
			
				|  |  | + event_button_click_ratio, event_order_paid_roi,
 | 
	
		
			
				|  |  | + event_new_user_jinjian_app,
 | 
	
		
			
				|  |  | + event_new_user_jinjian_app_cost,
 | 
	
		
			
				|  |  | + event_new_user_jinjian_app_roi,
 | 
	
		
			
				|  |  | + event_new_user_credit_grant_app,
 | 
	
		
			
				|  |  | + event_new_user_credit_grant_app_cost,
 | 
	
		
			
				|  |  | + event_new_user_credit_grant_app_roi,
 | 
	
		
			
				|  |  | + event_new_user_jinjian_page,
 | 
	
		
			
				|  |  | + event_new_user_jinjian_page_cost,
 | 
	
		
			
				|  |  | + event_new_user_jinjian_page_roi,
 | 
	
		
			
				|  |  | + event_new_user_credit_grant_page,
 | 
	
		
			
				|  |  | + event_new_user_credit_grant_page_cost,
 | 
	
		
			
				|  |  | + event_new_user_credit_grant_page_roi,
 | 
	
		
			
				|  |  | + event_appoint_form, event_appoint_form_cost,
 | 
	
		
			
				|  |  | + event_appoint_form_ratio, event_appoint_jump_click,
 | 
	
		
			
				|  |  | + event_appoint_jump_click_cost,
 | 
	
		
			
				|  |  | + event_appoint_jump_click_ratio,
 | 
	
		
			
				|  |  | + union_event_pay_purchase_amount_7d,
 | 
	
		
			
				|  |  | + union_event_pay_purchase_amount_7d_roi, placement_type,
 | 
	
		
			
				|  |  | + ad_scene, event_order_successed,
 | 
	
		
			
				|  |  | + ad_photo_played_10s_ratio, key_action_cost,
 | 
	
		
			
				|  |  | + event_add_shopping_cart_cost,
 | 
	
		
			
				|  |  | + event_ad_watch_times_ratio, event_outbound_call_cost,
 | 
	
		
			
				|  |  | + event_outbound_call, action_new_ratio,
 | 
	
		
			
				|  |  | + event_watch_app_ad, event_multi_conversion_cost,
 | 
	
		
			
				|  |  | + event_phone_card_activate,
 | 
	
		
			
				|  |  | + ad_photo_played_75percent_ratio, key_action_ratio,
 | 
	
		
			
				|  |  | + event_ad_watch_times_cost, event_add_shopping_cart,
 | 
	
		
			
				|  |  | + key_action, event_multi_conversion,
 | 
	
		
			
				|  |  | + event_wechat_connected, event_dsp_gift_form,
 | 
	
		
			
				|  |  | + event_intention_confirmed, event_phone_get_through,
 | 
	
		
			
				|  |  | + event_multi_conversion_ratio, event_measurement_house,
 | 
	
		
			
				|  |  | + ad_photo_played_2s_ratio, event_outbound_call_ratio,
 | 
	
		
			
				|  |  | + event_ad_watch_times,
 | 
	
		
			
				|  |  | + signature,
 | 
	
		
			
				|  |  | +         channel_type ,
 | 
	
		
			
				|  |  | +       clip_name,
 | 
	
		
			
				|  |  | +       shot_name,
 | 
	
		
			
				|  |  | +       plan_name,
 | 
	
		
			
				|  |  | +       leader_name,
 | 
	
		
			
				|  |  | +       video_name,
 | 
	
		
			
				|  |  | +       channel_name,
 | 
	
		
			
				|  |  | +       clip_company_id)
 | 
	
		
			
				|  |  | +select report.advertiser_id                                                                     as account_id,
 | 
	
		
			
				|  |  | +       cp.id                                                                                    as project_id,
 | 
	
		
			
				|  |  | +       product.id                                                                               as product_id,
 | 
	
		
			
				|  |  | +       ca.id                                                                                    as advertiser_id,
 | 
	
		
			
				|  |  | +       uc.company_id,
 | 
	
		
			
				|  |  | +       account_name,
 | 
	
		
			
				|  |  | +       cp.project_name                                                                          as project_name,
 | 
	
		
			
				|  |  | +       ca.name                                                                                  as advertiser_name,
 | 
	
		
			
				|  |  | +       uc.company_name,
 | 
	
		
			
				|  |  | +       cp.sale_id,
 | 
	
		
			
				|  |  | +       cua.user_id,
 | 
	
		
			
				|  |  | +       clip_id,
 | 
	
		
			
				|  |  | +       shot_id,
 | 
	
		
			
				|  |  | +       plan_id,
 | 
	
		
			
				|  |  | +       cma.leader_id,
 | 
	
		
			
				|  |  | +       su.org_code,
 | 
	
		
			
				|  |  | +       report.photo_url,
 | 
	
		
			
				|  |  | +       report.photo_id,
 | 
	
		
			
				|  |  | +       report.cover_url,
 | 
	
		
			
				|  |  | +       report.image_token,
 | 
	
		
			
				|  |  | +       report.photo_caption,
 | 
	
		
			
				|  |  | +       report.stat_date,
 | 
	
		
			
				|  |  | +       charge,
 | 
	
		
			
				|  |  | +       `show`,
 | 
	
		
			
				|  |  | +       photo_click,
 | 
	
		
			
				|  |  | +       aclick,
 | 
	
		
			
				|  |  | +       bclick,
 | 
	
		
			
				|  |  | +       photo_click_ratio,
 | 
	
		
			
				|  |  | +       play_3s_ratio,
 | 
	
		
			
				|  |  | +       action_ratio,
 | 
	
		
			
				|  |  | +       impression_1k_cost,
 | 
	
		
			
				|  |  | +       photo_click_cost,
 | 
	
		
			
				|  |  | +       action_cost,
 | 
	
		
			
				|  |  | +       share,
 | 
	
		
			
				|  |  | +       comment,
 | 
	
		
			
				|  |  | +       `like`,
 | 
	
		
			
				|  |  | +       follow,
 | 
	
		
			
				|  |  | +       cancel_follow,
 | 
	
		
			
				|  |  | +       report,
 | 
	
		
			
				|  |  | +       block,
 | 
	
		
			
				|  |  | +       negative,
 | 
	
		
			
				|  |  | +       submit,
 | 
	
		
			
				|  |  | +       download_started,
 | 
	
		
			
				|  |  | +       download_completed,
 | 
	
		
			
				|  |  | +       activation,
 | 
	
		
			
				|  |  | +       event_pay_first_day,
 | 
	
		
			
				|  |  | +       event_pay_purchase_amount_first_day,
 | 
	
		
			
				|  |  | +       event_pay_first_day_roi,
 | 
	
		
			
				|  |  | +       event_pay,
 | 
	
		
			
				|  |  | +       event_pay_purchase_amount,
 | 
	
		
			
				|  |  | +       event_pay_roi,
 | 
	
		
			
				|  |  | +       event_register,
 | 
	
		
			
				|  |  | +       event_register_cost,
 | 
	
		
			
				|  |  | +       event_register_ratio,
 | 
	
		
			
				|  |  | +       event_jin_jian_app,
 | 
	
		
			
				|  |  | +       event_jin_jian_app_cost,
 | 
	
		
			
				|  |  | +       event_credit_grant_app,
 | 
	
		
			
				|  |  | +       event_credit_grant_app_cost,
 | 
	
		
			
				|  |  | +       event_credit_grant_app_ratio,
 | 
	
		
			
				|  |  | +       event_order_paid,
 | 
	
		
			
				|  |  | +       event_order_paid_purchase_amount,
 | 
	
		
			
				|  |  | +       event_order_paid_cost,
 | 
	
		
			
				|  |  | +       event_next_day_stay,
 | 
	
		
			
				|  |  | +       event_next_day_stay_cost,
 | 
	
		
			
				|  |  | +       event_next_day_stay_ratio,
 | 
	
		
			
				|  |  | +       form_count,
 | 
	
		
			
				|  |  | +       form_cost,
 | 
	
		
			
				|  |  | +       form_action_ratio,
 | 
	
		
			
				|  |  | +       event_jin_jian_landing_page,
 | 
	
		
			
				|  |  | +       event_jin_jian_landing_page_cost,
 | 
	
		
			
				|  |  | +       event_credit_grant_landing_page,
 | 
	
		
			
				|  |  | +       event_credit_grant_landing_page_cost,
 | 
	
		
			
				|  |  | +       event_credit_grant_landing_page_ratio,
 | 
	
		
			
				|  |  | +       event_valid_clues,
 | 
	
		
			
				|  |  | +       event_valid_clues_cost,
 | 
	
		
			
				|  |  | +       event_add_wechat,
 | 
	
		
			
				|  |  | +       event_add_wechat_cost,
 | 
	
		
			
				|  |  | +       event_add_wechat_ratio,
 | 
	
		
			
				|  |  | +       event_get_through,
 | 
	
		
			
				|  |  | +       event_get_through_cost,
 | 
	
		
			
				|  |  | +       event_get_through_ratio,
 | 
	
		
			
				|  |  | +       event_app_invoked,
 | 
	
		
			
				|  |  | +       event_app_invoked_cost,
 | 
	
		
			
				|  |  | +       event_app_invoked_ratio,
 | 
	
		
			
				|  |  | +       event_credit_grant_landing_ratio,
 | 
	
		
			
				|  |  | +       play_5s_ratio,
 | 
	
		
			
				|  |  | +       play_end_ratio,
 | 
	
		
			
				|  |  | +       event_new_user_pay,
 | 
	
		
			
				|  |  | +       event_new_user_pay_cost,
 | 
	
		
			
				|  |  | +       event_new_user_pay_ratio,
 | 
	
		
			
				|  |  | +       click_1k_cost,
 | 
	
		
			
				|  |  | +       ad_product_cnt,
 | 
	
		
			
				|  |  | +       event_goods_view,
 | 
	
		
			
				|  |  | +       merchant_reco_fans,
 | 
	
		
			
				|  |  | +       event_order_amount_roi,
 | 
	
		
			
				|  |  | +       event_goods_view_cost,
 | 
	
		
			
				|  |  | +       merchant_reco_fans_cost,
 | 
	
		
			
				|  |  | +       event_button_click,
 | 
	
		
			
				|  |  | +       event_button_click_cost,
 | 
	
		
			
				|  |  | +       event_button_click_ratio,
 | 
	
		
			
				|  |  | +       event_order_paid_roi,
 | 
	
		
			
				|  |  | +       event_new_user_jinjian_app,
 | 
	
		
			
				|  |  | +       event_new_user_jinjian_app_cost,
 | 
	
		
			
				|  |  | +       event_new_user_jinjian_app_roi,
 | 
	
		
			
				|  |  | +       event_new_user_credit_grant_app,
 | 
	
		
			
				|  |  | +       event_new_user_credit_grant_app_cost,
 | 
	
		
			
				|  |  | +       event_new_user_credit_grant_app_roi,
 | 
	
		
			
				|  |  | +       event_new_user_jinjian_page,
 | 
	
		
			
				|  |  | +       event_new_user_jinjian_page_cost,
 | 
	
		
			
				|  |  | +       event_new_user_jinjian_page_roi,
 | 
	
		
			
				|  |  | +       event_new_user_credit_grant_page,
 | 
	
		
			
				|  |  | +       event_new_user_credit_grant_page_cost,
 | 
	
		
			
				|  |  | +       event_new_user_credit_grant_page_roi,
 | 
	
		
			
				|  |  | +       event_appoint_form,
 | 
	
		
			
				|  |  | +       event_appoint_form_cost,
 | 
	
		
			
				|  |  | +       event_appoint_form_ratio,
 | 
	
		
			
				|  |  | +       event_appoint_jump_click,
 | 
	
		
			
				|  |  | +       event_appoint_jump_click_cost,
 | 
	
		
			
				|  |  | +       event_appoint_jump_click_ratio,
 | 
	
		
			
				|  |  | +       union_event_pay_purchase_amount_7d,
 | 
	
		
			
				|  |  | +       union_event_pay_purchase_amount_7d_roi,
 | 
	
		
			
				|  |  | +       placement_type,
 | 
	
		
			
				|  |  | +       ad_scene,
 | 
	
		
			
				|  |  | +       event_order_successed,
 | 
	
		
			
				|  |  | +       ad_photo_played_10s_ratio,
 | 
	
		
			
				|  |  | +       key_action_cost,
 | 
	
		
			
				|  |  | +       event_add_shopping_cart_cost,
 | 
	
		
			
				|  |  | +       event_ad_watch_times_ratio,
 | 
	
		
			
				|  |  | +       event_outbound_call_cost,
 | 
	
		
			
				|  |  | +       event_outbound_call,
 | 
	
		
			
				|  |  | +       action_new_ratio,
 | 
	
		
			
				|  |  | +       event_watch_app_ad,
 | 
	
		
			
				|  |  | +       event_multi_conversion_cost,
 | 
	
		
			
				|  |  | +       event_phone_card_activate,
 | 
	
		
			
				|  |  | +       ad_photo_played_75percent_ratio,
 | 
	
		
			
				|  |  | +       key_action_ratio,
 | 
	
		
			
				|  |  | +       event_ad_watch_times_cost,
 | 
	
		
			
				|  |  | +       event_add_shopping_cart,
 | 
	
		
			
				|  |  | +       key_action,
 | 
	
		
			
				|  |  | +       event_multi_conversion,
 | 
	
		
			
				|  |  | +       event_wechat_connected,
 | 
	
		
			
				|  |  | +       event_dsp_gift_form,
 | 
	
		
			
				|  |  | +       event_intention_confirmed,
 | 
	
		
			
				|  |  | +       event_phone_get_through,
 | 
	
		
			
				|  |  | +       event_multi_conversion_ratio,
 | 
	
		
			
				|  |  | +       event_measurement_house,
 | 
	
		
			
				|  |  | +       ad_photo_played_2s_ratio,
 | 
	
		
			
				|  |  | +       event_outbound_call_ratio,
 | 
	
		
			
				|  |  | +       event_ad_watch_times,
 | 
	
		
			
				|  |  | +       video.signature,
 | 
	
		
			
				|  |  | +       video.channel_type,
 | 
	
		
			
				|  |  | +       clip.realname,
 | 
	
		
			
				|  |  | +       shot.realname,
 | 
	
		
			
				|  |  | +       plan.realname,
 | 
	
		
			
				|  |  | +       leader.leader_name,
 | 
	
		
			
				|  |  | +       case when cmi.material_name is not null then cmi.material_name else video.photo_name end as video_name,
 | 
	
		
			
				|  |  | +       case when video.channel_type = 1 then '素造' else '内部' end,
 | 
	
		
			
				|  |  | +       uc.company_id
 | 
	
		
			
				|  |  | +from media_api.kuaishou_material_video_report_daily report
 | 
	
		
			
				|  |  | +         inner join media_api.kuaishou_video_list video
 | 
	
		
			
				|  |  | +                    on report.advertiser_id = video.account_id and report.photo_id = video.photo_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.ctop_material_info cmi on video.signature = cmi.code
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.ctop_material_ascription cma on cma.code = video.signature
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.ctop_user_allocation cua on cua.account_id = video.account_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.ctop_project cp on cua.project_id = cp.id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.ctop_advertiser ca on ca.id = cua.advertiser_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.sys_user su on su.id = cua.user_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.sys_user clip on clip.id = cma.clip_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.sys_user shot on shot.id = cma.shot_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.sys_user plan on plan.id = cma.plan_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.sys_user leader on leader.id = cma.leader_id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.user_company uc on uc.user_id = clip.id
 | 
	
		
			
				|  |  | +         left join `jeecg-boot`.ctop_product product on product.id = cp.product_id
 | 
	
		
			
				|  |  | + where report.stat_date between {start_time} and {end_time} 
 | 
	
		
			
				|  |  | + and photo_id = 0
 | 
	
		
			
				|  |  | +""".format(start_time=self.start_time, end_time=self.end_time)
 | 
	
		
			
				|  |  | +            print(sql)
 | 
	
		
			
				|  |  | +            TidbConn.upsert(conn=self.conn, sql_buff=sql)
 | 
	
		
			
				|  |  | +            self.conn.commit()
 | 
	
		
			
				|  |  | +            TidbConn.conn_close(conn=self.conn)
 | 
	
		
			
				|  |  | +            return 0
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        except Exception as e:
 | 
	
		
			
				|  |  | +            logging.error(e)
 | 
	
		
			
				|  |  | +            return -1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if __name__ == '__main__':
 | 
	
		
			
				|  |  | +    status = MateirialVideoDailyReport().daily_report()
 | 
	
		
			
				|  |  | +    if status == 0:
 | 
	
		
			
				|  |  | +        print("作业执行成功")
 | 
	
		
			
				|  |  | +        exit(0)
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        print("作业执行失败")
 | 
	
		
			
				|  |  | +        exit(-1)
 |