【问题标题】:Tag accounts with highest rank in DAX标记 DAX 中排名最高的帐户
【发布时间】:2018-08-15 05:13:24
【问题描述】:

我在 PowerPivot 中有下表。我想创建一个列(“显示”),它的季度名称对应于具有相同 ID 的所有行的最高排名。下表显示了所需的结束状态,其中“显示”是我要计算的列:

【问题讨论】:

    标签: dax powerpivot


    【解决方案1】:

    假设您的表名为“DimShow”,则以下 DAX 应该可以解决问题:

    LOOKUPVALUE(
        'DimShow'[Quarter],
        'DimShow'[ID], 'DimShow'[ID],
        'DimShow'[Rank],
        CALCULATE(
            MIN('DimShow'[Rank]), 
            ALLEXCEPT('DimShow', 'DimShow'[ID])
        )
    )
    

    解释: 我们想从 [Quarter] 列中查找与当前行具有相同 [ID] 的值。同时,[Rank]值应该是与当前行具有相同[ID]的所有行的最小值。

    请注意,如果在特定 [ID] 内同一(最低)排名有多个不同的 [Quarter] 值,则会产生错误。

    【讨论】:

    • 谢谢!所以在幕后,第一个查找值返回初步结果的过滤表,然后在该过滤表中搜索第二个查找值(这就是我们需要 ALLEXCEPT 来保留该过滤器的原因?非常漂亮。
    【解决方案2】:

    我通常使用一个变量来做到这一点:

    Show = 
        VAR TopRank = CALCULATE(MIN(Table1[Rank]), ALLEXCEPT(Table1, Table1[ID]))
        RETURN CALCULATE(
                   MAX(Table1[Quarter]),
                   ALLEXCEPT(Table1, Table1[ID]),
                   Table1[Rank] = TopRank)
    

    TopRank 变量计算ID 的最高排名。第二行本质上是查找该等级的 Quarter 值和 ID 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      相关资源
      最近更新 更多