[已解决] powerbi 带时间的库存统计,怎么算

  [复制链接]
查看105840 | 回复117 | 2020-11-5 21:33:49 | 显示全部楼层 |阅读模式
请问在power bi 中,用什么计算方法能把左边数据转换成右边的统计?完全摸不着头绪
10561102110541.png
10561102110546.rar (11.26 KB, 下载次数: 0)
回复

使用道具 举报

浅草 | 2020-11-5 21:42:49 | 显示全部楼层
MIN,Max,Max就可以了
回复

使用道具 举报

corolla | 2020-11-5 21:47:49 | 显示全部楼层
MIN,Max,Max就可以了


大佬能说的稍微详细一些么,菜鸟初学。。
回复

使用道具 举报

红色樱草 | 2020-11-5 21:52:49 | 显示全部楼层
说实话,我也摸不着头脑,你的统计数据完全看不懂,没感觉有啥规律
回复

使用道具 举报

zjtssjk | 2020-11-5 21:56:49 | 显示全部楼层
说实话,我也摸不着头脑,你的统计数据完全看不懂,没感觉有啥规律


以第一笔入库开始,算开始时间,期间累积统计(最大峰值库存),之后完成全部出库的那次记为结束时间。然后如果后续又有新入库,记为新的开始。
回复

使用道具 举报

白衣笑年少 | 2020-11-5 22:01:50 | 显示全部楼层
PQ参考解法
10561102110542.png
10561102110547.zip (19.61 KB, 下载次数: 0)
回复

使用道具 举报

鬼佬 | 2020-11-5 22:07:50 | 显示全部楼层
PQ参考解法


感谢大佬,这个M能有办法转dax那种吗?
回复

使用道具 举报

小李探花 | 2020-11-5 22:08:50 | 显示全部楼层
没想到这么麻烦
10561102110543.png
10561102110548.rar (38.07 KB, 下载次数: 0)
回复

使用道具 举报

mdqzj | 2020-11-5 22:17:50 | 显示全部楼层
没想到这么麻烦


谢谢大佬费心,请问要解决这个问题是不是只能通过M?之前没有接触过M看得一头雾水。。
回复

使用道具 举报

Guccileo | 2020-11-5 22:19:51 | 显示全部楼层
  1. DEFINE

  2. var a=FILTER('表1',

  3.       var t='表1'[时间] var g='表1'[商品] var kc= CALCULATE(sum('表1'[数量]),'表1'[商品]=g,'表1'[时间]<=t,'表1'[出入库]="入库",ALL('表1'[数量]))-CALCULATE(sum('表1'[数量]),'表1'[商品]=g,'表1'[时间]<=t,'表1'[出入库]="出库",ALL('表1'[数量]))

  4.       return kc=0||'表1'[时间]=CALCULATE(MAX('表1'[时间]),ALLEXCEPT('表1','表1'[商品])))//计算商品库存=0或者商品最后记录(结束时间)

  5. var b=ADDCOLUMNS('表1',"库存",var t='表1'[时间] var g='表1'[商品]

  6.       return CALCULATE(sum('表1'[数量]),'表1'[商品]=g,'表1'[时间]<=t,'表1'[出入库]="入库",ALL('表1'[数量]))-CALCULATE(sum('表1'[数量]),'表1'[商品]=g,'表1'[时间]1),"最近日期",var g='表1'[商品] var t='表1'[时间] return CALCULATE(MIN('表1'[时间]),FILTER('表1','表1'[商品]=g&&'表1'[时间]>t))),"商品",'表1'[商品],"时间",[最近日期])//迭代计算d表产品序号>1时之后一个时间(中间的开始时间)

  7. var f=UNION(c,CALCULATETABLE('表1',treatas(e,'表1'[商品],'表1'[时间])))//开始时间

  8. var g=SELECTCOLUMNS(ADDCOLUMNS(f,"结束时间",var g='表1'[商品] var t='表1'[时间] return CALCULATE(MIN('表1'[时间]),FILTER(a,'表1'[商品]=g&&'表1'[时间]>t))),"商品",'表1'[商品],"开始时间",'表1'[时间],"结束时间",[结束时间])//合并开始时间、结束时间

  9. var h=ADDCOLUMNS(g,"最大库存",var g=[商品] var st=[开始时间] var et=[结束时间] return MAXX(FILTER(b,'表1'[商品]=g&&'表1'[时间]>=st&&'表1'[时间]<=et),[库存]))//计算期间最大库存

  10. EVALUATE

  11. h

复制代码
这种不适合用DAX来搞吧,清洗的事情还是交给M。
查询结果
10561102110544.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则