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

Spe*_*tor 5 powerbi

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

我知道如何创建行的矩阵 - 营业员,列 - 产品类型和价值 - 销售,这将显示每个产品类别每销售员销售的数量,但希望我也能做到下面的计数:

  1. 添加一个额外的列集以进行透视(例如,销售年度),这样我就可以看到同一个表中并排(即未嵌套)的产品类型和年份的销售计数.
  2. 在我的矩阵中添加其他汇总列,显示销售员的平均销售金额,销售员的销售总数百分比等值.

为了清楚起见,我想像,这将导致一个矩阵,其中列标题写着:营业员,产品1,产品2,...,1年,2年,...,总销售数,平均销售金额,总销售额的百分比.请参见下面的图片链接(我没有声誉点,但还包括实际图片)

示例矩阵的图像

我承认,我可以通过创建有效地复制矩阵是如何分裂出来的价值观和加入每项措施的值(无柱)措施做到这一点,但我不希望有创建新的措施和每一个更新的矩阵年或每次我们添加新的产品类型.

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

Ale*_*son 9

有可能做到这一点,但不是非常容易.您需要一个带SWITCH标题的度量表以及标题表.

您可以沿着以下行创建标题表:

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}}))
Run Code Online (Sandbox Code Playgroud)

这将是这样的:

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
Run Code Online (Sandbox Code Playgroud)

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

一旦你有了这个,你只需要在矩阵的视觉和行的列上放置,GroupHeaderSalesperson值中切换度量.

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"))
Run Code Online (Sandbox Code Playgroud)

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

(注意:如果你有切片机或过滤器,你可能想要使用ALLSELECTEDALL上面使用的地方.)


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

分组表

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

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