人生没有彩排
每一天都是现场直播

在PowerBI中以先进先出规则计算商品库存成本

先进先出(FIFO)是企业管理中广泛应用的库存计价方法,尤其在财务核算和成本分析中扮演着重要角色。本篇文章将介绍如何在PowerBI中按先进先出规则计算库存商品的库存成本。

问题描述

按先进先出规则,计算库存商品的库存成本。计算过程如下图所示:

具体问题如下图所示:


本案例的初始数据如下:

入库:

日期 商品 入库 采购单价
2022年7月1日 苹果 10 3
2022年7月2日 苹果 20 2
2022年7月15日 香蕉 30 2

出库:

日期 商品 出库
2022年7月1日 苹果 7
2022年7月6日 苹果 12
2022年7月9日 苹果 5

若需其它辅助表等,可自行创建并建模。

解题要点

因为DAX中并不支持递归,因此在面对先进先出等场景时,需要找到一种数学上能计算的方法来处理。

假设总出库数量为:100,那么本案例的计算思路如下表所示:


日期 入库数量 累计入库数量 MAX(累计入库-100, 0) MIN(MAX(累计入库-100, 0), 入库数量)
2025/1/1 10 10 0 0
2025/1/2 30 40 0 0
2025/1/3 20 60 0 0
2025/1/4 15 75 0 0
2025/1/5 26 101 1 1
2025/1/6 12 113 13 12
2025/1/7 5 118 18 5
2025/1/8 10 128 28 10
2025/1/9 20 148 48 20
2025/1/10 30 178 78 30

解决方案

首先,数据模型如下图所示:

然后,创建如下度量值:

库存成本 = 
SUMX(
    '入库',
    VAR OutNum = CALCULATE(SUM('出库'[出库]),'出库'[商品]=EARLIER('入库'[商品]))
    VAR CumInNum = CALCULATE(SUM('入库'[入库]),'入库'[日期]<=EARLIER('入库'[日期]),ALLEXCEPT('入库','入库'[商品]))
    RETURN
    IF(CumInNum-OutNum>0,MIN(CumInNum-OutNum,'入库'[入库])*'入库'[采购单价])
)

然后创建一个矩阵,并将入库表中的商品字段作为行标签,再将上面的度量值放入矩阵的值字段即可,如下图所示:

总结

以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!

PBI/DAX技术交流群(QQ):344353627

赞(0) 打赏
版权声明:本文为夕枫的原创文章,著作权归作者所有,未经允许不得转载
文章名称:《在PowerBI中以先进先出规则计算商品库存成本》
文章链接:https://www.ximaple.com/posts/1165.html
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

Operation don't support