Power Pivot中引用度量,变量的注意事项

在DAX公式中,变量是我们经常会使用的一个技巧,方便我们对复杂的公式能够显得的更清楚些,但是变量是一个稳定值,也就是变量的计算的值是固定的,对筛选上下文的影响会忽略。

我们来看一个案例:

表1

姓名 学科 成绩
张三 数学 100
李四 语文 90
王五 英语 80

1. 我们设置一个度量值为总分。

总分:=sum('表1'[成绩])

2. 引用度量进行计算:

Calculate([总分],'表1'[姓名]="张三")

返回结果100。

3. 引用变量进行计算:

Var zf= sum('表1'[成绩])
Return Calculate(zf,'表1'[姓名]="张三")

返回结果270。


总分_var

这里就存在一个var赋值后的结果可以忽略筛选条件的影响。

所以我们很多时候会利用这个特性来进行计算,大部分场合下可以替代earlier和earliest函数的特性。
我们看一个之前讲解过的累计求和的问题。

数据源

1. 添加列写法

累计数据列写法

2. 度量值写法

累计_度量值:=Calculate(Sum('表2'[金额]),
                       Filter(All('表2'[时间]),
                                  '表2'[时间]<=Max('表2'[时间])
                           )
                     )

3. 万能变量Var写法

累计_var_大于开始小于结束 = 
var kssj=Calculate(Min('表2'[时间]),All('表2'[时间]))  //开始时间
var jssj=Max('表2'[时间]) //结束时间
return 
Calculate(Sum([金额]),Filter(All('表2'[时间]),
                                 '表2'[时间]>=kssj && '表2'[时间]<=jssj
                            )
        )

解释:
因为如果结束值单独只写Min('表2'[时间])的话,我们得到的结果是>=min的最小值和<=max的值只能是一个,也就是当前值。

我们只需要改变开始时间就可以把DAX自带的几个智能时间函数做一个统一的写法格式。

例如:

TotalYtd/ DatesYtd:
kssj= StartOfYear('表2'[时间])

TotalQtd/ DatesQtd:
kssj = StartOfQuarter('表2'[时间])

TotalMtd/ DatesMtd:
kssj = StartOfMonth('表2'[时间])

累计至今:
开始时间=Calculate(Min('表2'[时间]),All('表2'[时间]))

我们可以考虑下,如果是星期累计,我们需要使用什么样的方法来实现?

模拟操作文件下载:http://gofile.me/4KHV7/kXpjlJ2pG

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

你可能感兴趣的:(Power Pivot中引用度量,变量的注意事项)