forum.bitel.ru http://forum.bitel.ru/ |
|
Подробный отчёт по inet http://forum.bitel.ru/viewtopic.php?f=12&t=8747 |
Страница 1 из 1 |
Автор: | LёLik [ 05 дек 2013, 17:14 ] |
Заголовок сообщения: | Подробный отчёт по inet |
Хочу сделать отчёт. Что-то типа расширенного отчёта по трафикам, но столбцы дожны быть: номер договора, входящий трафик, исходящий трафик, суммарный трафик, сумма денег, тариф(?) Фильтры как в расширенном отчёте по трафикам. Где можно найти описание bitel.billing.server.reports.BGCSVReport.ReportResult result В http://bgbilling.ru/v6.0/javadoc/index.html не нашел. Как правильно отлаживать код, запускать прям на сервере? Явой владею слабо, но отступать некуда ) |
Автор: | skyb [ 05 дек 2013, 17:29 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
смотрите документацию, там все изложено. Код, да, к сожалению придется запускать на самом сервере, но я думаю тут sql запроса хватит. |
Автор: | LёLik [ 06 дек 2013, 18:02 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
Вопрос, по БД В таблицах inet_session_log_detail_{mid}_yyyyMM.amount и inet_session_log_account_{mid}_yyyyMM.amount содержатся одинаковые значения при одинаковых sessionId ? |
Автор: | LёLik [ 06 дек 2013, 19:53 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
Написал такой вот запрос: Код: SELECT contract.title, /*название договора*/ contract.id, /*код договора*/ account.contractId, /*код устройства?*/ SUM(account.amount), /*наработка сессии в байтах/секундах*/ SUM(account.account) /*наработка сессии в рублях*/ FROM inet_session_log_account_2_201311 AS account /* наработка по услугам для завершенных сесиий*/ LEFT JOIN inet_session_log_2_201311 AS session_log /*завершенные сессии */ ON account.sessionId = session_log.id LEFT JOIN inet_serv_2 AS serv /*сервис*/ ON session_log.servId = serv.id LEFT JOIN contract as contract /*договор*/ ON serv.contractId = contract.id GROUP BY contract.id WITH ROLLUP; Получил ответ: title id contractId SUM(account.amount) SUM(account.account) NULL NULL 7 7395906 14.09970 20131111 8 8 2875899799 5482.15660 20131119-01 11 11 31292779 74.55269 20131121-01 12 12 1523362085 2905.08904 20131121-02 13 13 1585210888 3023.27055 20131129-04 15 15 1474693748 2812.64713 20131129-07 18 18 12285738 23.40995 20131129-07 NULL 18 7510140943 14335.22566 Деньги вроде совпадают, с тем, что видно в клиенте, а вот трафик не очень. Также непонятен столбец inet_session_log_account_{mid}_yyyyMM.contractId описанный в документации, как код устройства. Как видно из результата запроса, он совпадает с id договора, кроме тех случаев, где id договора NULL. Знающие люди, прокомментируйте. |
Автор: | skyb [ 07 дек 2013, 11:49 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
http://dbinfo.bitel.ru/ |
Автор: | LёLik [ 09 дек 2013, 13:21 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
skyb писал(а): http://dbinfo.bitel.ru/ Краткость сестра таланта. Если есть люди, способные развёрнуто пояснить нижеследующее, откликнитесь. LёLik писал(а): Также непонятен столбец inet_session_log_account_{mid}_yyyyMM.contractId описанный в документации, как код устройства. Как видно из результата запроса, он совпадает с id договора, кроме тех случаев, где id договора NULL. Также интересно в чём разница между: inet_session_log_detail_{mid}_yyyyMM.amount /*наработка сессии в байтах/минутах*/ inet_session_log_account_{mid}_yyyyMM.amount /*наработка сессии в байтах/секундах*/ Откуда правильнее брать данные. |
Автор: | LёLik [ 09 дек 2013, 13:52 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
Люди глубоко понимающие SQL хелп! Это "расширенный отчёт по траффикам" Код: SELECT * FROM ( SELECT SUM(a.amount), contract.title as cttl, type.title, type.id AS tid, contract.id FROM inet_session_log_detail_2_201311 AS a LEFT JOIN inet_session_log_2_201311 AS log ON a.sessionId=log.id LEFT JOIN inet_serv_2 AS serv ON log.servId=serv.id LEFT JOIN inet_traffic_type_2 AS type ON a.trafficTypeId=type.id LEFT JOIN contract AS contract ON serv.contractId=contract.id GROUP BY tid, contract.id WITH ROLLUP) AS pres ORDER BY pres.id DESC, pres.title DESC Я его правлю, чтобы считал типы трафика вместе Код: SELECT * FROM ( SELECT SUM(a.amount), contract.title as cttl, contract.id FROM inet_session_log_detail_2_201311 AS a /*детализация завершенных сессий*/ LEFT JOIN inet_session_log_2_201311 AS log /*завершенные сессии*/ ON a.sessionId=log.id LEFT JOIN inet_serv_2 AS serv /*сервис*/ ON log.servId=serv.id LEFT JOIN contract AS contract ON serv.contractId=contract.id GROUP BY contract.id WITH ROLLUP) AS pres ORDER BY pres.id DESC; результаты разные 0_о в родном отчёте в суммарном 20131129-07 12273551 12285738 20131129-04 1474637138 1474693748 Кто понимает, поясните. ЗЫ: Выяснилось, что в базе есть записи вида SUM(a.amount) cttl title tid id 12187 20131129-07 NULL NULL 18 |
Автор: | LёLik [ 09 дек 2013, 17:42 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
SQL запрос, для получения искомой таблицы: Код: SELECT pres.title, pres.amount, money.account FROM ( SELECT SUM(a.amount) AS amount, contract.title AS title, contract.id FROM inet_session_log_detail_2_201311 AS a LEFT JOIN inet_session_log_2_201311 AS log ON a.sessionId=log.id LEFT JOIN inet_serv_2 AS serv ON log.servId=serv.id LEFT JOIN inet_traffic_type_2 AS type ON a.trafficTypeId=type.id LEFT JOIN contract AS contract ON serv.contractId=contract.id WHERE a.trafficTypeId IN (1,2) GROUP BY contract.id WITH ROLLUP ) AS pres LEFT JOIN ( SELECT SUM(account.account) AS account, contract.title, contract.id FROM inet_session_log_account_2_201311 AS account LEFT JOIN inet_session_log_2_201311 AS log ON account.sessionId = log.id LEFT JOIN inet_serv_2 AS serv ON log.servId = serv.id LEFT JOIN contract AS contract ON serv.contractId=contract.id GROUP BY contract.id WITH ROLLUP ) AS money ON pres.id = money.id ORDER BY pres.id DESC Фильтр и Java выложу, как доделаю, может пригодится кому. Критика приветствуется. |
Автор: | stark [ 15 янв 2014, 17:14 ] |
Заголовок сообщения: | Re: Подробный отчёт по inet |
LёLik писал(а): skyb писал(а): http://dbinfo.bitel.ru/ Краткость сестра таланта. Если есть люди, способные развёрнуто пояснить нижеследующее, откликнитесь. LёLik писал(а): Также непонятен столбец inet_session_log_account_{mid}_yyyyMM.contractId описанный в документации, как код устройства. Как видно из результата запроса, он совпадает с id договора, кроме тех случаев, где id договора NULL. Опечатка там, исправлено. LёLik писал(а): Также интересно в чём разница между: inet_session_log_detail_{mid}_yyyyMM.amount /*наработка сессии в байтах/минутах*/ inet_session_log_account_{mid}_yyyyMM.amount /*наработка сессии в байтах/секундах*/ Откуда правильнее брать данные. detail - наработка в байтах в разрезе часов для каждой сессии. account - наработка в байтах и в рублях в разрезе услуг для каждой сессии. В общем случае могут не совпадать. |
Автор: | LёLik [ 13 фев 2014, 15:22 ] | |||
Заголовок сообщения: | Re: Подробный отчёт по inet | |||
Сделано на коленке, поэтому код придётся немного править под себя.
|
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |