PowerBI 矩阵实现动态行内容(如前后销售数据)统计数据,以及过滤同时为0的数据

我们有一张活动表 和 一张销售表

我们想实现如下的效果,当选择某个活动时,显示活动前后3天的销售对比图,如下:

实现方法:

1.新建一个表,用于显示列:

2.新建一个度量值,用SELECTEDVALUE去获取矩阵的"列",然后分别统计3天前和3天后的销量

复制代码
销量 = 
VAR campaignDate = SELECTEDVALUE('活动表'[时间])
VAR beginDate = campaignDate - 3
VAR endDate = campaignDate + 3

RETURN SWITCH(SELECTEDVALUE('表'[ID]),
              1, CALCULATE(SUM('销售表'[销量]), '销售表'[时间] <= beginDate),//3天前
              2, CALCULATE(SUM('销售表'[销量]), '销售表'[时间] >= endDate),  //3天后
              0
) + 0

3.分别放入矩阵

效果:

别着急离开,接下来我们增加些难度

我们可以发现,当选择"活动1"时,产品C的前后3天销量都是0,我们不想看到数据都为0的。怎么做呢?

我们新建一个度量值用于过滤:

复制代码
filters = 
IF([销量]=0,"hidden","show")

然后让矩阵只显示 show的数据,结果所有的数据都不显示了。

我们让矩阵显示一下这个filter的值:

发现原因了吗?

虽然矩阵显示了前后3天,共两列,但其实只有一个度量值

只是被矩阵的"列"给分成了两列。所以这里不能简单粗暴的判断 [销量] =0

解决方法,首先修改度量值 [销量]:,将第三种情况,变为前两种情况的值的累加,可以理解为第三情况就是同时选择了前3天和后3天

复制代码
销量 = 
VAR campaignDate = SELECTEDVALUE('活动表'[时间])
VAR beginDate = campaignDate - 3
VAR endDate = campaignDate + 3

RETURN SWITCH(SELECTEDVALUE('表'[ID]),
              1, CALCULATE(SUM('销售表'[销量]), '销售表'[时间] <= beginDate),
              2, CALCULATE(SUM('销售表'[销量]), '销售表'[时间] >= endDate),
              //修改第3种情况,变成以上两种情况的累加
              CALCULATE(SUM('销售表'[销量]), '销售表'[时间] <= beginDate || '销售表'[时间] >= endDate)
) + 0

然后filter里去掉矩阵的"列"的影响,同时判断前3天和后3天:

复制代码
filters = 
IF(CALCULATE([销量],ALL('表'))=0,"hidden","show")

效果如下:

相关推荐
瓶子xf6 天前
陪跑教学大纲:PowerBI & QuickBI & FineBI & 数据运营& 面试 & 简历修改等
powerbi·finebi·副业·quickbi
咋吃都不胖lyh9 天前
MySQL 与Power BI 的作用,以及在数据分析中扮演的角色
mysql·数据分析·powerbi
瓶子xf1 个月前
PowerBI 的双隐藏,我在QuickBI 里也找到了
powerbi·quickbi
瓶子xf1 个月前
PowerBI 没实现的的联动同步下钻,QuickBI 实现了
powerbi·quickbi
瓶子xf1 个月前
第二家公司虽然用PowerBI ,可能更适合用以前的QuickBI
powerbi
瓶子xf2 个月前
第三家公司虽然用了powerbi,但更适合用excel
excel·powerbi
Yuki_Xzz2 个月前
powerbi其他切片器能控制而只有Result切片器不能控制
powerbi
Sharewinfo_BJ2 个月前
66别错过!一杯奶茶钱开启企业微信 Power BI 之旅
数据分析·企业微信·数据可视化·powerbi
奔跑草-2 个月前
【服务器】Apache Superset功能、部署与体验
运维·服务器·apache·powerbi·superset
芦骁骏2 个月前
自动处理考勤表——如何使用Power Query,步步为营,一点点探索自定义函数
数据分析·excel·powerbi