我正在尝试在Power BI报表中创建一个矩阵,以汇总以多种不同方式切分的Salesperson绩效。
我知道如何使用行-销售员,列-产品类型和值-销售计数来创建矩阵,该矩阵将显示每种产品类型每个销售员的销售数量,但是我也希望能够以下:
为清楚起见,我想这将导致一个矩阵,其中列标题显示为:销售人员,产品1,产品2,...,年1,年2,...,总销售计数,平均值销售额,占总销售额的百分比。请参见下面的图片链接(我尚没有信誉点包括实际的图片)
我认识到可以通过创建有效复制矩阵如何拆分值并将每个度量添加为值(无列)的度量来做到这一点,但是我不想创建新度量并进行更新每年或每次我们添加新的产品类型时都会使用此矩阵。
我还研究了Power BI市场上的自定义视觉效果,但没有发现可以实现这一目标的任何视觉效果。
答案 0 :(得分:8)
可以这样做,但并非易事。您将需要一个带有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}}))
看起来像这样:
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
列是这样,因此我可以使用“按列排序”对它们进行正确排序。)
一旦有了,只需将Group
和Header
放在矩阵视觉的列上,并将Salesperson
放在行上,并在值中进行切换。 / p>
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
。)
这是我的表的样子(不是完全相同的数据,而是相似的结构)
这是我为此创建的PBIX文件:
https://drive.google.com/file/d/1qxc5p53MgmOm-NH3EcivkZLhLeEHpr4R/