DAX 声明 - “返回,或不返回”

问题描述 投票:0回答:1

“享受 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 社区论坛发布相同问题的链接:

返回,或不返回

dax daxstudio
1个回答
0
投票

就像 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
的结果,而不是作为独立语句。

© www.soinside.com 2019 - 2024. All rights reserved.