为什么要同时使用 ALLSELECTED() 和 FILTER()?

Why using ALLSELECTED() AND FILTER() together?

我正在尝试理解以下 DAX 代码:

CALCULATE(
    SUM(Revenue[Net])
    ,FILTER('Center', NOT 'Center'[Acc] IN {"RSM", BLANK() })
    ,ALLSELECTED()
    ,VALUES('Customer'[Customer Number])
)

我有以下问题:

ALLSELECTED有什么用??根据定义 ALLSELECTED returns table 中的所有行,忽略可能已在查询内部应用的任何过滤器,但保留来自外部的过滤器。 https://dax.guide/allselected/

那么,如果下一行 (ALLSELECTED) 将强制忽略它,那么编写 FILTER() 有什么意义?!?

另外根据定义:

CALCULATE 只是一个后跟过滤器的表达式...

VALUES() 有什么用?它看起来不是过滤器,所以它怎么会出现在那里呢? (根据定义 VALUES(): returns a one-column table 包含来自指定列的不同值 .)

我不明白这是在返回什么?是 SUM() 还是 VALUES()?

(我来自 SQL 背景,所以任何 sql-friendly 回答都非常感谢)。

在 Dax 中,每个过滤器都是 table 个值,它看起来类似于 INNER JOIN; 当您需要保留行上下文时,ALLSELECTED 很有用(这也是 DAX 中的过滤器)。您可以在 FILTER 函数中使用 ALLSELECTED。

为了更好地了解什么引擎,您可以将 DaxStudio 与 ServerTiming 结合使用;

如您所见,简单说明一下:

SELECT
SUM ( 'Table'[Cost Centre] )
FROM 'Table'
WHERE
    'Table'[Project] NIN ( 'AB' ) ;

您可以找到 Alberto Ferrari 和 Marco Russo 的有用文章: https://www.sqlbi.com/tv/auto-exist-on-clusters-or-numbers-unplugged-22/