美文网首页
Power BI中如何对矩阵中的所有值进行比较?

Power BI中如何对矩阵中的所有值进行比较?

作者: Data_Skill | 来源:发表于2020-05-13 18:35 被阅读0次

如何对矩阵中的所有值进行比较?

(一) 分析需求

需求相对比较明确,就是在矩阵中显示的值,需要进行整体比较,而不是单个字段值直接进行的比较。如图1所示,确认矩阵中最大值或者最小值。

图1  突出最大最小值的矩阵表图1 突出最大最小值的矩阵表

(二) 实现需求

要实现这一步需要分析在矩阵或者透视表的情况下,如何对整体数据进行比对,实际上也就是忽略矩阵的所有维度进行比对。
上面这个矩阵的维度有品牌Brand以及洲Continent。只需要在计算比较值的时候对维度进行忽略即可。
如果所有字段在单一的表格中,那相对比较好办,只需要在计算金额的时候忽略表中的维度即可。

图2  全部维度在单一表中图2 全部维度在单一表中

如果维度在不同表中,那建议构建一个有维度组成的表并进行计算。可以通过summarize构建维度表并使用addcolumns增加计算的值列,达到同样的效果。
之后就比较简单了,直接忽略维度计算最大值和最小值再和当前值进行比较。通过这个值的大小设置条件格式,就能在矩阵中显示最大值和最小值的标记了。

VAR MinValue = MinX('构建表','构建表'[@SalesAmt])
VAR MaxValue = MaxX('构建表','构建表'[@SalesAmt])
VAR CurrentValue = [Sales Amount]
VAR Result = 
    SWITCH ( 
        TRUE,
        CurrentValue = MinValue, 1,
        CurrentValue = MaxValue, 2
    )
RETURN
   Result

当然只需要进行计算的话,这个表可以书写在内存变量里面,通过var进行赋值,在后面的计算过程中进行调用。

var t=
CALCULATETABLE(
    ADDCOLUMNS(
        SUMMARIZE('Sales','Product'[Brand],Store[Continent]),
        "@SalesAmt",
        [Sales Amount]
    ),
    all('Product'[Brand]),all(Store[Continent])
)
VAR MinValue = MINX(t,[@SalesAmt])
VAR MaxValue = MaxX(t,[@SalesAmt])
VAR CurrentValue = [Sales Amount]
VAR Result = 
    SWITCH ( 
        TRUE,
        CurrentValue = MinValue, 1, 
        CurrentValue = MaxValue, 2  
    )
RETURN
   Result

注意:在计算最大值和最小值的时候,如果未使用真实表的话,则需要添加all来进行忽略维度进行计算,如果是实际表则可以直接求最大和最小值。

当然这里还会有一个问题,和之前的文章中类似,如果同时具备这两个维度的外部筛选条件,那这样做的话也会出错,如图3所示,因为筛选后把最大值或者最小值给筛选掉了,因为我们要显示的是矩阵中的值进行比较,如果通过外部筛选后,矩阵中的值会变化,所以这时使用AllSelect会更合适。

图3  经过筛选的矩阵表图3 经过筛选的矩阵表

把忽略的2个维度使用AllSelect()来进行替换即可,最后得到符合需求的样式。条件格式可以直接在设置表里根据判断条件1或者2来进行设置,如图4所示。

图4  条件格式设置图4 条件格式设置

最终显示的才是正确的结果,如图5所示。

图5  外部筛选后的正确结果图5 外部筛选后的正确结果

相关文章

网友评论

      本文标题:Power BI中如何对矩阵中的所有值进行比较?

      本文链接:https://www.haomeiwen.com/subject/gqsonhtx.html