Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
Power BI在使用DAX编写公式时,使用VAR可以使公式更加简洁且计算效率更高。但是也要了解VAR的一些特性,这有助于防止错误的编写方式。
嵌套的多层函数,可以使用VAR写成单行的语句
比如计算月环比,直接使用函数嵌套如下:
月环比 普通 =
DIVIDE(
[销售 销售总额] -
CALCULATE( [销售 销售总额], DATEADD( 'D_日期表'[日期], -1, MONTH ) ),
CALCULATE( [销售 销售总额], DATEADD( 'D_日期表'[日期], -1, MONTH ) )
)
使用VAR编写可以是下面的效果:
月环比 VAR =
VAR ThisMonth = [销售 销售总额]
VAR LastMonth = CALCULATE( [销售 销售总额], DATEADD( 'D_日期表'[日期], -1, MONTH ) )
RETURN DIVIDE( ThisMonth - LastMonth, LastMonth )
公式越复杂,VAR的效果越明显。
只要VAR+RETRUN构成一个闭合的语句,可以任意嵌套
月环比 VAR嵌套 =
VAR ThisMonth = [销售 销售总额]
VAR LastMonth =
var t1 = -1
var t2 = CALCULATE( [销售 销售总额], DATEADD( 'D_日期表'[日期], t1, MONTH ) )
return t2
RETURN DIVIDE( ThisMonth - LastMonth, LastMonth )
VAR计算的结果是不变的量,因此不能使用VAR命名的变量作为函数中为值类型的参数,但可以使用在筛选类型的参数上。
这句话我也尝试了好几种表述方式,但都比较绕。比如下面这个例子就是不成立的,CALCULATE第一个参数不支持使用VAR指定的变量,但可以使用在CALCULATE第二个参数上:
月环比 VAR 错误示范 = //不会报错,但计算的结果是错误的
VAR SalesVolume = [销售 销售总额 万元]
VAR Exhibition = CALCULATE( SalesVolume, 'D_日期表'[年份] = 2020 )
RETURN IF( ISFILTERED( 'D_日期表'[月份(M)] ), SalesVolume, Exhibition )
正确示范如下:
月环比 VAR 正确示范 =
VAR SalesVolume = [销售 销售总额 万元]
VAR Parameter = 2020
VAR Exhibition = CALCULATE( [销售 销售总额 万元], 'D_日期表'[年份] = Parameter )
RETURN IF( ISFILTERED( 'D_日期表'[月份(M)] ), SalesVolume, Exhibition )
第三个特点是最容易犯错的地方,VAR定义的变量指的是不变的量。要想在CALCULATE中正确使用第一个参数,则需要使用现有的度量值,或重新编写该参数的计算公式。
学习VAR函数的朋友可以看下这三个特点,有助于更加方便的使用VAR将DAX公式编写的更加简洁、清晰、高效。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.