Прежде всего, практическое правило BIRT: если вам нужны агрегаты вне таблицы, создайте их вне таблицы. Не пытайтесь получить доступ к значениям в таблице извне. Возможно, иногда это может быть единственным решением, но обычно оно портит весь отчет, его сложно отладить и еще сложнее поддерживать.
Агрегирование
Поскольку ваш набор данных выглядит довольно просто, и вы уже знаете, как и что агрегировать, ваш первый вызов должен вычислять столбцы в наборе данных:
Здесь вы агрегируете на языке в соответствии с вашим источником данных. Если это SQL, я думаю, операторы COUNT
и GROUP BY
сделают эту работу. Создайте все столбцы, которые вам нужны для вашего графика здесь.
Кстати: вычисляемые столбцы обычно являются серебряной пулей в BIRT. Я использую их практически для любого предварительного вычисления или создания пользовательского поля.
Визуализация
Вы не упомянули библиотеку, которую вы используете для графиков, поэтому я предполагаю, что вы хочу использовать базовые графики BIRT c. Базовые графики c с месяцами по оси X сделают вашу работу. Я просто хочу добавить, что у вас есть два варианта для нескольких рядов: вы можете либо подготовить свой набор данных, чтобы можно было заполнить график сериями для каждого типа (одна строка в примере с диаграммой), либо, возможно, проще: используйте необязательную группировку по сериям y в ваших вычисляемых столбцах (как уже упоминалось):
Таким образом, ваш график создаст для вас отдельный ряд. Надеюсь, это поможет!
Если вы застряли с базовыми c birt grpahs в целом, вы можете подумать о том, чтобы найти библиотеку графов на основе JavaScript, которая делает именно то, что вам нужно, и реализовать это. Помните: вы можете поместить почти все, что основано на JavaScript, в BIRT.
Последнее замечание: ради конечных пользователей вашего отчета, пожалуйста, используйте многострочную диаграмму. Линейные диаграммы не читаются для перекрывающихся значений.