def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): # 搜索日期到今天的所有日志 retained_day = search_start_date - datetime.timedelta(days=4) 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_lst = daily_log_dat.filter_logs( all_log_lst, action=game_define.EVENT_ACTION_ROLE_LOGIN) # 获取日期数 search_days = (search_end_date - search_start_date).days table_result = [] for i in xrange(search_days + 1): cur_date = search_start_date + datetime.timedelta(days=i) # 今日全部日志 today_login_lst = daily_log_dat.get_new_log_lst_with_log( all_login_lst, cur_date, cur_date) # 获取登录日志列表 today_login_uid_lst = daily_log_dat.get_set_with_key( today_login_lst, 'uid') today_new_user_login_lst = daily_log_dat.filter_logs( today_login_lst, function=lambda log: log['install'] == cur_date) today_new_user_uid_num = daily_log_dat.get_set_num_with_key( today_new_user_login_lst, 'uid') # 登录用户数 today_login_uid_num = len(today_login_uid_lst) # 活跃用户数 today_active_uid_num = today_new_user_uid_num # 流失用户(3天内没登录) today_lost_uid_num = len( daily_log_dat.get_lost_user_set(all_login_lst, cur_date)) # 回流用户(3天内没登录 但今天登录) login_back_num = len( daily_log_dat.get_lost_back_user_set(all_login_lst, cur_date)) row = [ cur_date.strftime("%m/%d/%Y"), today_login_uid_num, today_active_uid_num, today_lost_uid_num, login_back_num ] table_result.append(row) return table_result
def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): # 搜索日期到今天的所有日志 retained_day = search_start_date - datetime.timedelta(days=4) 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_lst = daily_log_dat.filter_logs(all_log_lst, action=game_define.EVENT_ACTION_ROLE_LOGIN) # 获取日期数 search_days = (search_end_date - search_start_date).days table_result = [] for i in xrange(search_days + 1): cur_date = search_start_date + datetime.timedelta(days=i) # 今日全部日志 today_login_lst = daily_log_dat.get_new_log_lst_with_log(all_login_lst, cur_date, cur_date) # 获取登录日志列表 today_login_uid_lst = daily_log_dat.get_set_with_key(today_login_lst, "uid") today_new_user_login_lst = daily_log_dat.filter_logs( today_login_lst, function=lambda log: log["install"] == cur_date ) today_new_user_uid_num = daily_log_dat.get_set_num_with_key(today_new_user_login_lst, "uid") # 登录用户数 today_login_uid_num = len(today_login_uid_lst) # 活跃用户数 today_active_uid_num = today_new_user_uid_num # 流失用户(3天内没登录) today_lost_uid_num = len(daily_log_dat.get_lost_user_set(all_login_lst, cur_date)) # 回流用户(3天内没登录 但今天登录) login_back_num = len(daily_log_dat.get_lost_back_user_set(all_login_lst, cur_date)) row = [ cur_date.strftime("%m/%d/%Y"), today_login_uid_num, today_active_uid_num, today_lost_uid_num, login_back_num, ] table_result.append(row) return table_result
def get_table(search_date, server_id): # 搜索日期到今天的所有日志 retained_day = search_date - datetime.timedelta(days=4) all_login_lst = [] total_days = (search_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_lst = mysql_util.get_role_action_lst( 'EVENT_ACTION_ROLE_LOGIN' + str(date_str), search_date, search_date, -1, server_id, None, None) all_login_lst.extend(login_lst) table_result = [] cur_date = search_date # 今日全部日志 today_login_lst = daily_log_dat.get_new_log_lst_with_log( all_login_lst, cur_date, cur_date) # 获取登录日志列表 today_login_uid_lst = daily_log_dat.get_set_with_key( today_login_lst, 'uid') today_new_user_login_lst = daily_log_dat.filter_logs( today_login_lst, function=lambda log: log['install'] == cur_date) today_new_user_uid_num = daily_log_dat.get_set_num_with_key( today_new_user_login_lst, 'uid') # 登录用户数 today_login_uid_num = len(today_login_uid_lst) # 活跃用户数 today_active_uid_num = today_new_user_uid_num # 流失用户(3天内没登录) today_lost_uid_num = len( daily_log_dat.get_lost_user_set(all_login_lst, cur_date)) # 回流用户(3天内没登录 但今天登录) login_back_num = len( daily_log_dat.get_lost_back_user_set(all_login_lst, cur_date)) row = [ cur_date.strftime("%m/%d/%Y"), today_login_uid_num, today_active_uid_num, today_lost_uid_num, login_back_num ] table_result.append(row) return table_result
def get_table(search_date, server_id): # 搜索日期到今天的所有日志 retained_day = search_date - datetime.timedelta(days=4) all_login_lst = [] total_days = (search_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_lst = mysql_util.get_role_action_lst( "EVENT_ACTION_ROLE_LOGIN" + str(date_str), search_date, search_date, -1, server_id, None, None ) all_login_lst.extend(login_lst) table_result = [] cur_date = search_date # 今日全部日志 today_login_lst = daily_log_dat.get_new_log_lst_with_log(all_login_lst, cur_date, cur_date) # 获取登录日志列表 today_login_uid_lst = daily_log_dat.get_set_with_key(today_login_lst, "uid") today_new_user_login_lst = daily_log_dat.filter_logs( today_login_lst, function=lambda log: log["install"] == cur_date ) today_new_user_uid_num = daily_log_dat.get_set_num_with_key(today_new_user_login_lst, "uid") # 登录用户数 today_login_uid_num = len(today_login_uid_lst) # 活跃用户数 today_active_uid_num = today_new_user_uid_num # 流失用户(3天内没登录) today_lost_uid_num = len(daily_log_dat.get_lost_user_set(all_login_lst, cur_date)) # 回流用户(3天内没登录 但今天登录) login_back_num = len(daily_log_dat.get_lost_back_user_set(all_login_lst, cur_date)) row = [cur_date.strftime("%m/%d/%Y"), today_login_uid_num, today_active_uid_num, today_lost_uid_num, login_back_num] table_result.append(row) return table_result
def get_table(search_start_date, search_end_date, channel_id=-1, server_id=-1): """ 获取统计总表 search_start_date 查询开始时间 search_end_date 查询结束时间 """ start_log_time = datetime.datetime.strptime(game_define.LOCAL_LOG_START_DATE, '%Y-%m-%d').date() # 获取搜索区间日志 new_log_lst = daily_log_dat.get_new_log_lst(search_start_date, search_end_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) # pay_code_log_lst = daily_log_dat.filter_logs(new_log_lst, action=game_define.EVENT_ACTION_RECHARGE_PLAYER) # pay_code_res = dict() # for log in pay_code_log_lst: # plat = game_define.PLAT_FORM_NAME_DICT[log['platform_id']] # if plat in pay_code_res: # pay_code_res[plat].append(log['order_id']) # else: # pay_code_res[plat] = [log['order_id']] # print("订单 " + str(pay_code_res)) # 总天数 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) row_yesterday_date = row_date - datetime.timedelta(days=1) # print("-------------------------------"+str(row_date)+"---------------------------------------------") # 获取到昨天的全部日志 until_yesterday_all_log_lst = daily_log_dat.get_new_log_lst(start_log_time, row_yesterday_date) # # 获取上一天开始的所有设备数 until_yesterday_all_device = daily_log_dat.get_set_with_key(until_yesterday_all_log_lst, 'dev_id') # # 到昨天为止登录用户数 # # yesterday_all_user_num = daily_log_dat.get_set_num_with_key(yesterday_all_log_lst, 'uid') # # # 到昨天为止的登录账户 # # yesterday_all_account_num = daily_log_dat.get_set_num_with_key(yesterday_all_log_lst, 'account_id') # # # 到昨天为止充值人数 # # yesterday_all_recharge_user_num = daily_log_dat.get_set_num_with_key(yesterday_all_log_lst, 'uid', game_define.EVENT_ACTION_RECHARGE_PLAYER) # # # 获取到今天的所有日志 # until_today_all_log_lst = daily_log_dat.get_new_log_lst(start_log_time, row_date) # # 到今天为止所有设备数 # until_today_all_device_num = daily_log_dat.get_set_num_with_key(until_today_all_log_lst, 'dev_id') # # # 到今天为止的登录用户数 # # today_all_user_num = daily_log_dat.get_set_num_with_key(today_all_log_lst, 'uid') # # # 到今天为止的登录账户 # # today_all_account_num = daily_log_dat.get_set_num_with_key(today_all_log_lst, 'account_id') # # # 到今天为止充值人数 # # # today_all_recharge_user_num = daily_log_dat.get_set_num_with_key(today_all_log_lst, 'uid', game_define.EVENT_ACTION_RECHARGE_PLAYER) # 今天的日志 today_log_lst = daily_log_dat.get_new_log_lst_with_log(new_log_lst, row_date, row_date) # 今天登录设备数 today_device_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'dev_id') # 今天的登录用户数 today_user_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid') # 今天新增用户数 today_new_user_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', function=lambda log:log['install'] == row_date) #新设备数 today_new_device_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'dev_id', action=game_define.EVENT_ACTION_ROLE_LOGIN, function=lambda log:log['dev_id'] not in until_yesterday_all_device) # 新账户数 today_new_account_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'account_id', action=game_define.EVENT_ACTION_ROLE_LOGIN, function=lambda log:log['install'] == row_date) # 今天的登录账户 today_account_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'account_id') # 今天充值人数 today_recharge_user_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_RECHARGE_PLAYER) # 今天新增充值人数 today_new_recharge_user_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_RECHARGE_PLAYER, lambda log:log['cur_rmb']== log['add_rmb']) # 充值金额 today_recharge_rmb = daily_log_dat.get_sum_int_with_key(today_log_lst, 'add_rmb', game_define.EVENT_ACTION_RECHARGE_PLAYER) # 新增充值金额 today_new_recharge_rmb = daily_log_dat.get_sum_int_with_key(today_log_lst, 'add_rmb', game_define.EVENT_ACTION_RECHARGE_PLAYER, lambda log:log['cur_rmb']== log['add_rmb']) # 今天登录事件次数 today_login_action_num = daily_log_dat.get_list_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_ROLE_LOGIN) # 活跃设备数 today_active_device_num = today_device_num - today_new_device_num # 活跃用户数 today_active_user_num = today_user_num - today_new_user_num # 登录用户数 today_login_user_num = today_user_num # 登录设备数 today_login_device_num = today_device_num # 活跃账户数 today_active_account_num = today_account_num - today_new_account_num # print("-------------------------------"+str(row_date)+"---------------------------------------------") # print("充值玩家 " + str(daily_log_dat.get_set_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_RECHARGE_PLAYER))) # print("新增充值玩家 " + str(daily_log_dat.get_set_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_RECHARGE_PLAYER, lambda log:log['cur_rmb']== log['add_rmb']))) # print("充值金额列表 " + str(daily_log_dat.get_list_with_key(today_log_lst, 'add_rmb', game_define.EVENT_ACTION_RECHARGE_PLAYER))) # print("新增充值金额列表 " + str(daily_log_dat.get_list_with_key(today_log_lst, 'add_rmb', game_define.EVENT_ACTION_RECHARGE_PLAYER, lambda log:log['cur_rmb']== log['add_rmb']))) # 付费率=充值人数/登录设备 pay_rate = Division(today_recharge_user_num, today_login_device_num) # 付费arppu 充值金额/充值人数 pay_arppu = Division(today_recharge_rmb, today_recharge_user_num) # 登录arpu 充值金额/登陆设备 login_arpu = Division(today_recharge_rmb, today_login_device_num) # 半小时精度在线人数列表 online_user_num_lst = daily_log_dat.get_online_user_len_lst(row_date, today_log_lst) # 平均在线人数 acu acu = _get_acu(online_user_num_lst) # 最高在线人数 pcu = _get_pcu(online_user_num_lst) # 平均在线时长 avg_online_time = _get_avg_online_time(online_user_num_lst, today_login_user_num) # 人均登入次数 avg_login_count = _get_avg_login_count(today_login_action_num, today_login_user_num) # 获取玩家安装游戏日期 install_date = row_date - datetime.timedelta(days=1) retained_1_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_ROLE_LOGIN, lambda log:log['install'] == install_date) install_date = row_date - datetime.timedelta(days=3) retained_3_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_ROLE_LOGIN, lambda log:log['install'] == install_date) install_date = row_date - datetime.timedelta(days=7) retained_7_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_ROLE_LOGIN, lambda log:log['install'] == install_date) install_date = row_date - datetime.timedelta(days=15) retained_15_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_ROLE_LOGIN, lambda log:log['install'] == install_date) install_date = row_date - datetime.timedelta(days=30) retained_30_num = daily_log_dat.get_set_num_with_key(today_log_lst, 'uid', game_define.EVENT_ACTION_ROLE_LOGIN, lambda log:log['install'] == install_date) row_lst.append(row_date.strftime('%Y-%m-%d')) row_lst.append(today_active_device_num) row_lst.append(today_active_user_num) row_lst.append(today_new_device_num) row_lst.append(today_new_user_num) row_lst.append(today_login_device_num) row_lst.append(today_login_user_num) row_lst.append(today_active_account_num) row_lst.append(today_new_account_num) row_lst.append(today_recharge_user_num) row_lst.append(today_new_recharge_user_num) row_lst.append(today_recharge_rmb) row_lst.append(today_new_recharge_rmb) row_lst.append(pay_rate) row_lst.append(pay_arppu) row_lst.append(login_arpu) row_lst.append(acu) row_lst.append(pcu) row_lst.append(avg_online_time) row_lst.append(avg_login_count) row_lst.append(retained_1_num) row_lst.append(retained_3_num) row_lst.append(retained_7_num) row_lst.append(retained_15_num) row_lst.append(retained_30_num) table_lst.append(row_lst) # print("table_lst " + str(table_lst)) return table_lst