修复 RANX 的奇怪行为?

Fixing RANX's strange behaviour?

刚开始学习 Power BI。使用样本销售数据,尝试根据总收入对国家/地区进行排名。

有了这个 DAX Rank = RANKX(ALL(Territories[Country]),SUM('Sales'[Revenue]))。我得到

但是当我创建一个度量 Total Revenue = SUM('Sales'[Revenue]) 并在 DAX Rank = RANKX(ALL(Territories[Country]),[Total Revenue]) 中使用它时,我得到了正确的结果。只是想知道我缺少的是什么导致了不同的结果。

度量值自动包装在 CALCULATE 中以强制进行上下文转换,将行范围转换为筛选范围。所以相当于

Rank = RANKX(ALL(Territories[Country]),[Total Revenue])

Rank = RANKX(ALL(Territories[Country]),CALCULATE(SUM('Sales'[Revenue])))

如果不使用 CALCULATE,则对每个国家/地区执行总和,但不对国家/地区进行筛选,因此所有行都会计算全局总和。这就像在计算列中使用 Sum。

您也可以像这样在没有上下文转换的情况下使用行范围:

Rank = RANKX(ALL(Territories[Country]),sumx(relatedtable('Sales'),[Revenue]))