修复 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]))
刚开始学习 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]))