Как я могу суммировать и повторно использовать сложный набор данных - PullRequest
2 голосов
/ 26 октября 2011

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

В наборе данных есть несколько вычисленных столбцов, о которых необходимо сообщать как в деталях, так и в сводках.Вот очень упрощенный пример набора данных:

is_food  sale_association  food_type  total_sold  total_associations  percent_total
1        Before Movie      Popcorn    50          3                   x BirtMath.safeDivide(...)
0        Before Movie      Soda       10          2                   x BirtMath.safeDivide(...)
1        During Movie      Jujubee    10          1                   x BirtMath.safeDivide(...)
0        After Movie       Soda       15          2                   x BirtMath.safeDivide(...)

Из этого одного набора данных я хотел бы создать подробную сводку по всем типам продуктов питания при одновременном сворачивании непродовольственных товаров (используя столбец «is_food»), другой обзорпо всем типам продуктов питания, еще один подробный отчет о продуктах питания со свернутыми непродовольственными товарами по sale_association и т. д. и т. д.рассчитывается (некоторые по строке, другие по всем строкам в данной группе), все из которых могут иметь нулевое значение для знаменателя и поэтому должны быть защищены с помощью safeDivide (который является PITA для выполнения в исходном SQL-запросе, которыйсам выполняет агрегацию - проверка деления на ноль, когда числитель и знаменатель являются суммами, приводит к сложным запросам).

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

То, что не кажется простым, заключается в том, как выполнить свертки в таблице.Мне удалось что-то взломать, спрятав строки, которые впоследствии будут суммированы (например, «is_food == 0» в примере), а затем создав пользовательские привязки данных, которые отображаются в строке нижнего колонтитула.Это не только похоже на взлом, но также мешает естественному упорядочению строк.Опять же, возвращаясь к примеру, если бы я упорядочивал по total_sold и суммировал строки с помощью is_food == 0, естественным порядком должен быть Popcorn, Non-food, Jujubee.

В вики BIRT нет ничего по этому поводуи "BIRT: полевой гид, 3-й E."действительно углубиться в тему.

1 Ответ

0 голосов
/ 26 октября 2011

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

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

  • Там, где требуются отчеты только на уровне сводки, добавьте группы в таблицу BIRT на нужном уровне, добавьте элементы данных, как требуется, в верхние / нижние колонтитулы группы и удалите строки (и) уровня детализации из таблицы BIRT. .

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

Агрегации (т. Е. Сводные выражения) можно добавить в таблицы, выбрав всю таблицу, выбрав вкладку «Привязка» в Редакторе свойств и нажав кнопку Add Aggregation....

...