企业主想查看每个product的单位成本。同时,他们希望显示的条目按照product line分组,查看每个product line中单位成本最高的product。在报表的最后,他们还想查看全系列产品的平均成本。
准备工作…
使用Product | Product line, Product | Product name 和 Sales Fact | Unit Cost作为列表的列创建一个简单的报表。
如何实施…
1. 我们从检查Unit Cost列开始。点击此列并检查其Aggregation属性。
2. 设置此属性为Average。
3. 选中Product line和Product names两列,然后点击工具栏中的GROUP按钮。
4. 点击Unit Cost列,然后点击工具栏中的Aggregation按钮,选择下拉选单中的Aggregate选项。
5. 再次点击Aggregate按钮,选择Average选项。
6. 如下图所示的页脚被创建。
7. 现在删除Product line所对应的<Average(Unit cost)>所在行,Summary所对应的<Unit cost>所在行。此时,报表看起来应该如下图:
8. 点击Unit cost列,并在其属性框中修改rollup aggregate功能为Maximum。
9. 运行并测试报表。
工作原理…
此示例涉及了和值汇总相关的数据项的两个属性:
Aggregation属性
我们首先验证unit cost的aggregation属性,并将其设置为average。记住此处的unit cost来自sales表。此表的粒度为销售条目或者销售订单。这意味着每个产品对应了很多条unit cost的记录。
我们只希望为每个product显示一条记录,所以我们必须把unit cost按照合适的方式汇总。Aggregation属性决定了在product层级进行计算时,unit cost会显示什么值。如果此属性被设置为TOTAL,unit cost会被简单的全部相加,这当然不是我们希望看到的“单位成本”。所以此处我们设置为AVERAGE。当然,这里还可以设置为MINIMUM或者 MAXIMUM。这取决于需求如何。
Rollup aggregation属性
为了显示每个product的最大unit cost,我们在第4步时创建了一个“Aggregation”类型的页脚,并在第8步时将其Rollup Aggregation属性设置为Maximum。
当然在此例中,我们可以直接从工具栏的Aggregate按钮的下拉选单中选择MAXIMUM.显示效果是一样的。但是,这样做会在查询中新建一个叫做的Maximum(Unit Cost)的数据项。在此例中我们的做法为查询和Native SQl减少了一个数据项。
多重聚合
我们还需要在报表的最后一栏显示显示总体的平均值,为了达到这样的效果我们需要创建一个新的数据项。所以我们在第5步时创建了一个基于unit cost的“Average”类型的聚合。此聚合计算出Average(Unit Cost),并且将其显示在product line和总体页脚行;接着我们在第7步中删除了不需要的聚合。
更多…
当你创建了一个“Aggregate”类型的聚合时,对于每一个查询项来说,rollup aggregation属性都是很重要的。当其被设置为“Automatic”时,Cognos基于数据类型自己决定要使用的聚合函数,这是不被推荐的。最好的方式是一直设置Aggregation和Rollup Aggregation属性为业务逻辑需要的选项。