BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 02:45

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: 11 ноя 2014, 15:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Добавьте пожалуйста индекс в таблицу phone_geographic_code_{mid}, чтобы он автоматически создавался каждый месяц.

Код:
ALTER TABLE phone_geographic_code_10 ADD INDEX (dest_id);


Без этого индекса запрос
Код:
SELECT c.id, c.title, c.comment, ls.session_start, ls.session_time, ls.round_session_time, ls.from_number, ls.from_number_164, ls.to_number, ls.to_number_164, pc.code, pd.title
FROM log_session_10_201407 AS ls
LEFT JOIN contract AS c ON c.id = ls.cid
LEFT JOIN phone_dest_10 AS pd ON pd.id = ls.dest_id
LEFT JOIN phone_geographic_code_10 AS pc ON pc.dest_id = pd.id
ORDER BY ls.session_start

просто неприлично долго выполняется.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 ноя 2014, 18:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Затупил.
Скрипт в корне неверный.
Он дублирует звонки т.к. к одному направлению может относится несколько географических кодов.

Тогда сразу вопрос.
Как можно узнать по какому географическому коду совершен звонок?

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 ноя 2014, 18:37 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
На правах оффтопа.
Настолько странно хранить данные по звонкам нужно еще умудриться.
Для того, чтобы например получить данные по звонкам совершенным по определенному маршруту из базы, достаточно одного SQL запроса, в случае если это было бы по двум таблицам.
Но т.к. сырые логи хранятся в подневных таблицах :!: , то надо к каждому звонку вычислять в какой-же таблице он хранится по полю hour, потом искать по cdr_id.
Изврат какой-то как по мне :o

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 ноя 2014, 19:04 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Phricker писал(а):
Он дублирует звонки т.к. к одному направлению может относится несколько географических кодов.

У вас в стандартном отчете модуля Reports phone_dest_ts, кстати точно такая же ошибка.
Отчет выводит направление и код. Но т.к. к одному направлению относятся несколько кодов - он выводит только 1.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 ноя 2014, 00:07 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Phricker писал(а):
Как можно узнать по какому географическому коду совершен звонок?

АП.
Кучу отчетов надо написать в ближайшие дни :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 ноя 2014, 20:14 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Phricker писал(а):
На правах оффтопа.
Настолько странно хранить данные по звонкам нужно еще умудриться.
Для того, чтобы например получить данные по звонкам совершенным по определенному маршруту из базы, достаточно одного SQL запроса, в случае если это было бы по двум таблицам.
Но т.к. сырые логи хранятся в подневных таблицах :!: , то надо к каждому звонку вычислять в какой-же таблице он хранится по полю hour, потом искать по cdr_id.
Изврат какой-то как по мне :o


Узнаем через какой порт прошел звонок
Код:
String    query = " SELECT ls.cdr_id, ls.hour " +
                  " FROM log_session_10_201406 AS ls " +
                  " ORDER BY ls.session_start ";
      
PreparedStatement ps = con.prepareStatement( query );
ResultSet rs = ps.executeQuery();
            
while( rs.next() )
   {
   int cdrId = rs.getInt( "ls.cdr_id" );
   Date cdrHour = rs.getDate( "ls.hour" );
   
   String tableName = TimeUtils.format(cdrHour, "yyyyMMdd");
         
   String    cdrQuery = " SELECT from_port, to_port FROM data_log_10_" + tableName + " WHERE id = " + cdrId;
   PreparedStatement psCdr = con.prepareStatement( cdrQuery );
   ResultSet rsCdr = psCdr.executeQuery();
   while( rsCdr.next() )
      {
         int from_port = rsCdr.getInt("from_port");
         int to_port = rsCdr.getInt("to_port");
      }
   rsCdr.close();
   psCdr.close();
   }
rs.close();
ps.close();


Изображение

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 ноя 2014, 20:51 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
а как было бы проще с
Код:
SELECT ls.session_start, ls.session_stop, ls.from_number, dl.from_port, ls.to_number, dl.to_port
FROM log_session_10_201406 AS ls
LEFT JOIN data_log_10_201406 AS dl ON ls.cdr_id = dl.id

:oops:

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 ноя 2014, 21:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
А зачем лезть в сырые логи?
Одного log_session мало?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 ноя 2014, 23:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Экономистам нужны данные по трафику прошедшему через определенные маршруты. Т.е. например с маршрутов А,B,C на маршрут D.

Так же РТК у них запрашивает данные в виде
Изображение, где на каждый код направления необходимо суммировать кол-во минут, и разделять по категории клиента.

Таблица log_session не хранит в себе ни данных о маршруте (в BG маршрут == порт), ни данных о том, через какой код направления прошли звонки.

Причем ростелекомовский отчет насколько я знаю вполне официальный, и прописан в договоре.

Сейчас спасаемся тем, что помимо BG все еще используется старый биллинг по телефонии из которого делаем отчеты.
Но это же не может продолжаться вечность.
С августа 12 года телефония в БГ считается :)

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 ноя 2014, 07:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
У нас обычно в зависимости от порта в тарифе определяется услуга (оператор): "Телефония Ростелеком МГ/МН" например.
так что они косвенно в log_session всё равно присутствуют.
А код направления - это "зона" у вас?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 ноя 2014, 10:21 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код направления это phone_geographic_code_{mid}

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.132s | 40 Queries | GZIP : On ]