LINUX.ORG.RU

Биллинг


0

1

Кто знает какую бесплатную Биллинг систему,
чтобы из DBF-файла подсчитать количество звонков на каждое из направлениев,
суммируя стоимость и количество минут/сек?

Я конвертнул DBF используя dbview, подрихтовал кодировку с помощью enconv.
Теперь вид весьма приличный:

Call date  : 02.08.2010 16:17:24
A number   : 7978108
B number   : 810998931234567
Call time  : 00:01:00
Cost       : 2.8800
Zone name  : Uzbekistan (mob)
Type       : МН

Call date  : 30.08.2010 12:25:31
A number   : 7978108
B number   : 83851234567
Call time  : 00:02:00
Cost       : 2.4600
Zone name  : Алтайский край Барнаул (fix)
Type       : МГ

Но мне нужно все это парсить и считать, а мне жаль времени.
Может есть готовое решение?

★★★

Ответ на: комментарий от papay

Если тупо и просто - тебе нужно это открыть в OO Calc и там сделать:
1) сортировку по направлению (зоне), вторично можно по времени
2) группировку с суммированием по длительности и костам
В результате получишь перечень направлений (зон) с суммарной длительностью и стоимостью по зоне (направлению) и возможностью развернуть список звонков по зоне.
Это будет тоже самое что и:

select `Zone name`,
sum(`Call time`),
sum(`Cost`),
count(`Cost`)
from BillTable
group by `Zone name`

VinilNavigator
()
Ответ на: комментарий от VinilNavigator

Себя поправлю, в терминах Calc 2-й пункт будет звучать как «промежуточные итоги».

VinilNavigator
()
Ответ на: комментарий от VinilNavigator

VinilNavigator Спасибо, натолкнули на правильный путь!

А именно, я решил все делать через mysql :)

Итак, т.к. оригинал DBF имеет русские символы в cp866, то сперва я конвертнул DBF базу из CP866 в UTF8.
Делал это при помощи dbfpy ссылка на HOWTO: http://gis-lab.info/qa/dbf-encode.html
(Штатными средствами iconv и enconv, как я привык, не получалось, - нарушалась целостность базы)

python dbf-encode.py -f cp866 -t utf8 -n delta.dbf new.dbf

Далее конвертил DBF в SQL при помощи dbf2mysql:
dbf2mysql -vv -f -c -o zone_name,call_time,cost -d Convert -P my_passwd new.dbf
Смотрю, что получилось:
mysql> select `zone_name`,sum(`call_time`),sum(`cost`) from test group by `zone_name`;
+----------------------------------------------------+------------------+------------------+
| zone_name                                          | sum(`call_time`) | sum(`cost`)      |
+----------------------------------------------------+------------------+------------------+
| Armenia (fix)                                      |                0 |            262.2 |
| Armenia (fix), Erevan                              |                0 |            274.3 |
| Armenia (mob)                                      |                0 |          1105.58 |
... и так далее.
Часть таблицы с латиницей выглядит нормально,
а вот когда начинается кириллическая часть, так форматирование нарушено:
| USA                                                |                4 |           268.62 |
| USA, premuim                                       |                0 |             5.18 |
| Uzbekistan (fix), Tashkent                         |                0 |           201.88 |
| Uzbekistan (mob)                                   |                0 |           437.76 |
| Курская область Курск (fix)     |                0 |                9 |
| Красноярский край Краснояр |                0 |            16.15 |
| Краснодарский край (fix)          |                0 |            13.84 |
| Краснодарский край Краснод |                0 |            15.57 |
| Карелия (Республика) Петроз |                0 |            55.16 |
| Кавказские Мин.Воды               |                0 |             4.62 |
| Калужская область (fix)            |                0 |             5.19 |
| Калужская область Калуга (fi |                1 |            178.8 |
| Калининградская область Ка |                0 |               42 |
... и так далее.
Это было бы не так страшно если бы колонка sum(`call_time`) для всех строк ни была равна 0.
Т.е. я делаю вывод, что mySQL не считает время как время.
Т.к. время у него в данных есть:
mysql> select `call_time` from test where zone_name='USA';
+-----------+
| call_time |
+-----------+
| 00:04:00  |
| 02:09:00  |
| 00:40:00  |
| 00:01:00  |
| 02:24:00  |
| 00:02:00  |
| 00:12:00  |
| 00:01:00  |
| 00:06:00  |
| 00:01:00  |
| 00:02:00  |
| 00:01:00  |
| 00:01:00  |
| 00:04:00  |
| 00:03:00  |
| 00:01:00  |
| 00:09:00  |
| 00:01:00  |
| 00:01:00  |
+-----------+
19 rows in set (0.00 sec)

mysql>
поможете?

papay ★★★
() автор топика
Ответ на: комментарий от hizel

> а зачем вам mysql если все можно сделать из пистона?

Ну наверное нужно знать питон, а я на нем никогда ни чего не делал :/ Если подскажете похожее решение, то перекрутить под себя, думаю смог бы...

papay ★★★
() автор топика

В принципе этот пост разрешен,
а возникшие далее вопросы - дело уже другой темы по MySQL.
Обсуждение переходит на: http://www.linux.org.ru/forum/general/5434215

papay ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.