代码之家  ›  专栏  ›  技术社区  ›  Bala

修复RANX的奇怪行为?

  •  0
  • Bala  · 技术社区  · 4 年前

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

    使用此DAX Rank = RANKX(ALL(Territories[Country]),SUM('Sales'[Revenue])) .我明白 enter image description here

    但当我创建度量值时 Total Revenue = SUM('Sales'[Revenue]) 并在DAX中使用 Rank = RANKX(ALL(Territories[Country]),[Total Revenue]) ,我得到了正确的结果。只是想知道我错过了什么,这会产生不同的结果。

    enter image description here

    0 回复  |  直到 4 年前
        1
  •  1
  •   David Browne - Microsoft    4 年前

    度量值自动包装在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]))