getClickZeroUidDetail.py 4.5 KB
import datetime
import pymysql
from utils import get_yesterday_date



#一周之前的date(7)
my_date1 = (datetime.date.today() - datetime.timedelta(days=7)).strftime("%Y-%m-%d")
#二周之前的date(14)
my_date2 = (datetime.date.today() - datetime.timedelta(days=14)).strftime("%Y-%m-%d")
#一个月之前的date(30)
my_date3 = (datetime.date.today() - datetime.timedelta(days=30)).strftime("%Y-%m-%d")
#两个月之前的date(60)
my_date4 = (datetime.date.today() - datetime.timedelta(days=60)).strftime("%Y-%m-%d")
#三个月之前的date(90)
my_date5 = (datetime.date.today() - datetime.timedelta(days=90)).strftime("%Y-%m-%d")


def get_click_zero_uid_count(platform):
	"""
	platform : "ios","android","all"
	rtype : dict
	"""
	if platform == "ios":
		platform = "='App Store'"
	elif platform == "android":
		platform = "!='App Store'"
	else:
		platform = " is not null"
	db = pymysql.connect(host='10.66.157.22', port=4000, user='root', passwd='3SYz54LS9#^9sBvC', db='jerry_test')
	cursor = db.cursor()
	sql = "select '0-7' as label,count(distinct(device_id)) from data_feed_exposure \
	where device_type{0} \
	and stat_date = '{7}' \
	and device_id not in \
	(select distinct(device_id) from data_feed_click \
	where stat_date = '{7}' \
		and device_type{1}) \
	and device_id in \
	(select distinct(device_id) \
	from data_feed_exposure \
	where device_id not in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {2})) \
	union all \
	select '7-14' as label,count(distinct(device_id)) from data_feed_exposure \
	where device_type{0} \
	and stat_date = '{7}' \
	and device_id not in \
	(select distinct(device_id) from data_feed_click \
	where stat_date = '{7}' \
		and device_type{1}) \
	and device_id in \
	(select distinct(device_id) \
	from data_feed_exposure \
	where device_id not in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {3}) \
	and device_id in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {2})) \
	union all \
	select '14-30' as label,count(distinct(device_id)) from data_feed_exposure \
	where device_type{0} \
	and stat_date = '{7}' \
	and device_id not in \
	(select distinct(device_id) from data_feed_click \
	where stat_date = '{7}' \
		and device_type{1}) \
	and device_id in \
	(select distinct(device_id) \
	from data_feed_exposure \
	where device_id not in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {4}) \
	and device_id in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {3})) \
	union all \
	select '30-60' as label,count(distinct(device_id)) from data_feed_exposure \
	where device_type{0} \
	and stat_date = '{7}' \
	and device_id not in \
	(select distinct(device_id) from data_feed_click \
	where stat_date = '{7}' \
		and device_type{1}) \
	and device_id in \
	(select distinct(device_id) \
	from data_feed_exposure \
	where device_id not in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {5}) \
	and device_id in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {4})) \
	union all \
	select '60-90' as label,count(distinct(device_id)) from data_feed_exposure \
	where device_type{0} \
	and stat_date = '{7}' \
	and device_id not in \
	(select distinct(device_id) from data_feed_click \
	where stat_date = '{7}' \
		and device_type{1}) \
	and device_id in \
	(select distinct(device_id) \
	from data_feed_exposure \
	where device_id not in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {6}) \
	and device_id in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {5})) \
	union all \
	select '90+' as label,count(distinct(device_id)) from data_feed_exposure \
	where device_type{0} \
	and stat_date = '{7}' \
	and device_id not in \
	(select distinct(device_id) from data_feed_click \
	where stat_date = '{7}' \
		and device_type{1}) \
	and device_id in \
	(select distinct(device_id) \
	from data_feed_exposure \
	where device_id in \
	(select distinct(device_id) from data_feed_exposure \
		where stat_date < {6}))".format(platform,platform.replace(' ','') if platform[-2]=='e' else platform,my_date1,my_date2,my_date3,my_date4,my_date5,get_yesterday_date())
	cursor.execute(sql)
	result = cursor.fetchall()
	db.close()
	dct = {}
	for i in result:
		dct[i[0]] = i[1]
	return dct

	
if __name__ == '__main__':
	no_click_uid_detail_all = get_click_zero_uid_count("all")
	no_click_uid_detail_ios = get_click_zero_uid_count("ios")
	no_click_uid_detail_android = get_click_zero_uid_count("android")