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

Сделано на коленке, поэтому код придётся немного править под себя.

Вложения:
inet_satis_account.rep.xml.txt [603 байт]
Скачиваний: 393
inet_satis_account.java.txt [5.31 КБ]
Скачиваний: 581

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/