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
示例#3
0
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