Forum Discussion
calculation question
- 1 year ago
In the model view select the table and set the key column to Id. Then you can create a calculated column like
Diff Amount = VAR CurrentAmount = X_Lagerwerte[EK_LC] VAR PrevAmount = SELECTCOLUMNS( OFFSET( -1, ALLEXCEPT( X_Lagerwerte, X_Lagerwerte[Diff Amount] ), ORDERBY( X_Lagerwerte[Datum], ASC, X_Lagerwerte[Id], ASC ), PARTITIONBY( X_Lagerwerte[Artikel_id], X_Lagerwerte[Artikel_nummer] ) ), X_Lagerwerte[EK_LC] ) VAR Result = IF( ISBLANK( PrevAmount ), 0, CurrentAmount - PrevAmount ) RETURN Result - 1 year ago
To avoid the circular dependency error in your % calculation you will need to add that column to the ALLEXCEPT in the diff amount column.
The code I wrote works using the OFFSET function. That sorts the table specified by date and ID ( the ID is in case there are multiple entries for one date ) and partitions it by the article ID and number. It then chooses the previous row relative to the current row, and pulls the amount from that previous row.
The reason that you need to include any calculated columns in the ALLEXCEPT is that otherwise OFFSET would work on the entire table, which would include those calculated columns.
I hope this explains how it works.
Hellio zahlenschubser
You this mesure
diff_amount =
VAR CurrentId = X_Lagerwerte[Id]
VAR ArtikelId = X_Lagerwerte[Artikel_id]
VAR CurrentEK = X_Lagerwerte[EK_LC]
VAR PrevEK =
CALCULATE(
MAX(X_Lagerwerte[EK_LC]),
TOPN(
1,
FILTER(
X_Lagerwerte,
X_Lagerwerte[Artikel_id] = ArtikelId &&
X_Lagerwerte[Id] < CurrentId
),
X_Lagerwerte[Id],
DESC
)
)
VAR IsFirstEntry =
CurrentId = CALCULATE(
MIN(X_Lagerwerte[Id]),
FILTER(
X_Lagerwerte,
X_Lagerwerte[Artikel_id] = ArtikelId
)
Thanks,
Pankaj Namekar | LinkedIn
If this solution helps, please accept it and give a kudos (Like), it would be greatly appreciated.
- zahlenschubser1 year agoHelper IV
That contains only variables, did you pull this from chatgpt?