DAX中的自定义变量函数VAR(2)

上一篇blog介绍了自定义变量函数VAR的基本用法,有的小伙伴可能好奇,是否不用自定义变量也能实现类似功能呢?答案是肯定的,使用同一个measure上次那个公式还可以改写为:

这里写图片描述

那么如果改写成将两个VAR内容都先单独用measure计算,之后再待入到第三个MAXX的measure中是否可行呢?答案是不行的,按照这种方式无法获得想要的计算结果。

这里写图片描述

原因是将两个VAR内容变成单独measure再当做参数被其他函数调用时,DAX会改变这两个measure原本的计算特征,即不再根据用户选择定义的上下文动态计算,而变成一个基于当前行所在原始数据的上下文的固定计算结果。换句话说,此时的度量值measure实际上是变成了一个计算列(calcuated),相当于原始数据表单变成了下面这个样子:
这里写图片描述
这样Filter函数中 Project[FinishTime] = [MAX-MilestoneDate]&& Project[ProjectID] = [MAX-ProjectID]条件实际上要找寻的数据是Project FinishTime<6/13/2017并且ID=3的数据。由于Project表单中没有符合该条件的数据,因此Filter返回值为空,也就导致外层MAXX函数结果为空,而无法获取想要的计算结果。

因此可见,自定义变量函数VAR可以跟主函数合并的前提是必须在当前使用它的度量值或则计算列中进行,如果拆分为多个度量值或者计算列,则逻辑性质会有变化而无法获取想要的结果。

猜你喜欢

转载自blog.csdn.net/jessica_seiya/article/details/80562946