【问题标题】:PowerBI - Dynamic TopN + Others depending on slicerPower BI - 动态前 N + 其他取决于切片器
【发布时间】:2020-11-07 01:29:04
【问题描述】:

我有这样的数据结构

Date, Group, Value
1/1/2020, A, 10
2/1/2020, A, 5
3/1/2020, A, 7
1/1/2020, B, 1
2/1/2020, B, 3
3/1/2020, B, 7
1/1/2020, C, 1
2/1/2020, C, 3
3/1/2020, C, 7

有大约 20 个组。 我想创建饼图/树形图,以显示 f.e.前 5 个值,其余为 OTHER。 做一次很简单,但是如果我有切片器,可以按年或月过滤图表,从连接到日期列的日期表中获取? 所以当我只检查 2020 年时,它只会显示 2020 年的 Top N + Others,而不是所有数据? 仅图表过滤器中的 TopN 是不够的,因为它将图表上的值相加为 100%,我想看看所有组的实际百分比是多少。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    Tangent:我写了一个很长的回复,告诉你如何做出一个合适的度量来返回正确的百分比,最后意识到 TopN 无论如何都会使它达到 100%。所以,请始终牢记这一点:如果你用心,即使你教书,你也会学到;)无论如何,

    那么我会尝试的是有一个具体的措施,例如

    [Value % (top N)] = 
    var denominator = CALCULATE ( [Value], ALLSELECTED ( Data_table ))
    var rank = RANKX ( VALUES ( Data_Table[Group] ), [Value] ))
    return IF ( rank <= *N*, DIVIDE ( [Value], denominator ))
    

    然后,从视觉对象中删除 TOPN 过滤器。对于不在顶部 N 中的组,度量将返回空白,因此它们不会显示在视觉对象上。

    但是,如果您想显示“其他”行以及总和的其余部分,那么您需要多做一些工作。一方面,您需要在与实际汇总的组相同的表上为该组添加一行“Others”,并且该度量将需要更多的分支逻辑来考虑这一点。

    但基本逻辑还是一样的,对 Group 列中的值使用 RANKX,然后为大多数项目返回空白(如果条件为 false,IF() 默认返回空白,但您始终可以有度量在某些极端情况下,您自己返回 BLANK()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多