以销售额的总和为例,解释Window、Running、Total、Include、Exclude、Fixed函数
第一列【Sales】,表示的即使以Market、Country为维度,计算销售额的总和
第二列【WINDOW_SUM】,使用了WINDOW_SUM函数,使用方法:
WINDOW_SUM( SUM( [Sales] ), -1, 0 )
WINDOW_SUM( 表达式, -n, m )
【-n】:当前行开始的第n行
【m】:当前行的第m行
例子中的-1和0,指的就是当前一行到当前行的SUM(Sales)的总和
第三列【RUNNING_SUM】,使用RUNNING_SUM函数,使用方法:
RUNNING_SUM( SUM( [Sales] ))
指的就是第一行到当前行的SUM(Sales)的总和
第三列【Total】,使用Total函数,使用方法:
TOTAL( SUM( [Sales] ) )
指的是当前所有行的总计,但Total依旧受限于筛选器,计算的是筛选器范围内的总和
可以看到不同的筛选器范围内,TOTAL计算的总和范围是不一样的
第四列【EXCLUDE】,使用的是EXCLUDE函数,使用方法:
{ EXCLUDE [Market] : SUM([Sales]) }
指的是在筛选器范围内,排除某一个维度。
我们在这张表里面,使用了【Market】、【Country】维度,其中【Market】比【Country】的维度范围是更大一点的。
如果我们想要在每一行计算【Market】为维度的总和,而不想受限制与【Country】维度,就可以使用Exclude。
如图所示,【Sales】列计算的是每个market每个country的销售总额,我们在【Exclude】列计算了每一个market的销售总和
第五列【INCLUDE】, 使用的是EXCLUDE函数,使用方法:
{ INCLUDE [Customer Name] : MAX([Sales]) }
指的是在筛选器范围内,使用指定的维度进行计算。
我们在这张表里面,使用了【Market】、【Country】维度。
如果我们想要在计算每位客户的最大订单消费额,就可以使用INCLUDE函数。
TIP:需要注意的是,我们需要在这里选择【最大值】,显示的结果就是每个Country客户的最大销售额
第六列FIXED, 使用的是FIXED函数,使用方法:
{ FIXED : MAX([Sales]) }
指的是不受筛选器的限制,使用指定的维度进行计算。
我们在这张表里面,使用了【Market】、【Country】维度。
如果我们想要在知道,所有地区的销售额是多少,就可以使用FIXED函数。
从这两张对比图可以看出,虽然我们筛选了不同的地区,但总的销售额是不变的,计算的就是所有地区的销售额总和,但include和exclude都受到了筛选器的影响。
在此处,讲解一个fixed的特殊情况。
当我们想要计算在所有地区的所有客户中,最大的消费金额,就需要用到FIXED的嵌套。
{ FIXED: max({ FIXED [Customer ID]:SUM([Sales]) }) }
为什么要再嵌套一层FIXED?
第一层FIXED: { FIXED [Customer ID]:SUM([Sales]) },它的计算结果是,每一位客户的消费金额,如下图表格所示:
此时我们去求最大值,相当于在这张表格前面套上了一个MAX函数,也就是:MAX({ FIXED [Customer ID]:SUM([Sales]) })
此时,已经不是FIXED的层级,而是MAX函数的层级,已经受到了维度及筛选器的限制。
可以看到,每个Market下的计算结果是不一样的。
因此,如果我们想要脱离维度以及筛选器的限制,需要再嵌套一层FIXED,也就是:{ FIXED: max({ FIXED [Customer ID]:SUM([Sales]) }) }