1

在 DAX Studio 中,我正在评估下一个代码:

EVALUATE
ADDCOLUMNS  (
            'Parent Child',
            "Path",PATH('Parent Child'[EmployeeKey],'Parent Child'[ParentEmployeeKey]),
            "Path Length", PATHLENGTH(PATH('Parent Child'[EmployeeKey],'Parent Child'[ParentEmployeeKey])),
            "Path Item", PATHITEM(PATH('Parent Child'[EmployeeKey],'Parent Child'[ParentEmployeeKey]), 3)
            )

我得到了正确的结果。但是,我想知道我是否可以实现这样的东西:

DEFINE 
VAR p = PATH('Parent Child'[EmployeeKey],'Parent Child'[ParentEmployeeKey])
EVALUATE
ADDCOLUMNS  (
            'Parent Child',
            "Path",p,
            "Path Length", PATHLENGTH(p),
            "Path Item", PATHITEM(p, 3)
            )

我已经尝试了不同论坛上提供的一些答案,但到目前为止我还没有得到任何可能的解决方案。

问候,

4

1 回答 1

1

DEFINE不会像你想要的那样深入它的范围。

https://www.sqlbi.com/articles/defining-variables-in-dax-queries/

当变量的定义跟在 EVALUATE 语句之后时,它的范围只是 EVALUATE 语句引用的表表达式。

您可以在每个 EVALUATE 语句中定义一个变量。我没有您的样本数据,因此无法对其进行测试:

EVALUATE
VAR p = PATH('Parent Child'[EmployeeKey],'Parent Child'[ParentEmployeeKey])
RETURN
ADDCOLUMNS  (
            'Parent Child',
            "Path",p,
            "Path Length", PATHLENGTH(p),
            "Path Item", PATHITEM(p, 3)
            )

或者尝试使用 CALCULATETABLE 包装 ADDCOLUMNS:

https://blog.learningtree.com/excel-2016-dax-variables/

DEFINE
    VAR p =
        PATH ( 'Parent Child'[EmployeeKey], 'Parent Child'[ParentEmployeeKey] )
EVALUATE
CALCULATETABLE (
    ADDCOLUMNS (
        'Parent Child',
        "Path", p,
        "Path Length", PATHLENGTH ( p ),
        "Path Item", PATHITEM ( p, 3 )
    )
)
于 2020-02-04T08:48:37.053 回答