博客:www.jiaopengzi.com

焦棚子的文章目录

请点击下载附件

一、背景

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

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

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

案例如下:


图1

二、数据源


图2

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

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

三、上DAX

单位库存在库天数:=
VAR T0=ADDCOLUMNS('入库',"@累计入库",
VAR dateruku='入库'[入库日期]
VAR skuruku='入库'[SKU]
VAR T01=FILTER('入库','入库'[SKU]=skuruku&&'入库'[入库日期]<=dateruku)
RETURN
SUMX(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 Pivot&Power BI DAX计算订单商品在库时间(延伸订单仓储费用)的更多相关文章

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

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

  2. 123_Power Pivot&Power BI DAX函数说明速查

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

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

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

  4. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  5. 122_Power Pivot&Power BI不连续日期的日环比

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 这两天有朋友在交流,dax中使用时间智能函数写日环比,一个 dateadd 就可以了.但是有些业务不是每天都连续 ...

  6. ajax 实现订单商品数量的增减及订单的删除进行异步更新界面

    [转载]https://blog.csdn.net/luliuying_01/article/details/78177617?locationNum=8&fps=1 由于在做答辩项目,做到购 ...

  7. .NET平台开源项目速览(19)Power BI神器DAX Studio

    PowerBI更新频繁,已经有点更不上的节奏,一直在关注和学习中,基本的一些操作大概是没问题,更重要的是注重Power Query,M函数,以及DAX的使用,这才是核心.   上个月研究了DAX的一些 ...

  8. 2019 Power BI最Top50面试题,助你面试脱颖而出系列<下>

    Q:什么是附加题? A:这就是常说的送分可选题,可做可不做:也可以说是加分项,是难点提升题. Power BI 面试题 — 附加题 33)什么是 Power View? 答案: Power View是 ...

  9. PowerBI开发 第十五篇:Power BI的行级安全

    Power BI支持行级安全(Row-Level Security,RLS)的权限控制,用于限制用户对Dashboard.报表和DataSet的访问.用户浏览的报表是相同的,但是看到的数据却是不同的. ...

随机推荐

  1. leetcode1753. 移除石子的最大得分

    题目描述: 你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​.b 和 c​​​​​​ 的 三堆 石子. 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分.当存在 两个或 ...

  2. EMS查看单个邮箱的已用空间

    Exchange查询单个邮箱用户使用状态. 查看用户"wsj"的邮箱使用状态 键入以下命令: Get-MailboxStatistics wsj | FL DiplayName,T ...

  3. [ThinkPHP]2-Rce buuoj

    [ThinkPHP]2-Rce 进来是这个页面 构造路径. 好,构造正确,但是服务器拦截了对该操作的访问 打开提示网站,看到关键信息 分析正则 老版本的正则可以用 '@'符号表示模式.以下正则是模式e ...

  4. MySQL的安装详细教程

    一.下载MySQL数据库并创建初始化文件 1.下载MySql数据压缩包-----下载网址:https://dev.mysql.com/downloads/mysql/ 2.选择兆数最少的那个下载 3. ...

  5. Oracle集群 & Grid(rac)配置,反推创建过程(重要)。

    目前机器上,oracle都是安装好的,那么我们怎么知道,之前的安装过程大概是什么样子呢? 大致安装oracle集群的内容: 一.准备和配置: 1.网卡 2.ip资源 3.scanip 4.hosts ...

  6. 使用pip管理库

    2.5 使用pip管理库 安装Python后会默认安装pip工具,该工具可以用来安装.升级和移除库.默认情况下 pip 将从[Python Package Index]https://pypi.org ...

  7. (更新中)"华为杯" 武汉大学21级新生程序设计竞赛 非官方题解

    "华为杯" 武汉大学21级新生程序设计竞赛 https://ac.nowcoder.com/acm/contest/31620#question D.和谐之树 思路:披着线段树外皮 ...

  8. 简单手写一个jqurey

    1 /** 2 * @description 手写jquery 3 * @author ddxldxl 4 */ 5 class Jquery { 6 constructor(selector) { ...

  9. vue 实现高德坐标转GPS坐标

    vue 实现高德坐标转GPS坐标 首先介绍一下常见的几种地图的坐标类型: WGS-84:这是一个国际标准,也就是GPS坐标(Google Earth.或者GPS模块采集的都是这个类型). GCJ-02 ...

  10. 技术分享 | Selenium 测试用例编写

    编写Selenium测试用例就是模拟用户在浏览器上的一系列操作,通过脚本来完成自动化测试. 编写测试用例的优势: 开源,免费. 支持多种浏览器 IE,Firefox,Chrome,Safari. 支持 ...