前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何对矩阵中的所有值进行比较?

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

作者头像
逍遥之
发布2020-05-14 20:49:13
7.5K0
发布2020-05-14 20:49:13
举报
文章被收录于专栏:数据技巧数据技巧

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

(一) 分析需求

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

(二) 实现需求

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

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

代码语言:javascript
复制
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进行赋值,在后面的计算过程中进行调用。

代码语言:javascript
复制
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会更合适。

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何对矩阵中的所有值进行比较?
    • (一) 分析需求
      • (二) 实现需求
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档