最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[Web Intelligence] webi报表中的上下文计算

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-26 16:58:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
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可没有这样的功能。


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-27 21:31

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表