Commit 716da1d4 authored by 高雅喆's avatar 高雅喆

add a new class getClkCidUidRate.py

parent 3a6de1e5
...@@ -12,7 +12,6 @@ def con_sql(sql): ...@@ -12,7 +12,6 @@ def con_sql(sql):
return result return result
#1 获取所有平台的0点击用户占比 #1 获取所有平台的0点击用户占比
def get_all_click_zero_rate(): def get_all_click_zero_rate():
sql = "select count(distinct(device_id)) from data_feed_click where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -1 day)" sql = "select count(distinct(device_id)) from data_feed_click where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -1 day)"
......
...@@ -8,7 +8,7 @@ class ClkCidUidRate(object): ...@@ -8,7 +8,7 @@ class ClkCidUidRate(object):
""" """
ndays : 1;2;3;4.. #The number of days from the current time ndays : 1;2;3;4.. #The number of days from the current time
platform : 'all';'ios';'android' platform : 'all';'ios';'android'
cid_type : 'diary';'answer';'question';"everything";"nothing"... cid_type : 'diary';'answer';'question';"nothing"...
""" """
self.ndays = ndays self.ndays = ndays
if platform == "ios": if platform == "ios":
...@@ -17,14 +17,37 @@ class ClkCidUidRate(object): ...@@ -17,14 +17,37 @@ class ClkCidUidRate(object):
self.platform = "!='AppStore'" self.platform = "!='AppStore'"
else: else:
self.platform = " is not null" self.platform = " is not null"
self.cid_type = cid_type if cid_type == "nothing":
self.cid_type = " is not null"
else:
self.cid_type = "='" + cid_type + "'"
def get_clk_cid_uid_rate(self, platform): def get_clk_cid_uid_rate(self, platform):
""" """
platform : "所有";"苹果","安卓" #方便显示 platform : "所有";"苹果","安卓" #方便显示
rtype : list rtype : list
""" """
pass if self.platform[-2] == 'e':
self.platform = self.platform.replace(' ','')
sql_clk = "select count(distinct(device_id)) from data_feed_click \
where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \
and device_type{1} \
and cid_type{2}".format(self.ndays,self.platform,self.cid_type)
clk_count = con_sql(sql_clk)[0][0]
if self.platform[-2] == 'e':#注意:曝光表中AppStore有空格
self.platform = self.platform[:-6] + ' ' + self.platform[-6:]
sql_imp = "select count(distinct(device_id)) from data_feed_exposure \
where from_unixtime(time,'%Y-%m-%d')=date_add(curdate(), interval -{0} day) \
and device_type{1} \
and cid_type{2}".format(self.ndays,self.platform,self.cid_type)
imp_count = con_sql(sql_imp)[0][0]
if self.cid_type == " is not null":
no_clk_count = imp_count - clk_count
return [platform,no_clk_count,imp_count,round(no_clk_count/imp_count,4)]
else:
return [platform,clk_count,imp_count,round(clk_count/imp_count,4)]
def result2file(self, result_lst, fpath): def result2file(self, result_lst, fpath):
...@@ -38,24 +61,28 @@ def main(): ...@@ -38,24 +61,28 @@ def main():
click_diary_ios = ClkCidUidRate(1,"ios","diary").get_clk_cid_uid_rate("苹果") click_diary_ios = ClkCidUidRate(1,"ios","diary").get_clk_cid_uid_rate("苹果")
click_diary_android = ClkCidUidRate(1,"android","diary").get_clk_cid_uid_rate("安卓") click_diary_android = ClkCidUidRate(1,"android","diary").get_clk_cid_uid_rate("安卓")
click_diary_result = [click_diary_all,click_diary_ios,click_diary_android] click_diary_result = [click_diary_all,click_diary_ios,click_diary_android]
print("已获取点击diary用户占比")
#2.点击answer用户占比 #2.点击answer用户占比
click_answer_all = ClkCidUidRate(1,"all","answer").get_clk_cid_uid_rate("所有") click_answer_all = ClkCidUidRate(1,"all","answer").get_clk_cid_uid_rate("所有")
click_answer_ios = ClkCidUidRate(1,"ios","answer").get_clk_cid_uid_rate("苹果") click_answer_ios = ClkCidUidRate(1,"ios","answer").get_clk_cid_uid_rate("苹果")
click_answer_android = ClkCidUidRate(1,"android","answer").get_clk_cid_uid_rate("安卓") click_answer_android = ClkCidUidRate(1,"android","answer").get_clk_cid_uid_rate("安卓")
click_answer_result = [click_answer_all,click_answer_ios,click_answer_android] click_answer_result = [click_answer_all,click_answer_ios,click_answer_android]
#3.点击question用户占比 print("已获取点击answer用户占比")
click_question_all = ClkCidUidRate(1,"all","question").get_clk_cid_uid_rate("所有") #3.点击question用户占比(曝光表里cid类型没有question,因此下面的曝光数为0,0不能作分母)
click_question_ios = ClkCidUidRate(1,"ios","question").get_clk_cid_uid_rate("苹果") #click_question_all = ClkCidUidRate(1,"all","question").get_clk_cid_uid_rate("所有")
click_question_android = ClkCidUidRate(1,"android","question").get_clk_cid_uid_rate("安卓") #click_question_ios = ClkCidUidRate(1,"ios","question").get_clk_cid_uid_rate("苹果")
click_question_result = [click_question_all,click_question_ios,click_question_android] #click_question_android = ClkCidUidRate(1,"android","question").get_clk_cid_uid_rate("安卓")
#4.有点击用户占比 #click_question_result = [click_question_all,click_question_ios,click_question_android]
click_everything_all = ClkCidUidRate(1,"all","everything").get_clk_cid_uid_rate("所有") #print("已获取点击question用户占比")
click_everything_ios = ClkCidUidRate(1,"ios","everything").get_clk_cid_uid_rate("苹果") #4.无点击用户占比
click_everything_android = ClkCidUidRate(1,"android","everything").get_clk_cid_uid_rate("安卓")
click_everything_result = [click_everything_all,click_everything_ios,click_everything_android]
#5.无点击用户占比
click_nothing_all = ClkCidUidRate(1,"all","nothing").get_clk_cid_uid_rate("所有") click_nothing_all = ClkCidUidRate(1,"all","nothing").get_clk_cid_uid_rate("所有")
click_nothing_ios = ClkCidUidRate(1,"ios","nothing").get_clk_cid_uid_rate("苹果") click_nothing_ios = ClkCidUidRate(1,"ios","nothing").get_clk_cid_uid_rate("苹果")
click_nothing_android = ClkCidUidRate(1,"android","nothing").get_clk_cid_uid_rate("安卓") click_nothing_android = ClkCidUidRate(1,"android","nothing").get_clk_cid_uid_rate("安卓")
click_nothing_result = [click_nothing_all,click_nothing_ios,click_nothing_android] click_nothing_result = [click_nothing_all,click_nothing_ios,click_nothing_android]
print("已获取无点击用户占比")
if __name__ == '__main__':
main()
...@@ -172,11 +172,11 @@ def main(): ...@@ -172,11 +172,11 @@ def main():
clk_question_times_android = top_question_android.get_click_times() clk_question_times_android = top_question_android.get_click_times()
imp_question_times_android = top_question_android.get_impression_times() imp_question_times_android = top_question_android.get_impression_times()
clk_question_ctr_android = top_question_android.get_result("安卓",clk_question_times_android, imp_question_times_android, 2, "ctr") clk_question_ctr_android = top_question_android.get_result("安卓",clk_question_times_android, imp_question_times_android, 2, "ctr")
print("已获取 Top question 特征")
result_lst = [clk_question_ctr_all, clk_question_ctr_ios, clk_question_ctr_android] result_lst = [clk_question_ctr_all, clk_question_ctr_ios, clk_question_ctr_android]
output_path = DIRECTORY_PATH + "top100_ctr_question_{}.txt".format(get_yesterday_date()) output_path = DIRECTORY_PATH + "top100_ctr_question_{}.txt".format(get_yesterday_date())
top_question_all.result2file(result_lst, output_path) top_question_all.result2file(result_lst, output_path)
print("已获取 Top question 特征")
if __name__ == '__main__': if __name__ == '__main__':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment