“享受 DAX 带来的乐趣”并想知道为什么 RETURN 语句不适合我在“不起作用”部分中的示例。预先感谢您。
-- DEFINE 只能使用一次,即全局变量
-- EVALUATE VAR RETURN 可以多次使用和嵌套
-- 工作
EVALUATE
VAR _return = "test" -- create local variable
RETURN
{ _return }
DEFINE
VAR _return = "test" -- create global variable
EVALUATE
{ _return }
-- 不工作
DEFINE
VAR _return = "test"
EVALUATE
RETURN
{ _return }
DEFINE
VAR _return = "test"
--EVALUATE
RETURN
{ _return }
Power BI 社区论坛发布相同问题的链接:
就像 Fabric 社区链接中提到的那样,这是一个规则语法。
第一种情况:如果你想在 EVALUATE 中使用局部变量:
EVALUATE
VAR _return = "test"
RETURN
{ _return }
这是有效的,因为您在
_return
语句中定义了一个局部变量 EVALUATE
并立即返回它。
换句话说,
_return
的范围在EVALUATE
块内,因此可以通过RETURN
语句访问。
第二种情况:将全局变量与 EVALUATE 一起使用:
DEFINE
VAR _return = "test"
EVALUATE
{ _return }
此处,
_return
是在任何 DEFINE
上下文之外使用 EVALUATE
进行全局定义的,使其可以被后面的任何 EVALUATE
语句访问。然后,您可以直接在 EVALUATE
块内使用此变量,因此它可以工作。
来看看失败的案例:
第 3 种情况: 使用 EVALUATE 和 RETURN 定义:
DEFINE
VAR _return = "test"
EVALUATE
RETURN
{ _return }
这里的问题是
EVALUATE
期望表表达式直接跟随它。因此,当您在没有任何表表达式的情况下立即插入 RETURN
时,它将失败。请记住,RETURN
不是 DAX 查询上下文中的独立语句,而是在 VAR
中使用来返回值。
第四种情况:定义并返回而不进行评估:
DEFINE
VAR _return = "test"
--EVALUATE
RETURN
{ _return }
这里您尝试使用
RETURN
而不使用封闭的 EVALUATE
语句,这不是 RETURN
的设计初衷是在 DAX 查询上下文中使用。 RETURN
用于返回 VAR
语句或类似上下文中 EVALUATE
的结果,而不是作为独立语句。