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可以跟主函数合并的前提是必须在当前使用它的度量值或则计算列中进行,如果拆分为多个度量值或者计算列,则逻辑性质会有变化而无法获取想要的结果。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值