Forum Discussion

DanielPasalic's avatar
DanielPasalic
Icon for Helper II rankHelper II
6 years ago

How to calculate differences in values between dates in rows within the same column

Hi all I have a problem to My tableDAX formula that did not worked.  There are 4 different columns: - date, id, Art.nr. and sold_item I would like to calculate differences in sold_item for products with same ID between dates (starting from oldest to latest date).  I tried in DAX with the calculated column but did not work.  Anyone who can give me advice on how to do it?

5 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable
    Should this not be calculated in Power Query? If this is not a dynamic calculation (and I doubt it is), please do it in PQ. Simpler, faster, more efficient.
      • Anonymous's avatar
        Anonymous
        Not applicable
        // This should be calculated in Power Query.
        // I give you a DAX formula but if the table is
        // big (and it seems to be a fact table), you
        // might wait a very long time for this calculation
        // to end. Depending on the size of the table
        // you might even get a memory overflow. Then
        // you know you have to do it in PQ. Let's say
        // your table is T (I don't want to type the full name).
        // By the way, using CALCULATE for a row-by-row
        // calculation in a fact table will get you in
        // trouble in no time.
        
        sales_diff = // calc column
        var __artikelNr = T[Artikelnr]
        var __firstValue =
            SUMX(
                // I can use topn(1,...) here because
                // all rows with the same dates (ties)
                // will be returned. Same goes for the
                // other expression.
                topn(1,
                    filter(
                        T,
                        T[Artikelnr] = __artikelNr
                    ),
                    T[Date],
                    ASC
                ),
                T[Salt antal totalt]
            )
        var __secondValue =
            SUMX(
                topn(1,
                    filter(
                        T,
                        T[Artikelnr] = __artikelNr
                    ),
                    T[Date],
                    DESC
                ),
                T[Salt antal totalt]
            )    
        return
            __firstValue - __secondValue