【问题标题】:DAX Rank FormulaDAX 排名公式
【发布时间】:2018-04-06 18:35:02
【问题描述】:

我之前问过一个类似的问题,即创建一个 DAX 公式来汇总费率以进行排名,如下图 (DAX Sum of Average to Rank) 中的“排名”列所示。但是,我需要将计算的度量从最高到最低进行排序,而不是求和率。

由于目标是 80%,所以 F 和 H 应高于 E 和 G。排序后的理想顺序是 A、B、C、D、F、H、E、G。这是在数据透视表中,因此由于 OLAP 限制无法创建计算列,因此首选 DAX 公式。任何帮助表示赞赏。

【问题讨论】:

  • 为什么是excel标签呢?

标签: excel dax powerpivot rank


【解决方案1】:

尚不清楚您创建排名的 DAX 是什么。您可能喜欢使用以下内容:

rate:=IF (
    HASONEVALUE ( DimDate[CalendarMonthName]),
    [Avg],
    CALCULATE ( SUMX (FactTable, [amount] ) )
)

Rank:=IF(NOT(ISBLANK([rate])),RANKX(ALLSELECTED(DimTable[bank]),
        [rate],,,Dense), BLANK())

比率类似于@TJ_ 在您的其他线程中提供的比率,但它是一个计算字段而不是列,它对 [amount] 进行求和以用于排名,否则它使用您的默认平均值计算。

您可能不需要 ALLSELECTED。它用于考虑仅由切片器选择的值。如果没有帮助,请查看屏幕并发布您的 DAX 以获得排名。

谢谢

【讨论】:

  • 排名公式有效,但当我按“总排名”列排序时,它对具有空白值的人的排名高于实际具有值的人。你知道如何改变它,让那些有空白值的排名更低吗?
  • 是的,我使用了你给出的公式 IF(NOT(ISBLANK[rate])).. 等,但它仍然将有空格的人排名高于有费率的人..
  • 如果可能,请发布您正在使用的 DAX 和示例数据。
  • 我使用的公式是 Rank:=IF(NOT(ISBLANK([Rate])),RANKX(ALLSELECTED([Name]),[Rate],,,Dense),BLANK( ))。我不能在评论中附加图片,但排名不能区分有几个空白的人(比如 Jan 和 Apr 是空白但其他月份有值)和没有(所有月份都有值)的人,它似乎仅基于价值排名。
  • 不确定您的数据是如何布局的。如果一个月有空白,即使我们只使用 RANKX(ALLSELECTED(DimBank[bank]),[rate],,,Dense) (省略 ISBLANK 检查),排名应该是正确的(所有空白月份都将具有相同的低排名然后是有值的月份)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多