首页 文章

功率双矩阵中的自定义聚合列

提问于
浏览
3

我正在尝试在Power BI报告中创建一个矩阵,该报告总结了以多种不同方式切割的销售人员绩效 .

我知道如何使用行创建矩阵 - 销售人员,列 - 产品类型和值 - 销售数量,它将显示每个产品类型的每个销售人员的销售数量,但我还希望能够执行以下操作:

  • 添加一个额外的列集以进行透视(例如,销售年度),这样我就能看到同一个表中并排(即未嵌套)的产品类型和年份的销售计数 .

  • 在我的矩阵中添加其他汇总列,显示销售员的平均销售金额,销售员的销售总数百分比等值 .

为清楚起见,我想这会产生一个矩阵,其中列 Headers 为:Salesperson,Product 1,Product 2,...,Year 1,Year 2,...,Total Sales Count,Average Sales Amount,总销售额的百分比 . 请参见下面的图片链接(我没有声誉点,但还包括实际图片)

image of example matrix

我认识到我可以通过创建有效复制矩阵如何分割值并将每个度量作为值(无列)添加的度量来实现此目的,但我不想创建新度量并每次更新矩阵年或每次我们添加新的产品类型 .

我还查看了Power BI市场上的自定义视觉效果,但没有看到任何能实现这一目标的视觉效果 .

1 回答

  • 3

    它_1195277_ ll需要一个带有 SWITCH 的度量以及一个表头 .

    您可以沿着以下行创建 Headers 表:

    Header =
    UNION(SUMMARIZE(Sales, Sales[Product], "Group", "By Product", "Index", 1),
        SUMMARIZE(Sales, Sales[Year], "Group", "By Year", "Index", 2),
        DATATABLE("Header", STRING, "Group", STRING, "Index", INTEGER,
               {{" Total", "Summarizations", 3},
                {"% of Total Sales", "Summarizations", 3},
                {"Avg Sale Size", "Summarizations", 3}}))
    

    这将是这样的:

    Header,            Group,          Index,
    Product 1,         By Product,      1,
    Product 2,         By Product,      1,
    2016,              By Year,         2,
    2017,              By Year,         2,
    2018,              By Year,         2,
     Total,            Summarizations,  3,
    % of Total Sales,  Summarizations,  3,
    Avg Sale Size,     Summarizations,  3
    

    添加更多产品或年份时,此表将自动扩展 .
    (注意: Index 列是这样我可以使用按列排序来正确排序 . )

    一旦你有了这个,你只需要将 GroupHeader 放在行的可视化矩阵和 Salesperson 的列上,并在值中切换度量 .

    Measure = 
        VAR Val =
        SWITCH(SELECTEDVALUE(Header[Group]),
            "By Product",
            CALCULATE(SUM(Sales[Amount]),
                FILTER(Sales, Sales[Product] = MAX(Header[Header]))),
            "By Year",
            CALCULATE(SUM(Sales[Amount]),
                FILTER(Sales, Sales[Year] = VALUE(MAX(Header[Header])))),
            SWITCH(SELECTEDVALUE(Header[Header]),
                "% of Total Sales",
                DIVIDE(SUM(Sales[Amount]),
                    CALCULATE(SUM(Sales[Amount]), ALL(Sales))),
                "Avg Sale Size", AVERAGE(Sales[Amount]),
                SUM(Sales[Amount]))
        )
        RETURN
        IF(SELECTEDVALUE(Header[Header]) = "% of Total Sales",
            FORMAT(Val, "0.0%"),
            FORMAT(Val, "0.0"))
    

    每个不同的组都有自己的计算,我们必须使用 FORMAT 函数强制表格正确格式化百分比函数 .

    (注意:如果你有切片器或过滤器,你可能想使用 ALLSELECTED 我在上面使用 ALL . )


    这是我的表看起来像(不是完全相同的数据,但相似的结构)

    Grouped Table

    这是我为此创建的PBIX文件:

    https://drive.google.com/file/d/1qxc5p53MgmOm-NH3EcivkZLhLeEHpr4R/

相关问题