博客:www.jiaopengzi.com

焦棚子的文章目录
请点击下载附件

一、背景

前面已经写过一个先进先出的库龄案例,在业务发生又有这样一个需求:先进先出前提,需要按照订单计算每个商品在库时间,也就是说计算一个订单中的商品从入库到出库的时间。

当已知商品的每天库存费用是多少时,可计算出每个订单的仓储费用,用在仓储的内部结算中。

关键点在于计算出单位库存在库天数,同时也引出了本文的案例(如需计算仓储费用加上一个商品单价即可,本文不单独说明)。

案例如下:

图1

二、数据源

图2

1、本案例中暂时没有用到日期表,养成良好的建模习惯也是很有必要的。

2、单位库存在库天数的计算逻辑见《图1》。

三、上DAX

单位库存在库天数:=
VAR T0=ADDCOLUMNS('入库',"@累计入库",VAR dateruku='入库'[入库日期]VAR skuruku='入库'[SKU]VAR T01=FILTER('入库','入库'[SKU]=skuruku&&'入库'[入库日期]<=dateruku)RETURNSUMX(T01,[入库数量]))
VAR T1=ADDCOLUMNS(‘出库’,"@累计出库",
VAR datechuku=‘出库’[出库日期]
VAR skuchuku=‘出库’[SKU]
VAR T11=FILTER(ALL(‘出库’),‘出库’[SKU]=skuchuku&&‘出库’[出库日期]<=datechuku)
RETURN
SUMX(T11,[出库数量])
)VAR T2=ADDCOLUMNS(ALL(‘出库’),"@累计出库",
VAR datechuku_all=‘出库’[出库日期]
VAR skuchuku_all=‘出库’[SKU]
VAR T21=FILTER(ALL(‘出库’),‘出库’[SKU]=skuchuku_all&&‘出库’[出库日期]<=datechuku_all)
RETURN
SUMX(T21,[出库数量])
)
VAR T3=ADDCOLUMNS(T1,"@result",
VAR dateck=[出库日期]
VAR ljck=[@累计出库]
VAR skuac=[SKU]
VAR T31=FILTER(T2,[SKU]=skuac&&[出库日期]<dateck)//前一个@累计出库
VAR MAXCK=MAXX(T31,[@累计出库])
VAR T32=FILTER(T0,[SKU]=skuac&&[入库日期]<=dateck&&[@累计入库]>=MAXCK)
VAR T33=ADDCOLUMNS(T32,"@库存",
VAR datemin=MINX(T32,[入库日期])
RETURN
IF([入库日期]=datemin,[@累计入库]-MAXCK,[入库数量])
)
VAR T34=FILTER(T33,[@累计入库]-ljck>=0)
VAR datemax=MINX(T34,[入库日期])//累计@库存刚好满足订单需求的最大日期
VAR T35=FILTER(T33,[入库日期]<=datemax)
VAR T36=ADDCOLUMNS(T35,"@天数",DATEDIFF([入库日期],dateck,DAY)+1,"@数量",IF([@累计入库]-ljck>0,[@库存]-([@累计入库]-ljck),[@库存]))
RETURN
SUMX(T36,[@天数]*[@数量])
)
RETURN
SUMX(T3,[@result])

四、总结

1、案例本身没有太多复杂的DAX应用;

2、主要是T1和T2中ALL的应用,在T3的T31的外部筛选上下文的去除体现,业务逻辑转换上下文重点;

3、T3中涉及到多层的嵌套特别是T36,这个需要有空间想象力,可以借助Dax Studio去分步理解;

4、另外一个关于临时列“@”的命名要求,养成良好的DAX书写习惯。详见如下链接SQLBI文章。

Naming temporary columns in DAX - SQLBI​www.sqlbi.com

by 焦棚子

焦棚子的文章目录

127_Power PivotPower BI DAX计算订单商品在库时间(延伸订单仓储费用)相关推荐

  1. 124_Power PivotPower BI DAX优化计算最大连续次数

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最大连续次数或者是最大连续子序列问题,在DAX中如何快速计算呢? 思路 1.N-1:按照INDEX错位 2.ST ...

  2. 123_Power PivotPower BI DAX函数说明速查

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 说明 1.基于DAX Studio 2.9.2版本导出整理: 2.DAX Studio网站,及时更新下载,DAX学习利器: ...

  3. 129_Power PivotPower BI DAX不同维度动态展示动态坐标轴

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 某天在和**那还是叫我大铁吧** 交流关于季度&月度同时展示的问题,感概中国式报表真的需求很微妙. 下面 ...

  4. 数据库-订单商品表(单表-商品销量表)

    订单商品表 (order_detail) |-- 自动编号 |-- 订单编号 |-- 商品编号 |-- 商品名称 (product_name, 商品可能删除,所以这里要记录,不能直接读商品表) |-- ...

  5. 怎么用计算机管理你的外卖订单,外卖系统怎么确定收到订单 外卖接单软件怎么做...

    原标题:外卖系统怎么确定收到订单 外卖接单软件怎么做 过硬(10guoying.com)8月2日 观察:为了提高品牌竞争力,很大餐厅都回同时兼顾门店的堂食点餐以及线上外卖订餐业务,通过线上线下相互引流 ...

  6. 126_Power BI中使用DAX计算股票RSI及股票均线相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前些日子,有朋友在交流股票RSI用DAX处理的问题,由于RSI股票软件的算法几乎都是需要用到股票从上市第一天开始 ...

  7. power bi 中计算_Power BI中的期间比较

    power bi 中计算 Just recently, I've come across a question on the LinkedIn platform, if it's possible t ...

  8. R语言销售分析计算某商品的连带或连带率指标函数

    销售数据分析中经常需要计算某个商品的连带指标,但是R中并没有现成的函数可以计算商品的连带率,所以我们可以自定义函数,让结果返回所有商品连带指标组成的一个数据框 order:订单号:item:商品:vo ...

  9. Power BI Dax 之时间智能函数

    本文会对一系列的时间智能函数做分析大体如下: DATEADD,SAMEPERIODLASTYEAR,DATESMTD,DATESQTD,DATESYTD 以及这些dax函数的组合求上期,本期至今,上期 ...

最新文章

  1. N4 接口解耦的可行性试验
  2. DL之ResNet:ResNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  3. 项目微管理 - 总结也是新的开始
  4. 【OpenCV 例程200篇】40. 图像分段线性灰度变换
  5. python内存池机制_python的内存管理机制
  6. java 多线程 一个博客
  7. 带小手的文档怎么复制
  8. git把项目上传到github的常用命令
  9. 【素史】曼怛罗(70)
  10. 超级超级实用的整个网页截图技巧
  11. Word怎么转换成长图
  12. 计算机网络工资如何计算,2019 税后工资计算器,能够准确算薪
  13. 简单写一下未来10年的职业规划
  14. 互联网信息服务安全评估报告
  15. 2022总结,强风吹拂
  16. FinalShell连接不上LinuxCentOS-7的解决方案
  17. 学会这些,不做委屈的项目经理
  18. GYM 101350 I. Mirrored String II
  19. Shell中显示彩色二维码
  20. html5什么网站知乎,老司机秒懂的5个资源网站,知乎超过10万人推荐,竟被我挖掘到了...

热门文章

  1. 实例变量与局部变量的区别 java 1615135277
  2. Java 控制台程序的基本结构测试分析草稿
  3. 通过火影忍者英雄案例 理解数据类型
  4. linux-新建一个centos虚拟机系统-安装全过程图示
  5. python-循环-打印菱形图案
  6. python-循环的入门
  7. The setting logImpl is not known
  8. angular6--创建项目
  9. 猫都能学会的Unity3D Shader入门指南(二)
  10. 如何用sbt新建akka项目