PowerBI - 如何仅显示 10 个类别并将其余类别包装在 "Others"

PowerBI - How to show only 10 categories and wrap the rest on "Others"

我有一个客户服务工单列表,需要用它来构建报告,其中一个图表必须是“每个动机的数量”,问题是我有太多的动机无法在图表上显示,所以我想展示其中的 10 个,并将其余的包装在“其他”类别中。 我发现一些帖子显示很热门,可以使用诸如销售额之类的值来执行此操作,但我无法弄清楚如何使它与我的数据一起工作。

数据的结构是这样的

客户ID |票号 |日期 |动机 |说明

在帖子中我发现解决方案涉及 SUM(),然后按 SUM() 列排序,但我没有值列,我需要按动机计算

有几种方法可以做到这一点。

  1. 新群
    使用必须手动设置的 built-in PBI 功能。 Right-click 在 字段 部分的列名上,然后选择 New group。将弹出一个新的 window。在那里,您必须选择要标记为其他类别的类别。一个新字段(列名(组))将出现在您的 table 中。此方法需要您任意决定要显示哪些列。
  2. 创建计算table
    您可以在模型中创建一个全新的 Calculated table,它将根据总量设置新标签。在那种情况下,标签将动态变化而不是静态的。如果模型出现新动机并且其数量将在 TOP N 中,那么它将在图表上可见。此解决方案创建了一个单独的 table,您稍后必须通过与主 table 的关系进行连接。

Select Calculated table 在功能区上然后写 DAX:

TopNCategories = 
VAR keepLabels = 3
VAR tbl = 
    ADDCOLUMNS(
        VALUES( 'Product'[Brand] ),
        "@TotalSales", CALCULATE( [Sales Amount] )
    )
VAR addRank =
    ADDCOLUMNS(
        tbl,
        "@Rank", 
            RANKX(
                tbl,
                [@TotalSales],
                ,
                DESC
            )
    )
VAR result =
    SELECTCOLUMNS(
        addRank,
        "BrandKey", 'Product'[Brand],
        "NewLabel", IF( [@Rank] <= keepLabels, 'Product'[Brand], "Others" )
    )
RETURN
    result
  1. 计算列
    如果您不想在模型中创建另一个实例,则可以使用上述逻辑在主 table 中创建一组 Calculated column。根据您的模型大小和基数,此解决方案可能会对整个报表的性能产生影响。