首页 > 解决方案 > MAXX 引用测量 - 并不总是给出正确的结果

问题描述

我有一个如下所示的销售额度量:

Sales Amount = 
        SUMX(
            'Online Sales',
            'Online Sales'[Sales Quantity] * 'Online Sales'[Unit Price] - 'Online Sales'[Discount Amount]
        )

当我创建引用 [Sales Amount] 的 Max Sales 度量时,当我处于层次结构的多个级别时,我并不总是得到正确的结果。

错误结果:

Max Daily Sales = 
    MAXX(
        'Online Sales',
        [Sales Amount]
        )
    )

但是,这确实给出了正确的结果:

Max Daily Sales = 
    MAXX(
        'Online Sales',
        SUMX(
            'Online Sales',
            'Online Sales'[Sales Quantity] * 'Online Sales'[Unit Price] - 'Online Sales'[Discount Amount]
        )
    )

他们似乎都在做同样的事情。有谁知道为什么结果会不同?

数据模型如下所示:

在此处输入图像描述

标签: dax

解决方案


当您在另一个度量中调用一个度量时,它会被隐式评估,就好像它被包裹在一个CALCULATE.

请允许我引用 DAX 权威指南(第 5 章,第 114-115 页)

每当您从另一个表达式中调用度量时,DAX 都会自动将该度量封装在CALCULATE中。

[...]

调用度量时会自动发生上下文转换,无法避免。这意味着在调用度量时避免上下文转换的唯一方法是扩展其代码。

我确定您记得,上下文转换采用行上下文并将其转换为度量的过滤器上下文。因此,当您将其称为度量时,它不是在同一张表上求和,而是根据该行中的其他值进行过滤。


推荐阅读