def get_table(search_start_date, search_end_date, register_start_date=None, register_end_date=None, channel_id=-1, server_id=-1, player_min_level=1, player_max_level=999): #获取搜索区间日志 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) #获取符合条件的日志 if register_start_date and register_end_date: new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda log: register_start_date <= log['install'] <= register_end_date) # 适配等级 if player_min_level and player_max_level: new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda x: player_min_level <= x['level'] <= player_max_level) individual_action_lst = [ game_define.EVENT_ACTION_RESET_INDIVIDUAL_MONSTER, game_define.EVENT_ACTION_STONE_RESET_INDIVIDUAL_MONSTER ] reset_individual_logs = daily_log_dat.filter_logs(new_log_lst, function=lambda log: log['action'] in individual_action_lst) table_lst = [] monster_tid_dict = daily_log_dat.split_log_with_key_value(reset_individual_logs, 'monster_tid') for key in monster_tid_dict.keys(): _tid = key _name = key if _tid in monster_tid_dict: _logs = monster_tid_dict[_tid] # 获取用户次数字典 user_dict = daily_log_dat.split_log_with_key_value(_logs, 'uid') reset_50_user_num = get_reset_individual_user_num(user_dict, 1, 50) reset_50_100_user_num = get_reset_individual_user_num(user_dict, 51, 100) reset_100_200_user_num = get_reset_individual_user_num(user_dict, 101, 200) reset_200_400_user_num = get_reset_individual_user_num(user_dict, 201, 400) reset_400_800_user_num = get_reset_individual_user_num(user_dict, 401, 800) reset_up_800_user_num = get_reset_individual_user_num(user_dict, 801, 10000) row_lst = [_name, reset_50_user_num, reset_50_100_user_num, reset_100_200_user_num, reset_200_400_user_num, reset_400_800_user_num, reset_up_800_user_num] table_lst.append(row_lst) return table_lst
def get_table(search_start_date, search_end_date, register_start_date=None, register_end_date=None, channel_id=-1, server_id=-1): """ 获取展示表格 register_start_date 注册开始时间 register_end_date 注册结束时间 search_start_date 查询开始时间 search_end_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) #获取符合条件的日志 if register_start_date and register_end_date: new_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda log: register_start_date <= log['install'] <= register_end_date) # 截取日志到 副本事件 stage_action_lst = [ game_define.EVENT_ACTION_TREASURE_BATTLE_WIN, game_define.EVENT_ACTION_TREASURE_BATTLE_FAIL ] stage_action_log_lst = daily_log_dat.filter_logs(new_log_lst, function=lambda log: log['action'] in stage_action_lst) #根据action 拆分日志 stage_action_log_dict = daily_log_dat.split_log_with_key_value(stage_action_log_lst, 'stage_index') # 遍历所有的关卡日志 type_name_lst = [u'普通副本',u'精英副本',u'英雄副本',u'经验副本',u'金币副本',u'抓宠副本',u'世界BOSS副本',u'修行',u'夺宝'] table_lst = [] for _stage_index, _logs in stage_action_log_dict.items(): #拆分日志 - 胜利部分 _win_logs = daily_log_dat.filter_logs(_logs, action=game_define.EVENT_ACTION_STAGE_BATTLE_WIN) #拆分日志 - 失败部分 _fail_logs = daily_log_dat.filter_logs(_logs, action=game_define.EVENT_ACTION_STAGE_BATTLE_FAIL) #拆分日志 - 扫荡部分 # _mop_logs = daily_log_dat.filter_logs(_logs, action=game_define.EVENT_ACTION_STAGE_MOP) # 副本难度 # 副本名称 stage_name = '11' # 副本类型 stage_type_name = type_name_lst[1] # 挑战次数 challenge_num = len(_logs) # 通过次数 win_num = len(_win_logs) # 扫荡次数 # mop_num = len(_mop_logs) # 成功率 win_rate = 0 if challenge_num: win_rate = round(float(win_num)/float(challenge_num),2) # 首次挑战次数 first_challenge_num = 0 #首次挑战成功次数 first_challenge_win = 0 # 普通类型 副本名称 挑战数 通过数 扫荡次数 成功率 首次挑战次数 首次挑战成功次数 row_lst = [stage_type_name, stage_name, challenge_num, win_num, win_rate, first_challenge_num, first_challenge_win] table_lst.append(row_lst) if len(table_lst) > 0: print (str(table_lst[0]) +"treasure lens is ::"+ str(len(table_lst))) return table_lst
def get_table(search_start_date, search_end_date, register_start_date=None, register_end_date=None, channel_id=-1, server_id=-1, player_min_level=1, player_max_level=999): #获取搜索区间日志 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) #获取符合条件的日志 if register_start_date and register_end_date: new_log_lst = daily_log_dat.filter_logs( new_log_lst, function=lambda log: register_start_date <= log[ 'install'] <= register_end_date) # 适配等级 if player_min_level and player_max_level: new_log_lst = daily_log_dat.filter_logs( new_log_lst, function=lambda x: player_min_level <= x['level' ] <= player_max_level) individual_action_lst = [ game_define.EVENT_ACTION_RESET_INDIVIDUAL_MONSTER, game_define.EVENT_ACTION_STONE_RESET_INDIVIDUAL_MONSTER ] reset_individual_logs = daily_log_dat.filter_logs( new_log_lst, function=lambda log: log['action'] in individual_action_lst) table_lst = [] monster_tid_dict = daily_log_dat.split_log_with_key_value( reset_individual_logs, 'monster_tid') for key in monster_tid_dict.keys(): _tid = key _name = key if _tid in monster_tid_dict: _logs = monster_tid_dict[_tid] # 获取用户次数字典 user_dict = daily_log_dat.split_log_with_key_value(_logs, 'uid') reset_50_user_num = get_reset_individual_user_num(user_dict, 1, 50) reset_50_100_user_num = get_reset_individual_user_num( user_dict, 51, 100) reset_100_200_user_num = get_reset_individual_user_num( user_dict, 101, 200) reset_200_400_user_num = get_reset_individual_user_num( user_dict, 201, 400) reset_400_800_user_num = get_reset_individual_user_num( user_dict, 401, 800) reset_up_800_user_num = get_reset_individual_user_num( user_dict, 801, 10000) row_lst = [ _name, reset_50_user_num, reset_50_100_user_num, reset_100_200_user_num, reset_200_400_user_num, reset_400_800_user_num, reset_up_800_user_num ] table_lst.append(row_lst) return table_lst
def get_table(search_start_date, search_end_date, register_start_date=None, register_end_date=None, channel_id=-1, server_id=-1): """ 获取展示表格 register_start_date 注册开始时间 register_end_date 注册结束时间 search_start_date 查询开始时间 search_end_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) #获取符合条件的日志 if register_start_date and register_end_date: new_log_lst = daily_log_dat.filter_logs( new_log_lst, function=lambda log: register_start_date <= log[ 'install'] <= register_end_date) # 截取日志到 副本事件 stage_action_lst = [ game_define.EVENT_ACTION_TREASURE_BATTLE_WIN, game_define.EVENT_ACTION_TREASURE_BATTLE_FAIL ] stage_action_log_lst = daily_log_dat.filter_logs( new_log_lst, function=lambda log: log['action'] in stage_action_lst) #根据action 拆分日志 stage_action_log_dict = daily_log_dat.split_log_with_key_value( stage_action_log_lst, 'stage_index') # 遍历所有的关卡日志 type_name_lst = [ u'普通副本', u'精英副本', u'英雄副本', u'经验副本', u'金币副本', u'抓宠副本', u'世界BOSS副本', u'修行', u'夺宝' ] table_lst = [] for _stage_index, _logs in stage_action_log_dict.items(): #拆分日志 - 胜利部分 _win_logs = daily_log_dat.filter_logs( _logs, action=game_define.EVENT_ACTION_STAGE_BATTLE_WIN) #拆分日志 - 失败部分 _fail_logs = daily_log_dat.filter_logs( _logs, action=game_define.EVENT_ACTION_STAGE_BATTLE_FAIL) #拆分日志 - 扫荡部分 # _mop_logs = daily_log_dat.filter_logs(_logs, action=game_define.EVENT_ACTION_STAGE_MOP) # 副本难度 # 副本名称 stage_name = '11' # 副本类型 stage_type_name = type_name_lst[1] # 挑战次数 challenge_num = len(_logs) # 通过次数 win_num = len(_win_logs) # 扫荡次数 # mop_num = len(_mop_logs) # 成功率 win_rate = 0 if challenge_num: win_rate = round(float(win_num) / float(challenge_num), 2) # 首次挑战次数 first_challenge_num = 0 #首次挑战成功次数 first_challenge_win = 0 # 普通类型 副本名称 挑战数 通过数 扫荡次数 成功率 首次挑战次数 首次挑战成功次数 row_lst = [ stage_type_name, stage_name, challenge_num, win_num, win_rate, first_challenge_num, first_challenge_win ] table_lst.append(row_lst) if len(table_lst) > 0: print(str(table_lst[0]) + "treasure lens is ::" + str(len(table_lst))) return table_lst