155_模型_Power BI & Power Pivot 进销存之安全库存

一、背景

谈进销存的概念时,我们也需要提及另外一个概念:安全库存

库存周转在理想的状态下是做到零库存,但是在内部的资金占用及到货周期不确定和外部客户的现货率满足等诸多情况平衡下,想做到零库存几乎不可能。在这种平衡状态就有了安全库存;以上为笔者在平常的生产生活中感知。

在这里我们首先引入安全库存的数学公式:

说明

分布按照理想状态的标准正态分布,安全库存仅作为参考点,实际生产中需要加入业务的理解,进行调整。

数学公式转变为 DAX 公式:SS = z * SQRT ( σd ^ 2 * μL + σL ^ 2 * μd ^ 2 )

SS:安全库存(Safe Stock)。

z : 服务水平系数,服务水平(现货率)为 0.95,在标准正态分布下查表可得,对应的 z = 1.65。

L : 采购提前期,本案例中对应入库间隔天数。

μL: 平均提前期。

σL: 提前期 L 的标准差。

d : 日出库数量。

μd: 平均日出库数量。

σd: 日出库量 d 的标准差。

标准差公式使用:STDEVX.S

更多安全库存的信息参考:

https://baike.baidu.com/item/%E5%AE%89%E5%85%A8%E5%BA%93%E5%AD%98

Power BI 实际效果链接:

https://demo.jiaopengzi.com/pbi/155-full.html

二、DAX模型

1、数据表及关系

维度表:01_Calendar; T01_门店表; T00_产品表

事实表:T04_订单主表; T05_订单子表

度量值:00_Measure

辅助表:04_RefreshTime

计算表:02_Row

具体字段和关系如下图:

详细数据字段介绍见:

https://jiaopengzi.com/1435.html

2、度量值

度量值一览图

接下来我们把几个关键的度量值放上来。

0001_产品数量_入库

0001_产品数量_入库 =
SUM ( 'T03_入库信息表'[F_02_入库产品数量] )

0002_产品数量_出库

注意出库是需要按照订单主表里面的送货日期来计算,所以需要使用 USERELATIONSHIP 激活关系。

0002_产品数量_出库 =
CALCULATE (SUM ( 'T05_订单子表'[F_05_产品销售数量] ),USERELATIONSHIP ( 'T04_订单主表'[F_04_送货日期], '01_Calendar'[C01_Dates] )
)

0003_产品数量_库存_期末

关于库存的计算,给大家提供一个思路。库存就是当前时间点的历史累计入库与历史累计出库的差异。我们用一张图来表示。

在这样的思路下,我们也就很好使用 DAX 写进销存里面的库存的度量值了。

当然库存又会根据不同的时间点的状态分为期初库存和期末库存,关于期初和期末智能库存的度量值可以在我的课程里面学习。

https://jiaopengzi.com/video/video-101?rkvid=100

0003_产品数量_库存_期末 =
VAR DATE_START0 =CALCULATE ( FIRSTDATE ( '01_Calendar'[C01_Dates] ), ALL ( '01_Calendar' ) )
VAR DATE_END0 =LASTDATE ( '01_Calendar'[C01_Dates] )
VAR DATE_TABLE0 =DATESBETWEEN ( '01_Calendar'[C01_Dates], DATE_START0, DATE_END0 )
VAR IN0 =CALCULATE ( [0001_产品数量_入库], DATE_TABLE0 )
VAR OUT0 =CALCULATE ( [0002_产品数量_出库], DATE_TABLE0 )
VAR DATE_START_ABS0 =CALCULATE ( LASTDATE ( 'T04_订单主表'[F_04_送货日期] ), ALL () ) //兼容显示到事实表最后日期。
RETURNIN0 - OUT0
//IF(DATE_START_ABS0>=DATE_END0,IN0 - OUT0,BLANK())

0004_产品数量_安全库存

本案例里面最重要的度量值;如果对中间过程理解有困难的,可以使用我们为大家准备的 Excel 辅助校验表来体会。

具体使用案例附件 Power BI 文件中的第二页《P2校验数据》导出对应的数据,在附件 Excel 《安全库存步骤分解》中分布体会。

Excel 里面有公式方便理解。

0004_产品数量_安全库存 =
/*
分布按照理想状态的标准正态分布,安全库存仅作为参考点,实际生产中需要加入业务的理解,进行调整。
SS = z * SQRT ( σd ^ 2 * μL + σL ^ 2 * μd ^ 2 )
SS:安全库存(Safe Stock)。
z : 服务水平系数,服务水平(现货率)为 0.95,在标准正态分布下对应的 z = 1.65。
L : 采购提前期,本案例中对应入库间隔天数。
μL: 平均提前期。
σL: 提前期 L 的标准差。
d : 日出库数量。
μd: 平均日出库数量。
σd: 日出库量 d 的标准差。
*/VAR N = [02_ROW 值]//默认30天
VAR DATE_END0 =LASTDATE ( '01_Calendar'[C01_Dates] )
VAR DATE_START0 =DATEADD ( DATE_END0, - N + 1, DAY ) // 注意不包含边界。
VAR DATE_Table0 =DATESBETWEEN ( '01_Calendar'[C01_Dates], DATE_START0, DATE_END0 )
VAR T01 =CALCULATETABLE ( 'T03_入库信息表', DATE_Table0 )
VAR T02 =SUMMARIZE (T01,'01_Calendar'[C01_Dates],'T00_产品表'[F_01_产品编号],'T01_门店表'[F_01_门店编号],"@入库", [0001_产品数量_入库])
VAR T03 =SUMMARIZE (T02,[F_01_产品编号],[F_01_门店编号],"@μL",VAR P0 = [F_01_产品编号]VAR M0 = [F_01_门店编号]VAR T_FILTER =FILTER ( T02, [F_01_产品编号] = P0 && [F_01_门店编号] = M0 )VAR DATE_MAX =MAXX ( T_FILTER, [C01_Dates] )VAR DATE_MIN =MINX ( T_FILTER, [C01_Dates] )VAR DAY_DIFF =DATEDIFF ( DATE_MIN, DATE_MAX, DAY )VAR T_ROWS =COUNTROWS ( T_FILTER ) - 1 // 注意去除边界减 1 。RETURNDIVIDE ( DAY_DIFF, T_ROWS, 0 ),"@σL",VAR P0 = [F_01_产品编号]VAR M0 = [F_01_门店编号]VAR T_FILTER =FILTER ( T02, [F_01_产品编号] = P0 && [F_01_门店编号] = M0 )VAR T_INDEX =SUBSTITUTEWITHINDEX (ADDCOLUMNS ( T_FILTER, "@date", [C01_Dates] ),"@INDEX", T_FILTER,[C01_Dates], ASC)VAR T_INDEX_N =ADDCOLUMNS (T_INDEX,"@N",VAR INDEX0 = [@INDEX]VAR T_1 =FILTER ( T_INDEX, [@INDEX] = INDEX0 - 1 )VAR DATE_1 =MAXX ( T_1, [@date] )VAR N0 =DATEDIFF ( DATE_1, [@date], DAY )RETURNN0)VAR T_INDEX_N_NOT_BLANK =FILTER ( T_INDEX_N, [@N] <> BLANK () )RETURNIFERROR ( STDEVX.S ( T_INDEX_N_NOT_BLANK, [@N] ), 0 ))
VAR T11 =CALCULATETABLE ('T05_订单子表',DATE_Table0,USERELATIONSHIP ( 'T04_订单主表'[F_04_送货日期], '01_Calendar'[C01_Dates] )) //送货日期需要激活关系。
VAR T12 =SUMMARIZE (T11,'01_Calendar'[C01_Dates],'T00_产品表'[F_01_产品编号],'T01_门店表'[F_01_门店编号],"@出库", [0002_产品数量_出库])
VAR T13 =SUMMARIZE (T12,[F_01_产品编号],[F_01_门店编号],"@μd",VAR P0 = [F_01_产品编号]VAR M0 = [F_01_门店编号]VAR T_FILTER =FILTER ( T12, [F_01_产品编号] = P0 && [F_01_门店编号] = M0 )VAR AVG0 =AVERAGEX ( T_FILTER, [@出库] )RETURNAVG0,"@σd",VAR P0 = [F_01_产品编号]VAR M0 = [F_01_门店编号]VAR T_FILTER =FILTER ( T12, [F_01_产品编号] = P0 && [F_01_门店编号] = M0 )VAR STDE0 =IFERROR ( STDEVX.S ( T_FILTER, [@出库] ), 0 )RETURNSTDE0)
VAR T =NATURALINNERJOIN ( T03, T13 )
VAR z = [0010_产品数量_安全库存_z]
VAR SS =//SS= z * SQRT( σd ^ 2 * μL + σL ^ 2 * μd ^ 2 )SUMX ( T, z * SQRT ( [@σd] ^ 2 * [@μL] + [@σL] ^ 2 * [@μd] ^ 2 ))
RETURNSS

三、总结

1、安全库存作为库存管理的一种重要参考,本案例中使用的是标准正态分布的理性情况,所以在实际的生产生活中还要根据业务特点再调整。

2、本案例给出了一种统计学意义下安全库存使用 DAX 计算思路。

3、另外关于库存计算的理解,历史累计对应到 DAX 中也就很好写了,首先找到业务的时间起点,因为时间起点不会变,也可以直接写死,再找到当前的时间点,结合 DATESBETWEEN 就能构建我们需要的各种业务时间描述了。

附件下载

https://jiaopengzi.com/2753.html

视频课

https://jiaopengzi.com/all-course

by 焦棚子

155_模型_Power BI Power Pivot 进销存之安全库存相关推荐

  1. 知识:什么是进销存软件系统?

    进销存管理软件负责跟踪管理企业生产经营中的原料.货物.资金,从物料采购.入库.领用到产品生产后入库.交货.回款等,每一步都有进销存管理软件记录详细数据.进销存软件帮助企业准确管理采购进货.存货.分销. ...

  2. 158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能

    158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能 一.背景 最近对 Power BI 中使用 SVG 比较感兴趣,今天我们使用 DAX + SVG 复刻一下 Ze ...

  3. 亿发进销存:企业进销存需求模型详解

    目前科学技术不断发展,企业如果无法进一步提升自身管理效率,向数字化转型,定然会在激烈的市场竞争中落后.因而,在企业内部部署一款现代化管理软件,是时代必然的趋势.现代化管理软件对企业管理起到极大的促进作 ...

  4. 进销存模型:财务业务流程化与科学管理应用

    现代化的企业发展中,基本会选择进销存管理软件来帮助优化销售管理工作,那么企业进销存管理软件具体有哪些功能?当规模不断扩张,业务不断扩大,各种问题也随之明显起来:工作量不断攀升.企业人员不断增加.跨部门 ...

  5. 图解用MySQL创建进销存数据库

    通用进销存管理信息系统数据库 客户表:客户编号,客户全称,客户邮编,客户公司地址,客户公司电话,联系人,联系电话,开户银行,银行帐号,联系人信箱,客户传真,状态: 商品表:商品编号,商品名称,产地,规 ...

  6. bs架构 erp 进销存_从应用架构看生鲜电商信息化建设

    编辑导读:对于生鲜电商来说,信息化建设是很重要的一环,所有的业务开展都离不开信息化的支持.本文作者讲从应用架构角度出发,对生鲜电商信息化建设展开分析,希望对你有帮助. 一.背景语言共识 之前介绍了从业 ...

  7. 手机进销存系统/供应链管理系统

    花了将近两个月的时间学习了一个企业级进销存项目,已经结束了两周多,现在终于有时间来对这个项目的学习做个总结了! 一.首先介绍下这个项目 (注:本人目前大三,专业为信息管理,与编程沾边不多.而我对编程很 ...

  8. java进销存系统源码_青云源码——最新企业进销存管理系统源码分享

    基于http://Asp.Net MVC4.0 + WebAPI + Knockout 技术,采用EasyUI为前台开发展示UI,Knockout主要负责前端的逻辑交互,再结合jQuery Ajax进 ...

  9. 基于ASP.NET+SQL Server实现(Web)企业进销存管理系统【100010296】

    企业进销存管理系统的设计和实现 ​ 一.摘要 进销存管理是现代企业生产经营中的重要环节,是完成企业资源配置的重要管理工作,对企业生产经营效率的最大化发挥着重要作用.本文以我国中小企业的进销存管理为研究 ...

最新文章

  1. 大数据精准投放平台_大数据库(可视化精准平台,能够使您的广告更加精准有效)...
  2. sap系统操作流程财务软件_金蝶财务软件的操作流程汇总
  3. oracle 修改聚簇因子,Oracle 基础篇 --- 聚簇因子(clustering_factor)
  4. 深度学习-Tensorflow2.2-卷积神经网络{3}-电影评论数据分类/猫狗数据集实例-15
  5. Android 4.0 SDK下载安装
  6. 本地html页面传递表单值,js实现两个页面表单传值并接收
  7. Spark精华问答 | Spark的计算方法是什么?
  8. Apache Spark Jobs 性能调优(一)
  9. SSLOJ 1338.逃亡路径
  10. java 除法向上,向下取整
  11. 张小龙的区区一件衣服竟然能引起这么大骚动
  12. databinding include 控件空指针_Android Jetpack系列——细说DataBinding
  13. 明解c语言入门篇有用吗,各位初学者在用明解C语言(入门篇)的时候花费了多长时间?...
  14. 朝阳医院数据处理分析实例
  15. 华为2019校招实习笔试-软件题
  16. 清理服务器 归档日志文件,服务器归档日志模式
  17. Percona-XtraBackup系列一:安装 perl(Time::HiRes) is needed by percona-xtrabackup-2.2.10-1.el6.x86_64...
  18. 中国IT互联网行业线下峰会清单
  19. 增量学习简介(incremental learning)
  20. 云闪付怎么对接三方php,第三方支付-银联云闪付开发教程

热门文章

  1. 制作数据可视化大屏时,可以不再使用千遍一律的主题风格
  2. https网站请求下载http的资源会被拦截
  3. 软考高项:项目管理十大知识领域
  4. 金额转换成大写和简称的方法
  5. Chrome 69 域名不显示 www 的解决办法
  6. 小程序中监听input中的拼音是否已经输完
  7. 树莓派4B + HX1838
  8. YouDontKnowJS 小黄书学习小结
  9. PTAM及第三方依赖库编译问题记录
  10. 【STM32F407的DSP教程】第33章 STM32F407不限制点数FFT实现