webi报表中的上下文

如有转载请注明出处:http://blog.csdn.net/donkey2004112103/archive/2010/12/13/6074276.aspx

webi报表中通常使用In,ForEach,ForAll来计算上下文,不过理解这些公式最好还是通过例子,而不是看文档。我就把这些公式通过例子好好的给大家讲解一下。以下的例子我就以island resorts marketing这个universe为例。

 

1. IN operator

in是非常好理解的一个公式它指明了计算公式的上下文包含哪些,什么意思了?比如下图:

 

如果我添加一列,想要得到country中每年的汇总金额,那该怎么做了?这就要用到in了,通过如下公式即可解决:

 

=Sum([Revenue] In ([Country];[Quarter];[Year])) In ([Year];[Country])

这个如果用到了forall会更简单,不过为了演示in的作用,先这么写了。下面将有更好的方式。这段公式的含义是对(country,quarter,year)这三个维度下按照year,country的分类进行求和。你可以测试下,比如换成如下这样:

=Sum([Revenue] In ([Country];[Quarter];[Year])) In ([Year])

就会发现现在是按照year维度进行的分类汇总。即每年有一个汇总值,而不是按照country何quater了。

 

2. ForEach

还是上面这张表,如果我只是想实现一下每个季度下最大的那个revenue是多少怎么办了?如下图:

右边是quarter,左边这列式每个季度下最大的金额。公式如下:

=Max([Revenue] ForEach ([Country]))

猜到foreach的作用了吗?本来次table默认的上下文维度是quarter,但是通过forEach可以增加一个维度country,这样我们实际的效果是

=MAX([Revenue] in ([Country];[Quarter])) in ([Country])

 

这就是ForEach。

 

3. ForAll

ForAll和ForEach相对,ForEach是增加维度到上下文中,而ForAll是在默认的上下文中减去一个维度。回到1中的那个问题,如何用ForAll来解决了?先想想,对了就是这样:

=Sum([Revenue] ForAll ([Quarter]))

本来默认的上下文是country,quarter,year,只需要删除quarter这个维度即可。现在应该对webi中的上下文了解了吧。so easy。excel可没有这样的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值