from utils import con_sql from getClickZeroUidDetail import get_click_zero_uid_count from getRegisterUidDetail import get_register_uid_count #获取各个平台下的活跃用户点击率 def get_activate_uid_ctr(platform, ndays=1): """ ndays : 1;2;3;4.. #The number of days from the current time platform : 'all';'ios';'android' rtype : list """ if platform == "ios": platform = "='App Store'" elif platform == "android": platform = "!='App Store'" else: platform = " is not null" sql_clk = "select count(device_id) from data_feed_click \ where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \ and device_type{1}".format(ndays, platform.replace(' ','') if platform[-2]=='e' else platform) clk_count = con_sql(sql_clk)[0][0] sql_imp = "select count(device_id) from data_feed_exposure \ where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \ and device_id in \ (select device_id from data_feed_click \ where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{1} day) \ and device_type{2}) \ and device_type{3}".format(ndays, ndays, platform.replace(' ','') if platform[-2]=='e' else platform, platform) imp_count = con_sql(sql_imp)[0][0] clk_rate = round(clk_count/imp_count, 4 ) if platform == "='App Store'": platform = "苹果" elif platform == "!='App Store'": platform = "安卓" else: platform = "所有" return [platform, clk_count, imp_count, clk_rate] #获取活跃用户平均每天曝光次数 def get_activate_uid_imp_times(city,ndays=1): """ ndays : 1;2;3;4.. #The number of days from the current time city : 'beijing';'all' rtype : list """ if city == "beijing": city = "='beijing'" else: city = " is not null" sql_uid = "select count(distinct(device_id)) from data_feed_click \ where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \ and city_id{1}".format(ndays,city) sql_uid_count = con_sql(sql_uid)[0][0] sql_imp = "select count(device_id) from data_feed_exposure \ where device_id in \ (select device_id from data_feed_click \ where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \ and city_id{1}) \ and from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \ and city_id{1}".format(ndays,city) sql_imp_times = con_sql(sql_imp)[0][0] if city == "='beijing'": city = "北京" else: city = "所有" return [city,sql_uid_count,sql_imp_times,round(sql_imp_times/sql_uid_count,2)] #获取无点击用户数分布(=无点击用户∩激活用户数 / 激活用户数) ;并且根据平台和激活日记来分 def get_click_zero_uid_rate_detail(platform): """ platform : "ios","android","all" rtype : dict """ dct1 = get_click_zero_uid_count(platform) dct2 = get_register_uid_count() result = {} for k in dct1: result[k] = round(dct1[k]/dct2[k],4) return result #获取 (用户点击次数 : 独立用户数) def get_click_times_to_count_uid(): """ rtype : tuple """ sql = "select times,count(device_id) \ from (select device_id,count(cid_type) as times \ from data_feed_click \ where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -1 day) \ group by device_id) as t \ group by times order by times" result = con_sql(sql) return result