инструмент отчетности / просмотрщик для больших наборов данных - PullRequest
2 голосов
/ 05 мая 2010

У меня есть система обработки данных, которая генерирует очень большие отчеты по обрабатываемым данным.Под «большим» я подразумеваю, что «небольшое» выполнение этой системы создает около 30 МБ отчетных данных при выгрузке в файл CSV, а большой набор данных составляет около 130–150 МБ (я уверен, что у кого-то есть идея побольше«большого», но это не главное ...;)

Excel имеет идеальный интерфейс для потребителей отчетов в виде списков данных: пользователи могут фильтровать и сегментировать данные на лету, чтобыувидеть конкретные детали, которые их интересуют (поскольку они на самом деле не интересуются многими тысячами строк, они знают, как применять несколько фильтров для получения нужных данных), - они также могут добавлять примечания и разметку к отчетам,создавать диаграммы, графики и т. д. Они знают, как все это делать, и гораздо проще позволить им сделать это, если мы просто дадим им данные.

Excel отлично подходит для небольших тестовых наборов данных, но этоне может справиться с этими большими.Кто-нибудь знает инструмент, который может обеспечить интерфейс, аналогичный спискам данных Excel, - возможность динамически создавать и изменять фильтры для нескольких полей;но может обрабатывать гораздо большие файлы?

Следующим инструментом, который я попробовал, был MS Access, и он обнаружил, что файл Access сильно раздувается (входной файл размером 30 МБ ведет к файлу доступа около 70 МБ, а когда я открываю файл, запускаю отчет и закрываю его,размер файла составляет 120-150 МБ!), процесс импорта медленный и очень ручной (в настоящее время файлы CSV создаются с помощью того же сценария plsql, который запускает основной процесс, поэтому с моей стороны вмешательство практически отсутствует).Я также попробовал базу данных Access со связанными таблицами с таблицами базы данных, в которых хранятся данные отчета, и это было во много раз медленнее (по какой-то причине sqlplus мог запросить и сгенерировать файл отчета за минуту или около того, в то время как Access мог занять от 2 до5 минут для тех же данных)

(Если это помогает, система обработки данных написана на PL / SQL и работает на Oracle 10g.)

Ответы [ 4 ]

2 голосов
/ 06 мая 2010

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

С другой стороны, если у вас есть сервер базы данных, кажется, стыдно не использовать его мощность. Существует несколько инструментов различной стоимости и сложности, которые позволят вам настроить довольно удобные для пользователя серверные отчеты, где вы сможете дать пользователям возможность настраивать параметры для своих собственных отчетов, которые затем будут фильтроваться на сервере и могут иметь их результаты экспортируются в Excel, например Oracle Discoverer или Microsoft Reporting Services (которые можно настроить для создания отчетов непосредственно в базах данных Oracle, даже если они основаны на SQL Server).

Мы используем Microsoft Reporting Services; Я создаю отчеты в Developer Studio, которые позволяют пользователям переходить на веб-страницу, фильтровать по любому из нескольких предварительно определенных критериев, запускаю отчет (с тяжелой работой на сервере) и экспортирую результаты в Excel для дальнейшей обработки. .

На полпути, где вы настраиваете отчеты, которые могут отфильтровать исходные данные до менее чем миллиона строк, а затем экспортировать их в Excel, возможно, вам подойдет ...

2 голосов
/ 06 мая 2010

Доступ был бы хорошим инструментом для использования в этом случае, поскольку он не имеет практического ограничения строки в отличие от Excel. Сложнее всего отучить людей от превосходства, когда они привыкли к мощным фильтрам. В доступе очень возможно получить что-то, что приближает это, но это никогда не будет точно таким же, если вы не вставите элемент управления Excel в свои формы.

Что касается ручной части, вы можете создать скрипт базы данных для импорта файлов с использованием VBA. Например, давайте скажем, что это основная задача вашего файла - сваливать файлы за одну ночь в папку с новым файлом каждую ночь. Вы могли бы создать базу данных доступа «сторожевой таймер», в которой была бы открыта форма с событием «OnTimer», которое просматривает эту папку каждые несколько минут, когда находит новый файл и запускает импорт. Когда ваши пользователи добираются до работы утром, данные уже загружены.

Что касается вздутие живота, да, это может быть проблемой, однако все, что вам нужно сделать, это быстрое сжатие и восстановление файла, и это уменьшит его.

EDIT:

Вы можете установить доступ к БД для сжатия при закрытии через опции. Я не могу точно вспомнить, где он находится, и на работе у нас есть только доступ 97 (но, как ни странно, офис 2003). Другой вариант заключается в сжатии кода. Вот ссылка, чтобы объяснить, как

http://forums.devarticles.com/microsoft-access-development-49/compact-database-via-vba-24958.html

1 голос
/ 06 мая 2010

Я бы посоветовал вам использовать внешний интерфейс Excel для общего сервера RDB.
Создайте пользовательскую систему фильтрации для Excel (я бы использовал VBA & ADO XLA, припаркованный на сервере, но доступно несколько технологий), которую используют конечные пользователи и которая генерирует SQL, чтобы вернуть в Excel подмножество данных, которое они хотят играть с (график, рассчитать, распечатать и т. д.).

1 голос
/ 05 мая 2010

Какая версия Excel, теперь она может обрабатывать большие объемы данных. В Excel 2007 размер листа составляет 16 384 столбца на 1 048 576 строк. Вы действительно отправляете более миллиона записей в отчете? ПОЧЕМУ кто бы смотрел на такие данные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...