182_Power BI 使用 DAX 按照先进先出原则计算毛利润
182_Power BI 使用 DAX 按照先进先出原则计算毛利润
一、背景
在笔者以往的文章中也有先进先出的案例,可以参考(https://jiaopengzi.com/?s=先进先出)。
今天我们来看一个网友提出的问题,
- 先进先出的原则,
- 入库和出库的价格都是不统一的。
- 按照出库的日期来计算先进先出的sku的毛利(fifo_profit)。
如下:
二、DAX
表间关系
我们这里按照正常业务逻辑需要有日期表:calendar
、入库表:storage
、出库表:sale
。
关系如下:
关键的 DAX 如下,@result
为需要的结果:
DEFINE /*先进先出毛利润计算*/ VAR tableSale = ALL( 'sale' ) VAR tbaleStorage = ALL ( 'storage' ) VAR tableIn = /*计算每条入库记录的累计入库:@cumIn*/ ADDCOLUMNS ( tbaleStorage, "@cumIn", VAR dateIn = [date] VAR skuIn = [sku] VAR tableInX = FILTER ( tbaleStorage, [sku] = skuIn && [date] <= dateIn ) RETURN SUMX ( tableInX, [units] ) ) VAR tableOut = /*计算每条出库记录的累计出库:@cumOut*/ ADDCOLUMNS ( tableSale, "@cumOut", VAR dateOut = [date] VAR skuOut = [sku] VAR tableOutX = FILTER ( tableSale, [sku] = skuOut && [date] <= dateOut ) RETURN SUMX ( tableOutX, [units] ) ) VAR tableResult = /*掐头去尾找到出库和入库的对应关系,计算出销售金额和入库成本之间的差异计算出毛利润*/ ADDCOLUMNS ( tableOut, "@result", VAR dateOut = [date] VAR cumOut = [@cumOut] VAR skuAc = [sku] VAR tableOutPre = FILTER ( tableOut, [sku] = skuAc && [date] < dateOut ) //前一个@累计出库 VAR preMaxCumOut = MAXX ( tableOutPre, [@cumOut] ) VAR tableInStartEnd = // 先进先出规则下,出库数据对应到入库数据 FILTER ( tableIn, [sku] = skuAc && [date] <= dateOut && [@cumIn] >= preMaxCumOut ) VAR tableInOut =// 计算每次入库记录对应到出库的数量 ADDCOLUMNS ( tableInStartEnd, "@unitOut", VAR dateMin = MINX ( tableInStartEnd, [date] ) RETURN SWITCH ( TRUE (), cumOut > [@cumIn] && [date] = dateMin, [@cumIn] - preMaxCumOut, cumOut > [@cumIn], [units], cumOut - [@cumIn] + [units] ) ) VAR tableOkCum = FILTER ( tableInOut, [@cumIn] >= cumOut ) // 每条记录 满足累计入库大于等于出库 VAR dateMin =MINX ( tableOkCum, [date] ) VAR tableOkDate = FILTER ( tableInOut, [date] <= dateMin ) // 每条记录 日期小于等于 dateMin VAR cost = SUMX ( tableOkDate, [price] * [@unitOut] ) // 计算出库成本 VAR profit = [price] * [units] - cost // 计算毛利 RETURN profit ) EVALUATE tableResult
三、总结
- 先进先出的主要方法是"掐头去尾",找到出库信息对应到的入库信息。
- 按照每行记录计算出库和入库数量累计值,再通过迭代函数计算对应的入库成本和出库销售额,从而通过差异计算出毛利。
- 由于业务嵌套层数比较多,可以利用 Dax Studio 调试,多使用 CONCATENATEX。
附件下载
https://jiaopengzi.com/3026.html
请关注
全网同名搜索 焦棚子
如果对你有帮助,请 点赞、关注、三连 支持一下,这是我们更新的动力。
我们承接 Power BI 相关业务:培训、报告制作与部署、咨询服务等。
by 焦棚子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端