Как повторно использовать отчеты по различным наборам данных? - PullRequest
1 голос
/ 16 сентября 2010

Каков наилучший способ повторно использовать отчеты для разных таблиц / наборов данных?

У меня есть несколько отчетов, встроенных в BIRT, которые получают свои данные из плоской (ненормализованной) таблицы MySQL, данные, которые, в свою очередь, были импортированы из таблицы Excel.

В BIRT я построил свой запрос следующим образом: я могу изменить имена полей и повторно использовать отчет:

SELECT * FROM
(SELECT index as "Index", name as "Name", param1 as "First Parameter" FROM mytable) t

Однако затем, когда я переключаюсь на данные нового клиента, мне нужно изменить запрос на новый источник данных, и это не кажется устойчивым или где-то рядом с хорошей практикой.

Итак ... Что такое хорошая практика?

  • Это проблема с отчетностью или проблема с дизайном базы данных?
  • Создать ли стандартное представление, к которому подключается отчет?
  • Если у меня есть стандартное представление, создаю ли я другое представление с одинаковой структурой для каждой таблицы данных или продолжаю заменять представление ссылкой на правильную таблицу данных при каждом запуске отчета?

Что раздражает, так это то, что таблицы Excel постоянно меняются - добавляются новые столбцы, и разные клиенты называют свои данные по-разному. Даже если бы я мог стандартизировать это, я бы сохранял разные клиентские данные в разных таблицах ... так что мне нужно было бы создавать разные отчеты для каждого клиента или передавать имя таблицы в отчет?

1 Ответ

2 голосов
/ 16 сентября 2010

Есть два пути, и выбранный вами путь действительно продиктован гибкостью архитектуры.

Во-первых, вы на правильном пути, переименовав выбранные столбцы в общее имя, так как это имячто используется для привязки данных к элементу управления в отчете.Рассматривали ли вы хранимую процедуру для доступа к данным?Это удаляет запрос из отчета и позволяет настроить хранимый процесс в любой базе данных для возврата необходимых столбцов.Если вы не можете разгрузить сохраненный процесс, вы всегда можете рассчитывать на изменение текста запроса во время выполнения.Поскольку отчеты BIRT не компилируются (они представляют собой XML), вы можете изменять запрос на основе параметров и выполнять его при каждом запуске проекта.Посмотрите на событие onCreate для набора данных, и вы сможете получить доступ к this.queryText и выполнить любое динамическое замещение строк, которое вам нужно, через JavaScript.Скрытые параметры - хороший способ помочь изменить / настроить запрос.Если вы правильно строите набор данных, изменение базовых данных может быть таким же простым, как и изменение источника данных, а затем повторная привязка набора данных к новому источнику данных (в окне редактирования набора данных).Я сделал это много раз, и это работает хорошо.Если вы идете по этому пути, я бы добавил источник (и) данных, набор (ы) данных и любые элементы управления, которые они предоставляют данные, в библиотеку отчетов.С помощью библиотеки вы можете использовать элементы управления во многих отчетах и ​​поддерживать их в одном месте.Если вы обновите библиотеку, все отчеты, использующие библиотеку, также будут обновлены.

В качестве альтернативы, если вы действительно хотите использовать полностью повторно используемую стратегию, которая позволит вам создать библиотеку повторно используемых компонентов, вы могли быпроверить бесплатную библиотеку компонентов многократного использования на бирже BIRT ( библиотека компонентов многократного использования ).На мой взгляд, эта стратегия даст вам повторное использование, которое вы ищете, но за счет ремонтопригодности.Это абстракция до степени запутанности.Это требует полностью общих имен для столбцов и элементов управления, которые очень затрудняют отладку.Хотя это не было бы моим первым выбором (вариант выше был бы), другие использовали его успешно, поэтому я подумал, что я бы включил его сюда, так как он напрямую говорит на ваш вопрос.

...