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")

效果如下:

相关推荐
weixin_465790911 天前
16台搅拌机定时控制:三菱PLC与威伦通触摸屏的奇妙组合
powerbi
醉卧考场君莫笑4 天前
PowerBI(上)
信息可视化·数据分析·powerbi
轩哥Up5 天前
《PowerBI建模权威指南》全书思维导图
powerbi·多维建模
AC赳赳老秦8 天前
基于DeepSeek与接口文档的智能测试数据生成实践
数据库·elasticsearch·信息可视化·流程图·数据库架构·powerbi·deepseek
Yuki_Xzz19 天前
POWERBI刷新失败总结
powerbi
Ada大侦探1 个月前
新手小白学习Power BI第五弹--------产品分析以及产品毛利率报表、条件式标红、饼图、散点图
学习·数据分析·powerbi
维C°1 个月前
PowerBI 基本操作
powerbi
Ada大侦探1 个月前
新手小白学习PowerBI第四弹--------RFM模型建模以及饼图、分解树、树状图、增长趋势图的可视化
人工智能·学习·数据分析·powerbi
Ada大侦探1 个月前
新手小白学习PowerBI第三弹--------获取项目数据源+KPI、折线图、地图、柱状图可视化展示
学习·数据分析·powerbi
葉夏夏1 个月前
数据分析实战-零售数据分析
数据挖掘·数据分析·零售·powerbi