zoukankan      html  css  js  c++  java
  • DAX/PowerBI系列

    DAX/PowerBI系列 - 库存总价值(Inventory Value)

    欢迎交流与骚扰

     

     

    难度: ★☆☆☆(2星)

    适用: ★☆☆☆(2星)

    概况:

    有多少货(库存)当然重要(对于运营人员),这些货值多少钱当然也十分重要(对于高层管理/财务人员)。

    一般在每个会计周期结束时,会根据市场售价或者成本价来会评估库存总价值(取低者) 。

    评估方法有四种:先进先出(FIFO: first-in, first-out),后进先出(LIFO: last-in, first-out),均价(AVCO: average cost),指定价格

    正文:

    前文DAX/PowerBI系列 - 累计总计(Cumulative Total)介绍了这个模式普片适用于基于时间对业务/操作进行累计统计度量,例如:计算年度累计,月度累计,库存量,库存价值。

    这里基于前文的Cumulative Total得到库存数目,同时,得到某时间内最后一笔交易的单价给产品定价,就能算出总库存价格。

    还有,可以利用DAX/PowerBI系列 - 参数表(Parameter Table)来做what-if分析。

    最终PowerBI效果显示如下(耐心等待PowerBI 出来,噔噔噔噔~~~)

     https://app.powerbi.com/view?r=eyJrIjoiZmQ1MTBiYmQtZDIyYi00OGQ1LWFjOTgtNjE2N2VlOTc0OWQyIiwidCI6ImQxYWY4NDdiLTJjZTEtNDRjYi1iYjUwLWQ1ODAyYmI0M2M4YiIsImMiOjEwfQ%3D%3D

    应用场景:

    欢迎转载,请保留原文链接和作者信息。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)

  • 相关阅读:
    关于jquery动态添加的新元素无法绑定事件那些事
    关于jquery获取json数据的格式问题
    beescms文章列表页函数学习
    beescms相关函数学习
    这是二零一四年十点整的广州
    POJ 1852 Ants 分析
    hiho_1114_扫雷
    hiho_1014_Trie_Tree
    排列组合
    用链表写的冒泡排序理解
  • 原文地址:https://www.cnblogs.com/lizardbi/p/DAX-PATTERN-POWERBI-Inventory-Value.html
Copyright © 2011-2022 走看看