Forum Discussion
How to create calculated column which contain a value = current value *0.3 + previous value *0.7
- 3 years ago
Hi kidpk111
Attached sample file with the solutionStandarized Value = VAR CurrentTime = Data[Time] VAR CurrentIDTable = CALCULATETABLE ( Data, ALLEXCEPT ( Data, Data[ID] ) ) VAR TableOnAndBefore = FILTER ( CurrentIDTable, Data[Time] <= CurrentTime ) VAR Count1 = COUNTROWS ( TableOnAndBefore ) VAR MinTime = MINX ( TableOnAndBefore, Data[Time] ) RETURN SUMX ( TableOnAndBefore, VAR CurrentValue = Data[Test Value] VAR ThisTime = Data[Time] VAR T1 = FILTER ( TableOnAndBefore, Data[Time] <= ThisTime ) VAR Count2 = COUNTROWS ( T1 ) VAR P1 = IF ( ThisTime = MinTime, 0, 1 ) VAR P2 = Count1 - Count2 RETURN 0.3 ^ P1 * 0.7 ^ P2 * CurrentValue )
Hi kidpk111
Attached sample file with the solution
Standarized Value =
VAR CurrentTime = Data[Time]
VAR CurrentIDTable = CALCULATETABLE ( Data, ALLEXCEPT ( Data, Data[ID] ) )
VAR TableOnAndBefore = FILTER ( CurrentIDTable, Data[Time] <= CurrentTime )
VAR Count1 = COUNTROWS ( TableOnAndBefore )
VAR MinTime = MINX ( TableOnAndBefore, Data[Time] )
RETURN
SUMX (
TableOnAndBefore,
VAR CurrentValue = Data[Test Value]
VAR ThisTime = Data[Time]
VAR T1 = FILTER ( TableOnAndBefore, Data[Time] <= ThisTime )
VAR Count2 = COUNTROWS ( T1 )
VAR P1 = IF ( ThisTime = MinTime, 0, 1 )
VAR P2 = Count1 - Count2
RETURN
0.3 ^ P1 * 0.7 ^ P2 * CurrentValue
)
Thank you alot for this, it work like a charm. This is a new technique for me, may I ask why you put VAR inside a formula ?
- tamerj13 years agoCommunity Champion
Formulas are easier to author and easier to understand using variables. Also this way I can make sure tables and expressions are not calculated multiple times hence the overall formula will be more efficient.
this is a recursive calculation problem which is not supported by dax therefore, a work around shall require some mathematical skills to be applied in conjunction with your understanding of what dax can and cannot do.- kidpk1113 years agoHelper I
Thank you for your reply, what I don't understand is the logic behind this piece of the formula. Really appreciate your solution because it took me a lot of braincell and still can't figure it out,lol