Powerbi 在度量代码中间定义命名变量的DAX var
有人向我介绍了一种对函数的奇异利用。到目前为止,我在度量的开头遇到了VAR,正好在等号之后。请参阅下面的代码:Powerbi 在度量代码中间定义命名变量的DAX var,powerbi,dax,Powerbi,Dax,有人向我介绍了一种对函数的奇异利用。到目前为止,我在度量的开头遇到了VAR,正好在等号之后。请参阅下面的代码: Expected Result = SUMX ( VALUES ( Unique_Manager[Manager] ), VAR SumBrand = CALCULATE ( SUM ( Budget_Brand[BudgetBrand] ) ) VAR SumProduct = CALCULATE ( SUM ( Budget_Product[BudgetPr
Expected Result =
SUMX (
VALUES ( Unique_Manager[Manager] ),
VAR SumBrand = CALCULATE ( SUM ( Budget_Brand[BudgetBrand] ) )
VAR SumProduct = CALCULATE ( SUM ( Budget_Product[BudgetProduct] ) )
RETURN
IF ( ISBLANK ( SumProduct ), SumBrand, SumProduct )
)
在这里,VAR深深地嵌套在度量代码中。不用说,这是VAR的一个奇妙特性。我一直在尝试在度量中使用该特性,但运气不佳。例如,这项工作:
Measure_good = CALCULATE(
SUM(table[Amount])
)
虽然这不起作用:
Measure_bad = CALCULATE(
VAR inside_measure = SUM(table[Amount])
)
以这种不寻常的方式使用VAR的规则是什么?VAR语句需要匹配的
返回值。您可以一个接一个地声明多个变量,但必须使用RETURN
命令将变量传递回主计算,然后可以在IF语句或其他任何语句中使用该变量进行计算
我还没有对此进行测试,但是您的度量值应该是这样的(尽管如果公式的所有剩余部分都返回变量,那么使用VAR没有多大意义)
当您通过VAR语句使用变量时,必须始终包含一个RETURN语句,以告知DAX您将使用这些变量并返回一个值。在上一个示例中,您没有包含RETURN语句,因此将得到一个错误。在第一个示例中,您有一个RETURN语句,因此没有错误。在第二个示例中,您没有使用变量。我在文档中找到了相关信息:
作为参数传递给VAR的表达式可以包含另一个VAR
声明
引用变量时:
- 度量值不能引用在度量值外部定义的变量
表达式,但可以引用中定义的函数范围变量
表情
- 变量可以指度量
- 变量可以引用以前定义的变量
- 无法通过引用表变量中的列
TableName[ColumnName]语法
我一直尝试使用RETURN
outsideCALCULATE
结束括号,但未成功。你的办法行得通。谢谢。当然,它会在计算之外失败。您需要考虑VAR声明的范围。如果这有助于解决您的问题,请按照(1)中的说明标记答案。是,您必须在变量之后使用RETURN。(2)否,您不必使用以前声明的命名变量作为回报。我已经测试过了。不,当然你不需要实际使用你声明的任何变量。但是,正如您现在知道的,您必须包含一个RETURN语句来告诉DAX您现在正在返回一个值。
Measure_bad = CALCULATE(
VAR inside_measure = SUM(table[Amount])
RETURN
inside_measure
)