Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. 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.