Пример #1
0
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
Пример #2
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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
Пример #10
0
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
Пример #11
0
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