PowerBI需求:实现按地点筛选、仅含当月发料条目的上月发料量列
解决PowerBI中按地点、物料展示当月发料及上月对应数量的问题
核心思路
利用度量值+日期维度表实现动态筛选,确保仅显示当月有发料记录的条目,并自动匹配对应地点、物料的上月发料量,避免生成无效空行。
步骤1:创建并关联日期维度表
PowerBI中依赖连续的日期维度才能准确计算上月数据,先构建日期表:
- 进入「建模」选项卡,点击「新建表」,输入:
DateTable = CALENDAR(DATE(2020, 1, 1), TODAY()) - 为日期表添加
年月字段(方便筛选月份):年月 = FORMAT(DateTable[Date], "YYYYMM") - 在「数据」视图中,将
DateTable[Date]与你的发料事实表(假设表名为MaterialIssue)中的发料日期字段建立一对多关系。
步骤2:创建度量值
当月发料总量(可直接复用现有逻辑)
当月发料总量 = SUM(MaterialIssue[发料数量])
上月发料总量(核心度量值)
上月发料总量 = CALCULATE( SUM(MaterialIssue[发料数量]), -- 将日期上下文切换到上月 DATEADD(DateTable[Date], -1, MONTH), -- 保留当前行的物料、地点筛选上下文 VALUES(MaterialIssue[物料编码]), VALUES(MaterialIssue[地点]) )
- 该度量值会自动继承视觉对象中的地点、物料筛选,只计算当前条目对应上月的发料量;若上月无记录,会返回空白(如需显示0,可改为
COALESCE(SUM(MaterialIssue[发料数量]), 0))。
步骤3:配置表格视觉对象
- 向表格中添加字段:
DateTable[年月]、MaterialIssue[地点]、MaterialIssue[物料编码],再添加上述两个度量值。 - 在「筛选器」面板中,对
当月发料总量设置筛选条件:大于0,确保仅保留当月有发料记录的条目,不会出现无发料的空行。
为什么之前的方案无效?
- 虚拟表格是全局计算的,无法响应视觉对象中的动态筛选(比如地点、月份),导致筛选不精准;
- 直接罗列全部物料会引入大量无发料记录的无效行,而通过度量值+视觉对象筛选,只会保留当月有数据的条目。
内容的提问来源于stack exchange,提问作者eagleaye
相关产品推荐
相关产品推荐

