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

Tabular Editor是一个功能强大的工具,可用于管理和编辑Analysis Services和Power BI模型。如果您想要使用DAX函数SelectedValue来传递参数,您需要在Tabular Editor定义一个参数表,并为其添加一个Measure,以便您可以在DAX计算引用该参数。 以下是一个简单的例子,说明如何在Tabular Editor定义一个参数表: 1. 在Tabular Editor打开您的模型,并选择“表”选项卡。 2. 选择“新建表”,并为其命名为“参数表”。 3. 在“参数表”添加一个列,例如“参数名称”和“参数值”。 4. 添加您需要的参数,例如“StartDate”和“EndDate”,并为其设置默认值。 5. 选择“新建度量”,并为其命名为“SelectedValue”。 6. 在“SelectedValue”计算表达式,使用DAX函数SelectedValue来引用参数表的参数,例如: ``` SelectedValue = VAR StartDate = SELECTEDVALUE('参数表'[参数值], '参数表'[参数名称] = "StartDate") VAR EndDate = SELECTEDVALUE('参数表'[参数值], '参数表'[参数名称] = "EndDate") RETURN IF(ISBLANK(StartDate) || ISBLANK(EndDate), BLANK(), StartDate & " - " & EndDate) ``` 请注意,上述DAX计算假设您的参数表已经定义了名为“StartDate”和“EndDate”的参数列,并且这些列包含用于筛选数据的日期值。如果您需要传递不同的参数值,请更改相应的参数名称和值。 7. 保存并部署您的模型,并在Power BI或其他客户端应用程序使用“SelectedValue”度量来传递参数值。 请注意,使用DAX函数SelectedValue来传递参数值是一种灵活且强大的方法,但在使用它之前,您需要了解其用法和限制。建议在开始使用之前,先仔细阅读DAX函数SelectedValue的官方文档,并在测试和验证之后再将其用于生产环境。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值