Forum Discussion

erhang's avatar
erhang
Helper II
8 years ago
Solved

dax formula help (Distribution)

Hi dear Power BI Family ;

 

İ am happy to be here to take always support from you  , so thanks in advance to everybody.

 

İ need your helps one more time to create a formula about below situation .

 

İ have two tables as below  .

 

Table 1 : contains product , request delivery date, and requested quantities .

Table 2 : contains the stock quantities of the products.

 

 

 

 

 

 

 

As you see i have different delivery dates with different quantities.İ just want to distrubute the stock quantities based on delivery dates..İ would like to show you to  step by step ( based on only one product ) .İ want to tell like that because the issue has some interesting details so just i want to tell correctly 

 

For Product PRC1 distribution: 

 

 

 

 

 

For Product PRC2 distribution: 

 

 

 

 

and the finally whole new table 1 will be as below : 

 

 

 I hope it is possible to make distrubition like that 

 

İf it is possible could you help me pls about this issue 

 

Thanks 

Erhan 

  • HI erhang

     

    Try this MEASURE

     

    Distributed Stocks =
    VAR stock_to_distirubute =
        CALCULATE (
            SUM ( Table2[Stock Qty] ),
            CROSSFILTER ( Table2[Product], Table1[Product], BOTH )
        )
    VAR Cumulativestock =
        CALCULATE (
            SUM ( Table1[Requested Qty] ),
            FILTER (
                ALLEXCEPT ( Table1, Table1[Product] ),
                Table1[Rquested Delivery Date]
                    <= SELECTEDVALUE ( Table1[Rquested Delivery Date] )
            )
        )
    VAR myqty =
        IF (
            Cumulativestock > stock_to_distirubute,
            SELECTEDVALUE ( Table1[Requested Qty] )
                - ( Cumulativestock - stock_to_distirubute ),
            SELECTEDVALUE ( Table1[Requested Qty] )
        )
    RETURN
        IF ( myqty < 0, 0, myqty )
  • Hi erhang

     

    To solve this situation, first add a calculated column as follows

     

    Adjusted Delivery Date =
    Table1[Rquested Delivery Date]
        + Table1[Document Number] / 10000

    Now you can revise the original measure by replacing Requested Delivery Date with Adjsuted Delivery Date

    i.e.

     

    Distributed Stocks =
    VAR stock_to_distirubute =
        CALCULATE (
            SUM ( Table2[Stock Qty] ),
            CROSSFILTER ( Table2[Product], Table1[Product], BOTH )
        )
    VAR Cumulativestock =
        CALCULATE (
            SUM ( Table1[Requested Qty] ),
            FILTER (
                ALLEXCEPT ( Table1, Table1[Product] ),
                Table1[Adjusted Delivery Date]
                    <= SELECTEDVALUE ( Table1[Adjusted Delivery Date] )
            )
        )
    VAR myqty =
        IF (
            Cumulativestock > stock_to_distirubute,
            SELECTEDVALUE ( Table1[Requested Qty] )
                - ( Cumulativestock - stock_to_distirubute ),
            SELECTEDVALUE ( Table1[Requested Qty] )
        )
    RETURN
        IF ( myqty < 0, 0, myqty )

10 Replies

  • Zubair_Muhammad's avatar
    Zubair_Muhammad
    Community Champion

    HI erhang

     

    Try this MEASURE

     

    Distributed Stocks =
    VAR stock_to_distirubute =
        CALCULATE (
            SUM ( Table2[Stock Qty] ),
            CROSSFILTER ( Table2[Product], Table1[Product], BOTH )
        )
    VAR Cumulativestock =
        CALCULATE (
            SUM ( Table1[Requested Qty] ),
            FILTER (
                ALLEXCEPT ( Table1, Table1[Product] ),
                Table1[Rquested Delivery Date]
                    <= SELECTEDVALUE ( Table1[Rquested Delivery Date] )
            )
        )
    VAR myqty =
        IF (
            Cumulativestock > stock_to_distirubute,
            SELECTEDVALUE ( Table1[Requested Qty] )
                - ( Cumulativestock - stock_to_distirubute ),
            SELECTEDVALUE ( Table1[Requested Qty] )
        )
    RETURN
        IF ( myqty < 0, 0, myqty )
  • Anonymous's avatar
    Anonymous
    Not applicable

    Hello,

     

    Thanks for the answer to the original post. I wanted to know if it is possible to add a bit more complexity to the problem by adding another column to table 2.

     

    https://imgur.com/a/gHiCLm7 

     

    Given the image below, and the algorithm already given, how can i include the idea that the stock is not already available at the beginning ? i receive a bit of stock every week (hence my week column in table 2).

    Also, how can i simulate the fact that i might have to distribute the stock during two weeks  because not enough stock (see example in grey )? How can i display the week when the distribution occured ?

     

    Thanks a lot in advance.