ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3322|回复: 10

[求助] powerbi 带时间的库存统计,怎么算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-5-5 09:04 | 显示全部楼层 |阅读模式
请问在power bi 中,用什么计算方法能把左边数据转换成右边的统计?完全摸不着头绪
QQ截图20200505090100.png
库存管理.rar (11.26 KB, 下载次数: 17)

TA的精华主题

TA的得分主题

发表于 2020-5-5 09:11 | 显示全部楼层
MIN,Max,Max就可以了

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-5 09:21 | 显示全部楼层
wdx223 发表于 2020-5-5 09:11
MIN,Max,Max就可以了

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

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-5 11:18 | 显示全部楼层
0星剑0 发表于 2020-5-5 11:05
说实话,我也摸不着头脑,你的统计数据完全看不懂,没感觉有啥规律

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

TA的精华主题

TA的得分主题

发表于 2020-5-5 11:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
PQ参考解法
QQ截图20200505112819.png

库存管理.zip

19.61 KB, 下载次数: 20

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-5 16:31 | 显示全部楼层

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

TA的精华主题

TA的得分主题

发表于 2020-5-6 00:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
没想到这么麻烦
11111111.png

库存管理.rar

38.07 KB, 下载次数: 16

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-6 07:02 | 显示全部楼层
libo5563 发表于 2020-5-6 00:09
没想到这么麻烦

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

TA的精华主题

TA的得分主题

发表于 2020-7-4 20:20 | 显示全部楼层
  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'[时间]<=t,'表1'[出入库]="出库",ALL('表1'[数量])))//添加列计算商品库存
  7. var c=FILTER('表1','表1'[时间]=CALCULATE(MIN('表1'[时间]),ALLEXCEPT('表1','表1'[商品])))//计算商品最早记录               
  8. var d=ADDCOLUMNS(a,"序号",var g='表1'[商品] return RANKX(FILTER(a,'表1'[商品]=g),CALCULATE(MIN('表1'[时间]))))//添加列计算a表出现的不唯一商品
  9. var e=SELECTCOLUMNS(ADDCOLUMNS(FILTER(d,[序号]>1),"最近日期",var g='表1'[商品] var t='表1'[时间] return CALCULATE(MIN('表1'[时间]),FILTER('表1','表1'[商品]=g&&'表1'[时间]>t))),"商品",'表1'[商品],"时间",[最近日期])//迭代计算d表产品序号>1时之后一个时间(中间的开始时间)
  10. var f=UNION(c,CALCULATETABLE('表1',treatas(e,'表1'[商品],'表1'[时间])))//开始时间
  11. var g=SELECTCOLUMNS(ADDCOLUMNS(f,"结束时间",var g='表1'[商品] var t='表1'[时间] return CALCULATE(MIN('表1'[时间]),FILTER(a,'表1'[商品]=g&&'表1'[时间]>t))),"商品",'表1'[商品],"开始时间",'表1'[时间],"结束时间",[结束时间])//合并开始时间、结束时间
  12. var h=ADDCOLUMNS(g,"最大库存",var g=[商品] var st=[开始时间] var et=[结束时间] return MAXX(FILTER(b,'表1'[商品]=g&&'表1'[时间]>=st&&'表1'[时间]<=et),[库存]))//计算期间最大库存
  13. EVALUATE
  14. h
复制代码
这种不适合用DAX来搞吧,清洗的事情还是交给M。

查询结果

查询结果
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 13:03 , Processed in 0.038325 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表