当前位置: 首页 > news >正文

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

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

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

实现方法:

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

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

销量 = 
VAR campaignDate = SELECTEDVALUE('活动表'[时间])
VAR beginDate = campaignDate - 3
VAR endDate = campaignDate + 3RETURN 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 + 3RETURN 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")

效果如下:

相关文章:

  • 系统集成项目管理工程师学习笔记之启动过程组
  • OpenHarmony开源鸿蒙兼容性测试常见问题解答分享
  • mac上将 Excel 文件的扩展名从 .xls 改为 .xlsx 后,打开时报错:“文件格式或文件扩展名无效”。
  • 攻防世界 Web题--easytornado
  • 【css知识】flex-grow: 1
  • 数据分析_主播考核指标体系搭建
  • 使用注解动态映射:根据实体List列表动态生成Excel文件
  • 2025-05-20 模型下载--文本向量化--Faiss检索
  • STL中list的模拟
  • 链表原理与实现:从单链表到LinkedList
  • Gin--Blog项目-flags文件解析
  • OpenCV 人脸识别:从基础到实践全解析
  • HarmonyOS5云服务技术分享--云缓存快速上手指南
  • vue2+webpack环境变量配置
  • 开源一个记账软件,支持docker一键部署
  • 详解ip地址、子网掩码、网关、广播地址
  • ArcObjects学习教程
  • CouchDB 可观测最佳实践
  • Centos上搭建 OpenResty
  • 什么是 AI 人工智能?什么是机器学习?什么是深度学习?三者啥关系
  • 1309家县医院已达到三级医院能力,还有哪些短板要补?
  • 西岸大剧院夏秋演出季公布,阿云嘎制作《风声》9月驻演
  • 全国首例闭环脊髓神经接口手术在浙江完成,截瘫患者实现自主行走
  • 音著协宣布胜诉,虎牙公司终审被判侵权
  • 石家庄桥西区通报“中药液”添加安眠药问题:对医院立案调查
  • 以开放促发展,以发展促开放,浙江加快建设高能级开放强省