DAX/PowerBI系列 - 库存总价值(Inventory Value)
DAX/PowerBI系列 - 库存总价值(Inventory Value)
难度: ★★☆☆☆(2星)
适用: ★★☆☆☆(2星)
概况:
前文DAX/PowerBI系列 - 累计总计(Cumulative Total)介绍了这个模式普片适用于基于时间对业务/操作进行累计统计度量,例如:计算年度累计,月度累计,库存量,库存价值。
这里是上面的扩展,详细说说评估库存价值。
正文:
有多少货(库存)当然重要(对于运营人员),这些货值多少钱当然也十分重要(对于高层管理/财务人员)。
这里基于前文的Cumulative Total得到库存数目,同时,得到某时间内最后一笔交易的单价给产品定价,就能算出总库存价格。
还有,可以利用DAX/PowerBI系列 - 参数表(Parameter Table)来做what-if分析。
最终PowerBI效果显示如下:(耐心等待PowerBI 出来,噔噔噔噔~~~)
PowerBI效果显示如下:
应用场景:
- 见 DAX/PowerBI系列 - 累计总计(Cumulative Total)
欢迎转载,请保留原文链接和作者信息。O(∩_∩)O谢谢。DAX/PowerBI系列 - 库存总价值(Inventory Value)作者:马丁叔叔 链接:http://www.cnblogs.com/lizardbi/p/DAX-PATTERN-POWERBI-Inventory-Value.html
数据模型:
Movements表中,正数表示入库/进货数目,负数表示出库/销售数目。UnitCost对应成本和售价。
要点:
- 根据movement得到最后的transaction DateKey
- 得到根据上面DateKey库存
- 得到某时段的交易价格
库存 | 最后买价 | 最后卖价 |
UnitsInStock := --库存 IF ( MIN ( 'Date'[DateKey] ) <= CALCULATE ( MAX ( Movements[DateKey] ), ALL ( Movements ) ), CALCULATE ( SUM ( Movements[Quantity] ), FILTER ( ALL( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) ) )
LastBuyPrice := IF ( HASONEVALUE ( Products[ProductKey] ), AVERAGEX ( CALCULATETABLE ( TOPN ( 1, Movements, Movements[DateKey] ), Movements[Quantity] > 0, --买/入库 FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) ), Movements[UnitCost] ) )
LastSellPrice := IF ( HASONEVALUE ( Products[ProductKey] ), AVERAGEX ( CALCULATETABLE ( TOPN ( 1, Movements, Movements[DateKey] ), Movements[Quantity] < 0, --卖/出库 FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) ), Movements[UnitCost] ) )
注1:以上三个度量都是根据当前上下文(Filter Context)用MAX ( 'Date'[Date] )得到。
注2:这里限定了最后买/卖价格只有当仅有一个产品选中是有效
注3:AVERAGEX的作用是用来求得某天的均价(如果某天有多个价格的话),可以换成MAXX,MINX等
玩起来:
要把玩上面的PowerBI请戳:DAX/PowerBI系列 - 库存总价值(Inventory Value)