![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
jerryk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.10.2010 Репутация: нет Всего: нет |
Есть исходный лог файл:
JOB JOB JOB USER TIMESTAMP NAME USER NUMBER PROFILE -------------------------- ---------- ---------- -------- ---------- 2010-08-05-01.29.46.371792 PK12 USDFRI 676,559 USDFRI 2010-08-05-05.29.29.728160 PK12 USDFRI 676,548 USDFRI 2010-08-05-05.37.55.225248 PK12 USDFRI 677,131 USDFRI 2010-08-05-05.38.59.297712 PK606 ONOUOU 677,130 ONOUOU 2010-08-05-05.40.46.528384 PK667 CRETVY 677,147 CRETVY 2010-08-05-05.41.28.027632 PK606 ONOUOU 677,152 ONOUOU 2010-08-05-05.41.38.743824 PK606 ONOUOU 677,157 ONOUOU 2010-08-05-05.41.45.233696 PK436 DFG557N 677,163 DFG557N нужно только эти два столбца(файл уже распотрошил): 2010-08-05-01.29.46.371792;USDFRI 2010-08-05-05.29.29.728160;USDFRI 2010-08-05-05.37.55.225248;USDFRI 2010-08-05-05.38.59.297712;ONOUOU 2010-08-05-05.40.46.528384;CRETVY 2010-08-05-05.41.28.027632;ONOUOU 2010-08-05-05.41.38.743824;ONOUOU 2010-08-05-05.41.45.233696;DFG557N На выходе надо получить таблицу с максимальным количеством уникальных пользователей за период:минуту, две, и тд. до 9часов. Время выхода мы не знаем. вот такого плана: период;максимальное кол-во пользователей 1;4 2;4 3;5 4;6 5;6 .. 9часов;n Заранее спасибо! Это сообщение отредактировал(а) jerryk - 5.10.2010, 21:25 |
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Во-первых. Для данной задачи, на мой взгляд, удобнее использовать время не в полном формате, а преобразовать в дельту (например, в секундах) относительно предыдущей записи.
Т.е. вместо, например: 2010-08-05-05.29.29.728160;USDFRI 2010-08-05-05.37.55.225248;USDFRI 2010-08-05-05.38.59.297712;ONOUOU сделать что-то типа: 0;USDFRI 505.5;USDFRI 64.07;ONOUOU Поскольку Вы лог предварительно обрабатываете, то это сделать не сложно. Подсчет количества уникальных профилей в единицу времени я бы реализовал так:
меняя $period, получим нужные значения максимального количества профилей $maxProfiles Также можно преобразовать код для того чтобы посчитать сразу все периоды за один проход лога. Для этого нужно завести отдельные наборы переменных для каждого периода. P.S. Приведенный код не тестировал, поэтому возможны ошибки а также опечатки. Но общий принцип думаю из него понятен. Также не исключаю существования более эффективного способа (по расходу памяти и других ресурсов) ![]() |
|||
|
||||
jerryk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.10.2010 Репутация: нет Всего: нет |
Спасибо большое!
Но почемуто все время выдает единицу. |
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
пропустил решетки |
|||
|
||||
jerryk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.10.2010 Репутация: нет Всего: нет |
Да с решетками заработало, только код считает общее(весь лог) максимальное кол-во пользователей, т.к. дельта относительно предыдущей записи получатся меньше 60.....
|
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Как спросили, так и ответил. В вопросе не было сказано, нужно ли обрабатывать весь лог или только его часть. |
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
в этом блоке тоже ошибся:
|
|||
|
||||
jerryk |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.10.2010 Репутация: нет Всего: нет |
Все правильно обрабатывать надо весь лог. Сорри, все отлично еще раз спасибо! Это сообщение отредактировал(а) jerryk - 11.10.2010, 11:49 |
||||
|
|||||
DEER |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 1 Всего: 13 |
а что за решетки? где почитать? -------------------- |
||||
|
|||||
maxgray |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 6.5.2010 Репутация: нет Всего: нет |
Это индекс последнего элемента массива. |
|||
|
||||
JavaCraft |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Я так понимаю, юзеры в базе уже хранятся, не проще(правильнее) через базу? Обычный запрос с агрегацией.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |