def get_table(register_star_date, register_end_date, channel_id=-1, server_id=-1): """ 新增K日收益统计 """ now_date = datetime.date.today() total_days = (now_date-register_star_date).days+1 all_login_log_lst = [] global ALL_RECHARGE_LOG_LST ALL_RECHARGE_LOG_LST = [] for i in xrange(total_days): search_date = register_star_date+datetime.timedelta(days=i) date_str = "_"+search_date.strftime('%Y%m%d') # 获得查询日期到今天的所有登陆 和 充值数据 login_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_ROLE_LOGIN'+str(date_str),search_date,search_date, channel_id, server_id,None, None) recharge_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_RECHARGE_PLAYER'+str(date_str),search_date,search_date, channel_id, server_id,None, None) all_login_log_lst.extend(login_log_lst) ALL_RECHARGE_LOG_LST.extend(recharge_log_lst) # 计算数据 row_days = (register_end_date - register_star_date).days+1 table_lst = [] for _day in xrange(row_days): global ROW_NEW_USER_UID_LST ROW_NEW_USER_UID_LST = [] row_date = register_star_date + datetime.timedelta(days=_day) # 获取新用户 ROW_NEW_USER_UID_LST = daily_log_dat.get_set_with_key(all_login_log_lst, 'uid', function=lambda log: log['install'] == row_date) # 获取新增设备 new_device_num = daily_log_dat.get_set_num_with_key(all_login_log_lst, 'dev_id', function=lambda log: log['install'] == row_date) # 日期 recharge_date_1 = row_date + datetime.timedelta(days=0) recharge_date_2 = row_date + datetime.timedelta(days=1) recharge_date_3 = row_date + datetime.timedelta(days=2) recharge_date_4 = row_date + datetime.timedelta(days=3) recharge_date_5 = row_date + datetime.timedelta(days=4) recharge_date_6 = row_date + datetime.timedelta(days=5) recharge_date_7 = row_date + datetime.timedelta(days=6) recharge_date_15 = row_date + datetime.timedelta(days=14) recharge_date_30 = row_date + datetime.timedelta(days=29) recharge_date_up = row_date + datetime.timedelta(days=29) # 获取充值总额 row = [] row.append(row_date.strftime('%Y-%m-%d')) row.append(new_device_num) row.append(compute_k_days(recharge_date_1)) # 第1日 row.append(compute_k_days(recharge_date_2)) # 第2日 row.append(compute_k_days(recharge_date_3)) # 第3日 row.append(compute_k_days(recharge_date_4)) # 第4日 row.append(compute_k_days(recharge_date_5)) # 第5日 row.append(compute_k_days(recharge_date_6)) # 第6日 row.append(compute_k_days(recharge_date_7)) # 第7日 row.append(compute_k_days(recharge_date_7, _to_days=recharge_date_15)) # 第7~30日 row.append(compute_k_days(recharge_date_15, _to_days=recharge_date_30)) # 第15~30日 row.append(compute_k_days(recharge_date_up, compute='greater')) # 第30日以后 table_lst.append(row) return table_lst
def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): # 搜索日期到今天的所有日志 retained_day = search_start_date - datetime.timedelta(days=3) # all_log_lst = daily_log_dat.get_new_log_lst(retained_day, search_end_date) # # if channel_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['platform_id'] == channel_id) # if server_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['server_id'] == server_id) # # # 获取全部登录日志 # all_login_log_lst = daily_log_dat.filter_logs(all_log_lst, action=game_define.EVENT_ACTION_ROLE_LOGIN) all_login_log_lst = [] total_days = (search_end_date - retained_day).days + 1 for i in xrange(total_days): search_date = retained_day + datetime.timedelta(days=i) date_str = "_" + search_date.strftime('%Y%m%d') login_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_ROLE_LOGIN' + str(date_str), search_date, search_date, channel_id, server_id, None, None) all_login_log_lst.extend(login_log_lst) # 获取玩家游戏天数字典 user_play_day_dict = daily_log_dat.split_log_users_play_days(all_login_log_lst) # 展示日期数 show_days = (search_end_date - search_start_date).days table_result = [] for i in xrange(show_days + 1): row_date = search_start_date + datetime.timedelta(days=i) # 获取所有流失用户 lost_user_lst = daily_log_dat.get_lost_user_set(all_login_log_lst, row_date) row = _get_row(row_date, user_play_day_dict, lost_user_lst) table_result.append(row) return table_result
def get_table(search_date, channel_id=-1, server_id=-1): """ 角色首次充值等级 """ # start_log_time = datetime.datetime.strptime(game_define.LOCAL_LOG_START_DATE, '%Y-%m-%d').date() # 全部日志 # all_log_lst = daily_log_dat.get_new_log_lst(start_log_time, search_date) # # if channel_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['platform_id'] == channel_id) # if server_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['server_id'] == server_id) # # # 全部充值日志 # all_recharge_log_lst = daily_log_dat.filter_logs(all_log_lst, action=game_define.EVENT_ACTION_RECHARGE_PLAYER) date_str = "_"+search_date.strftime('%Y%m%d') all_recharge_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_RECHARGE_PLAYER'+str(date_str),search_date,search_date, channel_id, server_id,None, None) all_first_recharge_log_lst = daily_log_dat.filter_logs(all_recharge_log_lst, function=lambda log:log['old_rmb'] == 0) table_lst = [] for _table_lv in xrange(1, 121): # 全部当前等级充值日志 recharge_lv_log_lst = daily_log_dat.filter_logs(all_recharge_log_lst, function=lambda log: log['level'] == _table_lv) # 全部当前等级充值 用户ID列表 recharge_lv_user_lst = daily_log_dat.get_set_with_key(recharge_lv_log_lst, 'uid') # 全部当前等级首次充值日志 first_recharge_lv_log_lst = daily_log_dat.filter_logs(all_first_recharge_log_lst, function=lambda log: log['level'] == _table_lv) # 全部当前等级首次充值 用户ID列表 first_recharge_lv_user_lst = daily_log_dat.get_set_with_key(first_recharge_lv_log_lst, 'uid') # 首次充值人数 first_recharge_user_num = len(first_recharge_lv_user_lst) if first_recharge_user_num == 0: continue # 首次充值总金额 first_recharge_total_money = daily_log_dat.get_sum_int_with_key(first_recharge_lv_log_lst, "add_rmb") # 总体充值人数 recharge_user_num = len(recharge_lv_user_lst) # 总体充值金额 recharge_total_money = daily_log_dat.get_sum_int_with_key(recharge_lv_log_lst, "add_rmb") # 首次金额占比 first_recharge_money_rate = get_first_recharge_money_rate(first_recharge_total_money,recharge_total_money) # 首次人数占比 first_recharge_user_rate = get_first_recharge_user_rate(first_recharge_user_num,recharge_user_num) row = [_table_lv, first_recharge_user_num, first_recharge_total_money, recharge_user_num, recharge_total_money, str(first_recharge_money_rate * 100)+"%", str(first_recharge_user_rate * 100)+"%"] table_lst.append(row) return table_lst
def get_table(search_date, channel_id=-1, server_id=-1): """ 获取首次游戏时间长度 """ # new_log_lst = dat_log_util.read_file(search_date,search_date) # print new_log_lst # new_log_lst = daily_log_dat.get_new_log_lst(search_date, search_date) # # if channel_id >= 0: # new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda x: x['platform_id'] == channel_id) # if server_id >= 0: # new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda x: x['server_id'] == server_id) date_str = "_" + search_date.strftime('%Y%m%d') new_log_lst = mysql_util.get_role_action_lst( 'EVENT_ACTION_ROLE_LOGIN' + str(date_str), search_date, search_date, channel_id, server_id, None, None) # print("new_log_lst: "+str(new_log_lst)) # 获取指定日期新用户 new_use_uid_lst = daily_log_dat.get_set_with_key( new_log_lst, 'uid', function=lambda log: log['install'] == search_date) # 获取新玩家的所有日志 new_user_log_lst = daily_log_dat.filter_logs( new_log_lst, function=lambda log: log['uid'] in new_use_uid_lst) user_online_time_dict = _get_online_time_dict(new_user_log_lst, new_use_uid_lst) # print("user_online_time_dict: "+str(user_online_time_dict)) table_dat = [] table_dat.append(_get_row_dat("0-15s", user_online_time_dict, 0, 15)) table_dat.append(_get_row_dat("15-30s", user_online_time_dict, 15, 30)) table_dat.append(_get_row_dat("30s-1m", user_online_time_dict, 30, 60)) table_dat.append(_get_row_dat("1m-2m", user_online_time_dict, 60, 120)) table_dat.append(_get_row_dat("2m-3m", user_online_time_dict, 120, 180)) table_dat.append(_get_row_dat("3m-5m", user_online_time_dict, 180, 300)) table_dat.append(_get_row_dat("5m-10m", user_online_time_dict, 300, 600)) table_dat.append(_get_row_dat("10m-15m", user_online_time_dict, 600, 900)) table_dat.append(_get_row_dat("15m-30m", user_online_time_dict, 900, 1800)) table_dat.append(_get_row_dat("30m-60m", user_online_time_dict, 1800, 3600)) table_dat.append( _get_row_dat("60m-120m", user_online_time_dict, 3600, 7200)) table_dat.append(_get_row_dat("大于120m", user_online_time_dict, 7200)) # print("table_dat: "+str(table_dat)) return table_dat
def get_table(search_from_date, search_to_date, channel_id=-1, server_id=-1): """ 充值周期 """ # 获取指定日期 所有日志 # all_log_lst = daily_log_dat.get_new_log_lst(search_from_date, search_to_date) # # if channel_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['platform_id'] == channel_id) # if server_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['server_id'] == server_id) # 获取到今天为止的日志 now_date = datetime.date.today() total_days = (now_date - search_from_date).days+1 all_log_lst = [] for i in xrange(total_days): search_date = search_from_date + datetime.timedelta(days=i) date_str = "_"+search_date.strftime('%Y%m%d') log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_RECHARGE_PLAYER'+str(date_str), search_date, search_date, channel_id, server_id, None, None) all_log_lst.extend(log_lst) # 获取区间内所有新安装用户 new_install_uid_lst = daily_log_dat.get_set_with_key(all_log_lst, 'uid', function=lambda log: search_from_date <= log['install'] <= search_to_date) # 用指定日期新用户 获取所有充值日志 all_recharge_log = daily_log_dat.filter_logs(all_log_lst, function=lambda log: log['uid'] in new_install_uid_lst) # 获取全部首冲日志 all_first_recharge_log = daily_log_dat.filter_logs(all_recharge_log, function=lambda log: log['old_rmb'] == 0) table_result = [] table_result.append(_get_day_distance_result('1日', all_recharge_log, all_first_recharge_log, 0, 1)) table_result.append(_get_day_distance_result('2日', all_recharge_log, all_first_recharge_log, 1, 2)) table_result.append(_get_day_distance_result('3日', all_recharge_log, all_first_recharge_log, 2, 3)) table_result.append(_get_day_distance_result('4日', all_recharge_log, all_first_recharge_log, 3, 4)) table_result.append(_get_day_distance_result('5日', all_recharge_log, all_first_recharge_log, 4, 5)) table_result.append(_get_day_distance_result('6日', all_recharge_log, all_first_recharge_log, 5, 6)) table_result.append(_get_day_distance_result('7日', all_recharge_log, all_first_recharge_log, 6, 7)) table_result.append(_get_day_distance_result('7-15日', all_recharge_log, all_first_recharge_log, 7, 15)) table_result.append(_get_day_distance_result('15-30日', all_recharge_log, all_first_recharge_log, 15, 30)) table_result.append(_get_day_distance_result('30日以上', all_recharge_log, all_first_recharge_log, 30)) return table_result
def get_table(search_date, channel_id=-1, server_id=-1): """ 获取首次游戏时间长度 """ # new_log_lst = dat_log_util.read_file(search_date,search_date) # print new_log_lst # new_log_lst = daily_log_dat.get_new_log_lst(search_date, search_date) # # if channel_id >= 0: # new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda x: x['platform_id'] == channel_id) # if server_id >= 0: # new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda x: x['server_id'] == server_id) date_str = "_" + search_date.strftime('%Y%m%d') new_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_ROLE_LOGIN' + str(date_str), search_date, search_date, channel_id, server_id, None, None) # print("new_log_lst: "+str(new_log_lst)) # 获取指定日期新用户 new_use_uid_lst = daily_log_dat.get_set_with_key(new_log_lst, 'uid', function=lambda log: log['install'] == search_date) # 获取新玩家的所有日志 new_user_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda log: log['uid'] in new_use_uid_lst) user_online_time_dict = _get_online_time_dict(new_user_log_lst, new_use_uid_lst) # print("user_online_time_dict: "+str(user_online_time_dict)) table_dat = [] table_dat.append(_get_row_dat("0-15s", user_online_time_dict, 0, 15)) table_dat.append(_get_row_dat("15-30s", user_online_time_dict, 15, 30)) table_dat.append(_get_row_dat("30s-1m", user_online_time_dict, 30, 60)) table_dat.append(_get_row_dat("1m-2m", user_online_time_dict, 60, 120)) table_dat.append(_get_row_dat("2m-3m", user_online_time_dict, 120, 180)) table_dat.append(_get_row_dat("3m-5m", user_online_time_dict, 180, 300)) table_dat.append(_get_row_dat("5m-10m", user_online_time_dict, 300, 600)) table_dat.append(_get_row_dat("10m-15m", user_online_time_dict, 600, 900)) table_dat.append(_get_row_dat("15m-30m", user_online_time_dict, 900, 1800)) table_dat.append(_get_row_dat("30m-60m", user_online_time_dict, 1800, 3600)) table_dat.append(_get_row_dat("60m-120m", user_online_time_dict, 3600, 7200)) table_dat.append(_get_row_dat("大于120m", user_online_time_dict, 7200)) # print("table_dat: "+str(table_dat)) return table_dat
def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): # 搜索日期到今天的所有日志 retained_day = search_start_date - datetime.timedelta(days=3) # all_log_lst = daily_log_dat.get_new_log_lst(retained_day, search_end_date) # # if channel_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['platform_id'] == channel_id) # if server_id >= 0: # all_log_lst = daily_log_dat.filter_logs(all_log_lst, function=lambda x: x['server_id'] == server_id) # # # 获取全部登录日志 # all_login_log_lst = daily_log_dat.filter_logs(all_log_lst, action=game_define.EVENT_ACTION_ROLE_LOGIN) all_login_log_lst = [] total_days = (search_end_date - retained_day).days + 1 for i in xrange(total_days): search_date = retained_day + datetime.timedelta(days=i) date_str = "_" + search_date.strftime('%Y%m%d') login_log_lst = mysql_util.get_role_action_lst( 'EVENT_ACTION_ROLE_LOGIN' + str(date_str), search_date, search_date, channel_id, server_id, None, None) all_login_log_lst.extend(login_log_lst) # 获取玩家游戏天数字典 user_play_day_dict = daily_log_dat.split_log_users_play_days( all_login_log_lst) # 展示日期数 show_days = (search_end_date - search_start_date).days table_result = [] for i in xrange(show_days + 1): row_date = search_start_date + datetime.timedelta(days=i) # 获取所有流失用户 lost_user_lst = daily_log_dat.get_lost_user_set( all_login_log_lst, row_date) row = _get_row(row_date, user_play_day_dict, lost_user_lst) table_result.append(row) return table_result
def get_table(search_start_date, search_end_date, register_start_date=None, register_end_date=None, channel_id=-1, server_id=-1): """ 获取各等级充值状况表格 """ # 获取搜索区间日志 now_date = datetime.date.today() if search_end_date >= now_date: search_end_date = search_end_date-datetime.timedelta(days=1) total_recharge_log_lst = [] total_days = (search_end_date - search_start_date).days + 1 for i in xrange(total_days): search_date = search_start_date + datetime.timedelta(days=i) date_str = "_" + search_date.strftime('%Y%m%d') recharge_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_RECHARGE_PLAYER' + str(date_str), search_date, search_date, channel_id, server_id, register_start_date, register_end_date) total_recharge_log_lst.extend(recharge_log_lst) channel_server_str = "" if channel_id >= 0: channel_server_str += "platform_id = " + str(channel_id) + " and " if server_id >= 0: channel_server_str += " server_id = " + str(server_id) + " and " if register_start_date: channel_server_str += " '%s' <= install and " % register_start_date if register_end_date: channel_server_str += " install <= '%s' " % register_end_date # if channel_server_str: # sql = "SELECT * FROM user_detail WHERE %s " % channel_server_str # else: # sql = "SELECT * FROM user_detail" # print sql # result = mysql_util.query(sql) # if channel_server_str: old_log_dict = dat_log_util.read_file_dict_with_filename("USER_DETAIL", search_end_date, server_id, 'tables') if register_start_date and register_end_date: new_log_dict = dict() for uid, detail in old_log_dict.items(): if register_start_date <= detail['install'] <= register_end_date: new_log_dict[uid] = detail else: new_log_dict = old_log_dict user_num_dict = dict() lost_user_num_dict = dict() arrive_user_num = dict() for dat in new_log_dict.values(): cur_lv = dat['level'] user_num_dict[cur_lv] = user_num_dict.get(cur_lv, 0) + 1 if dat['last_play_time'].date() < (search_end_date - datetime.timedelta(days=3)): lost_user_num_dict[cur_lv] = lost_user_num_dict.get(cur_lv, 0) + 1 for _table_lv in xrange(1, 121): arrive_num = sum([user_num_dict.get(lv, 0) for lv in xrange(_table_lv, 121)]) arrive_user_num[_table_lv] = arrive_num # 获取所有等级停留人数 table_row_lst = [] for _table_lv in xrange(1, 121): level_recharge_lst = daily_log_dat.get_recharge_lst_with_user_level(total_recharge_log_lst, _table_lv) recharge_uid_lst = daily_log_dat.get_user_uid_lst(level_recharge_lst) # 停留人数 user_num = user_num_dict.get(_table_lv, 0) # 流失人数 lost_num = lost_user_num_dict.get(_table_lv, 0) # 留存人数 stand_num = user_num - lost_num # 到达等级人数 arrive_num = arrive_user_num[_table_lv] # 充值金额 recharge_money = daily_log_dat.get_recharge_total_money(level_recharge_lst) # 充值次数 recharge_num = len(level_recharge_lst) # 充值人数 recharge_user_num = len(recharge_uid_lst) # 等级付费率 level_pay_rate = _get_level_pay_rate(recharge_user_num, arrive_num) # 等级流失率 流失人数/到达人数 level_lost_rate = _get_level_lost_rate(lost_num, arrive_num) content = [_table_lv, user_num, stand_num, lost_num, arrive_num, recharge_money, recharge_num, recharge_user_num, str(level_pay_rate * 100) + "%", str(level_lost_rate * 100) + "%"] table_row_lst.append(content) return table_row_lst
def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): """ """ start_log_time = datetime.datetime.strptime(game_define.LOCAL_LOG_START_DATE, '%Y-%m-%d').date() # 总天数 table_lst = [] total_days = (search_end_date - search_start_date).days + 1 for i in xrange(total_days): row_lst = [] # 每行的日期 row_date = search_start_date + datetime.timedelta(days=i) # 获取今天全部日志 today_log_lst = mysql_util.get_role_action_lst('EVENT_ACTION_ROLE_LOGIN',start_log_time,row_date, channel_id, server_id,None, None) # 今日游戏玩家列表 today_login_user = daily_log_dat.get_user_uid_lst(today_log_lst) # 获取玩家时间段分布(5分钟) online_user_uid_lst = daily_log_dat.get_online_user_uid_lst(row_date, today_log_lst, 5) # 当前时间段Index now = datetime.datetime.now() minutes = now.hour * 60 + now.minute cur_online_lst_index = minutes / 5 online_time_result = dat_log_util.read_file_with_filename("USER_ONLINE_TIME",row_date,row_date) print online_time_result # 日期 show_date_str= row_date.strftime('%Y-%m-%d') # 今日总登录用户数 today_login_user_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid') # 当前实时在线 cur_online_num = len(online_user_uid_lst[cur_online_lst_index]) # 当日峰值在线 today_max_online_num = _max_online_num_today(online_user_uid_lst) # 5分钟以内 online_5 = _get_online_user_num(online_time_result, 0, 5) # 5-10分钟 online_5_10 = _get_online_user_num(online_time_result, 5, 10) # 10-15分钟 online_10_15 = _get_online_user_num(online_time_result, 10, 15) # 15-20分钟 online_15_20 = _get_online_user_num(online_time_result, 15, 20) # 20-25分钟 online_20_25 = _get_online_user_num(online_time_result, 20, 25) # 25-30分钟 online_25_30 = _get_online_user_num(online_time_result, 25, 30) # 30-35分钟 online_30_35 = _get_online_user_num(online_time_result, 30, 35) # 35-40分钟 online_35_40 = _get_online_user_num(online_time_result, 35, 40) # 40-45分钟 online_40_45 = _get_online_user_num(online_time_result, 40, 45) # 45-50分钟 online_45_50 = _get_online_user_num(online_time_result, 45, 50) # 50-55分钟 online_50_55 = _get_online_user_num(online_time_result, 50, 55) # 55-60分钟 online_55_60 = _get_online_user_num(online_time_result, 55, 60) # 60-90分钟 online_60_90 = _get_online_user_num(online_time_result, 60,90) # 90-120分钟 online_90_120 = _get_online_user_num(online_time_result, 90,120) # 120分钟以上 online_120_99999 = _get_online_user_num(online_time_result, 120, 99999) row_lst.append(show_date_str) row_lst.append(today_login_user_num) row_lst.append(cur_online_num) row_lst.append(today_max_online_num) row_lst.append(online_5) row_lst.append(online_5_10) row_lst.append(online_10_15) row_lst.append(online_15_20) row_lst.append(online_20_25) row_lst.append(online_25_30) row_lst.append(online_30_35) row_lst.append(online_35_40) row_lst.append(online_40_45) row_lst.append(online_45_50) row_lst.append(online_50_55) row_lst.append(online_55_60) row_lst.append(online_60_90) row_lst.append(online_90_120) row_lst.append(online_120_99999) table_lst.append(row_lst) return table_lst
def get_table(register_star_date, register_end_date, channel_id=-1, server_id=-1): """ 新增K日收益统计 """ now_date = datetime.date.today() total_days = (now_date - register_star_date).days + 1 all_login_log_lst = [] global ALL_RECHARGE_LOG_LST ALL_RECHARGE_LOG_LST = [] for i in xrange(total_days): search_date = register_star_date + datetime.timedelta(days=i) date_str = "_" + search_date.strftime('%Y%m%d') # 获得查询日期到今天的所有登陆 和 充值数据 login_log_lst = mysql_util.get_role_action_lst( 'EVENT_ACTION_ROLE_LOGIN' + str(date_str), search_date, search_date, channel_id, server_id, None, None) recharge_log_lst = mysql_util.get_role_action_lst( 'EVENT_ACTION_RECHARGE_PLAYER' + str(date_str), search_date, search_date, channel_id, server_id, None, None) all_login_log_lst.extend(login_log_lst) ALL_RECHARGE_LOG_LST.extend(recharge_log_lst) # 计算数据 row_days = (register_end_date - register_star_date).days + 1 table_lst = [] for _day in xrange(row_days): global ROW_NEW_USER_UID_LST ROW_NEW_USER_UID_LST = [] row_date = register_star_date + datetime.timedelta(days=_day) # 获取新用户 ROW_NEW_USER_UID_LST = daily_log_dat.get_set_with_key( all_login_log_lst, 'uid', function=lambda log: log['install'] == row_date) # 获取新增设备 new_device_num = daily_log_dat.get_set_num_with_key( all_login_log_lst, 'dev_id', function=lambda log: log['install'] == row_date) # 日期 recharge_date_1 = row_date + datetime.timedelta(days=0) recharge_date_2 = row_date + datetime.timedelta(days=1) recharge_date_3 = row_date + datetime.timedelta(days=2) recharge_date_4 = row_date + datetime.timedelta(days=3) recharge_date_5 = row_date + datetime.timedelta(days=4) recharge_date_6 = row_date + datetime.timedelta(days=5) recharge_date_7 = row_date + datetime.timedelta(days=6) recharge_date_15 = row_date + datetime.timedelta(days=14) recharge_date_30 = row_date + datetime.timedelta(days=29) recharge_date_up = row_date + datetime.timedelta(days=29) # 获取充值总额 row = [] row.append(row_date.strftime('%Y-%m-%d')) row.append(new_device_num) row.append(compute_k_days(recharge_date_1)) # 第1日 row.append(compute_k_days(recharge_date_2)) # 第2日 row.append(compute_k_days(recharge_date_3)) # 第3日 row.append(compute_k_days(recharge_date_4)) # 第4日 row.append(compute_k_days(recharge_date_5)) # 第5日 row.append(compute_k_days(recharge_date_6)) # 第6日 row.append(compute_k_days(recharge_date_7)) # 第7日 row.append(compute_k_days(recharge_date_7, _to_days=recharge_date_15)) # 第7~30日 row.append(compute_k_days(recharge_date_15, _to_days=recharge_date_30)) # 第15~30日 row.append(compute_k_days(recharge_date_up, compute='greater')) # 第30日以后 table_lst.append(row) return table_lst
def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): """ """ start_log_time = datetime.datetime.strptime( game_define.LOCAL_LOG_START_DATE, '%Y-%m-%d').date() # 总天数 table_lst = [] total_days = (search_end_date - search_start_date).days + 1 for i in xrange(total_days): row_lst = [] # 每行的日期 row_date = search_start_date + datetime.timedelta(days=i) # 获取今天全部日志 today_log_lst = mysql_util.get_role_action_lst( 'EVENT_ACTION_ROLE_LOGIN', start_log_time, row_date, channel_id, server_id, None, None) # 今日游戏玩家列表 today_login_user = daily_log_dat.get_user_uid_lst(today_log_lst) # 获取玩家时间段分布(5分钟) online_user_uid_lst = daily_log_dat.get_online_user_uid_lst( row_date, today_log_lst, 5) # 当前时间段Index now = datetime.datetime.now() minutes = now.hour * 60 + now.minute cur_online_lst_index = minutes / 5 online_time_result = dat_log_util.read_file_with_filename( "USER_ONLINE_TIME", row_date, row_date) print online_time_result # 日期 show_date_str = row_date.strftime('%Y-%m-%d') # 今日总登录用户数 today_login_user_num = daily_log_dat.get_set_num_with_key( today_log_lst, 'uid') # 当前实时在线 cur_online_num = len(online_user_uid_lst[cur_online_lst_index]) # 当日峰值在线 today_max_online_num = _max_online_num_today(online_user_uid_lst) # 5分钟以内 online_5 = _get_online_user_num(online_time_result, 0, 5) # 5-10分钟 online_5_10 = _get_online_user_num(online_time_result, 5, 10) # 10-15分钟 online_10_15 = _get_online_user_num(online_time_result, 10, 15) # 15-20分钟 online_15_20 = _get_online_user_num(online_time_result, 15, 20) # 20-25分钟 online_20_25 = _get_online_user_num(online_time_result, 20, 25) # 25-30分钟 online_25_30 = _get_online_user_num(online_time_result, 25, 30) # 30-35分钟 online_30_35 = _get_online_user_num(online_time_result, 30, 35) # 35-40分钟 online_35_40 = _get_online_user_num(online_time_result, 35, 40) # 40-45分钟 online_40_45 = _get_online_user_num(online_time_result, 40, 45) # 45-50分钟 online_45_50 = _get_online_user_num(online_time_result, 45, 50) # 50-55分钟 online_50_55 = _get_online_user_num(online_time_result, 50, 55) # 55-60分钟 online_55_60 = _get_online_user_num(online_time_result, 55, 60) # 60-90分钟 online_60_90 = _get_online_user_num(online_time_result, 60, 90) # 90-120分钟 online_90_120 = _get_online_user_num(online_time_result, 90, 120) # 120分钟以上 online_120_99999 = _get_online_user_num(online_time_result, 120, 99999) row_lst.append(show_date_str) row_lst.append(today_login_user_num) row_lst.append(cur_online_num) row_lst.append(today_max_online_num) row_lst.append(online_5) row_lst.append(online_5_10) row_lst.append(online_10_15) row_lst.append(online_15_20) row_lst.append(online_20_25) row_lst.append(online_25_30) row_lst.append(online_30_35) row_lst.append(online_35_40) row_lst.append(online_40_45) row_lst.append(online_45_50) row_lst.append(online_50_55) row_lst.append(online_55_60) row_lst.append(online_60_90) row_lst.append(online_90_120) row_lst.append(online_120_99999) table_lst.append(row_lst) return table_lst