如何在多个表中重复使用单个复杂数据集?
数据集包含许多计算列,需要详细报告和汇总。这是一个非常简化的示例数据集:
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'列),所有食物类型的另一个摘要,另一个食物卷起的详细摘要非食品by sale_association等。
报告还将包含需要计算的多个百分比(在最复杂的表中为6个)(一些在一行中,另一些在给定组中的所有行中),所有这些百分比的值都可以为零分母因此需要使用safeDivide进行防范(这是在源SQL查询中进行的PITA,它本身正在进行聚合 - 当分子和分母都是总和时,检查除以零会导致毛茸茸的查询)。 / p>
显然我可以通过适当地关注()SQL查询来做到这一点,但是当我已经设法创建怪物查询时,创建12或15个非常相似的查询似乎浪费时间和精力最详细的表格。
如何在表格中执行汇总似乎并不简单。我设法通过隐藏稍后将总结的行(例如示例中的“is_food == 0”)然后创建显示在页脚行中的自定义数据绑定来一起破解某些内容。它不仅感觉像是一个黑客,它还会干扰自然命令行的能力。再回到示例,如果我按total_sold排序并使用is_food == 0汇总行,则自然顺序应为Popcorn,Non-food,Jujubee。
BIRT wiki中没有关于此的内容,也没有“BIRT:Field Guide,3rd E.”真的深入研究这个话题。
答案 0 :(得分:0)
这似乎是一个相当开放的问题(尽管我同意重复使用单个数据集比让多个查询以稍微不同的方式检索相同数据更有意义)。一些一般性的建议:
使用最详细的数据版本作为每个BIRT报告项目的通用数据集(通常是BIRT表格)
如果需要仅汇总级别报告,请将组添加到所需级别的BIRT表,根据需要将数据项添加到组页眉/页脚,并从BIRT表中删除详细级别行
在某些情况下需要详细级别报告(例如,对于食品而非非食品项目),如上所述将组添加到BIRT表中,并设置详细行的可见性(在属性编辑器 - 属性 - 可见性)检查隐藏元素,然后指定适当的表达式以抑制不需要的行(在此示例中为非食物项目)。
通过选择整个表,在Property Editor中选择Binding选项卡并单击Add Aggregation...
按钮,可以将聚合(即汇总表达式)添加到表中。