【问题标题】:Power BI - rankx with filterPower BI - 带有过滤器的 rankx
【发布时间】:2020-12-02 17:54:45
【问题描述】:

我一直在努力解决这个问题,希望有人能够提供帮助......

我有一张表格,其中包含多年来产品的销售情况。有一种方法可以让我得到客户每年的总收入,忽略已售出的产品:

totalRevenueMeasure =
CALCULATE (
    SUM ( test[Revenue] ),
    ALLEXCEPT ( test, test[company], test[year] )
)
Year    company     Product    revenue  totalRevenueMeasure     rankx (revenue in year)
2018    company a   shoes       100             300               1
2018    company a   mugs        200             300               1
2018    Company b   shoes       250             250               2
2019    company a   lamps       300             300               2
2019    Company b   shoes       350             450               1
2019    Company b   mugs        100             450               1
2019    Company c   mugs        100             100               3
2020    company a   shoes       150             150               2
2020    Company c   lamps       200             200               1

我得到的最接近 RANKX 度量的值如下,但这并没有给出正确的结果。预期输出在上表的 RANKX 列中。

Customer Rank = 
          RANKX(
                ALLSELECTED( test[company],test[year]),               
                [TotalRevenueMeasure],
                , 
                DESC,
                Dense 
          )

在此先感谢您的指点,DAX 仍然让我有些困惑,可能有更好的方法来解决它。


根据 Alexis 的建议,测试数据成功但实时跳过了排名中的一些行 - 2019 年没有排名第一,但有 2 个排名第二。我想这一定是某种数据问题...

【问题讨论】:

  • 如果您使用的数据类型是十进制,请尝试将结果转换为 RANKX 中的货币。 sqlbi.com/blog/marco/2014/07/16/…
  • 这工作得很好。我会一直在寻找时间。谢谢你!
  • 几天前我确实为类似的问题寻找了几个小时。

标签: powerbi dax


【解决方案1】:

你很亲密。问题是您希望每年单独排名,但您已使用 ALLSELECTED 函数删除了 Year 过滤器上下文。

取出 ALLSELECTED 中的第二个参数,这样您就只有 company(因为您实际上并不希望对每一行的所有年份进行排名)。

【讨论】:

  • 感谢 Alexis,这适用于测试数据集。令人讨厌的是,当在现场使用时,它会跳过一些排名。我已经编辑了主要问题,并附上了这个排名的截图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多