如何在Power BI中按产品编号动态计算近两个月订单之和并处理类型显示
解决方案
1. 计算近两个月订单总和(计算列)
添加计算列,通过DAX按Product+location分组,求和当前月份前两个月的订单量:
近两月订单总和 = VAR 当前月份序号 = '你的表名'[MonthSeq] VAR 当前产品 = '你的表名'[Product] VAR 当前地点 = '你的表名'[location] RETURN CALCULATE( SUM('你的表名'[order]), FILTER( ALL('你的表名'), '你的表名'[Product] = 当前产品 && '你的表名'[location] = 当前地点 && '你的表名'[MonthSeq] IN {当前月份序号 - 1, 当前月份序号 - 2} ) )
- 用变量存储当前行关键值,简化公式逻辑
ALL('你的表名')打破当前行筛选限制,确保能查询同组下所有历史月份IN {当前月份序号 -1, 当前月份序号 -2}精准匹配前两个连续月份的记录
2. 获取最新月份对应的Type(计算列)
添加第二个计算列,提取Product+location组内最新月份的type:
最新Type = VAR 当前产品 = '你的表名'[Product] VAR 当前地点 = '你的表名'[location] VAR 组内最大月份序号 = CALCULATE( MAX('你的表名'[MonthSeq]), FILTER( ALL('你的表名'), '你的表名'[Product] = 当前产品 && '你的表名'[location] = 当前地点 ) ) RETURN CALCULATE( SELECTEDVALUE('你的表名'[type]), FILTER( ALL('你的表名'), '你的表名'[Product] = 当前产品 && '你的表名'[location] = 当前地点 && '你的表名'[MonthSeq] = 组内最大月份序号 ) )
- 先定位组内最大
MonthSeq(即最新月份) - 用
SELECTEDVALUE获取该月份对应的唯一type值,语义更清晰
3. 逻辑验证
以样本数据中Product=5255, location=xyz为例:
- 组内最大
MonthSeq为23(Nov-23),对应type=pen,最新Type列将显示pen - 若新增
MonthSeq=24(Dec-23)的记录,近两月订单总和会自动计算23(45)+22(96)=141
注意事项
- 确保
MonthSeq是连续无重复的整数,否则会导致月份匹配错误 - 若某组只有1个月或无历史数据,
近两月订单总和会返回空白,可通过IF(ISBLANK([近两月订单总和]), 0, [近两月订单总和])设置默认值
内容的提问来源于stack exchange,提问作者Sridhar Babu
相关产品推荐
相关产品推荐

