0
votes

Need some help to calculate the following in two separate columns in a DAX formula

  • Earliest Reading for each equip

  • Latest Reading for each equip

Screenshot of sheet

I've been able to get the first date of each equip with this.

CALCULATE(FIRSTDATE(Transactions[Date]),ALLEXCEPT(Transactions,Transactions[Equip No]))

But cannot work out how to get the 'Reading' value that is associated with the first date

I've managed to do this with a measure, but would also like to get this in a calc. column.

Latest Reading = 
SUMX (
    VALUES( Transactions[Equip No] ),
    CALCULATE ( MIN ( Transactions[Reading] ), FIRSTDATE ( Transactions[Date] ) )
)
1
Consider rewording your Question line as a question.AaronM

1 Answers

0
votes

this should help you.

Earliest Column

Earliest = 
VAR __equipNumber = 'Transaction'[Equip No] //Get the Equip No to filter the main table and create an auxiliar table for every different Equip No.
VAR __minDate = CALCULATE( MIN('Transaction'[Date]), FILTER( 'Transaction', 'Transaction'[Equip No] = __equipNumber ) ) //Get the lowest date asociated to every Equip No.
VAR __subTable = FILTER( 'Transaction', 'Transaction'[Date] = __minDate ) //Create a table that contains 1 row asociate to the lowest date.
Return CALCULATE(SUM('Transaction'[Reading]), __subTable) //Operate over the auxiliar table to get the expected value.

Latest Column

Latest = 
VAR __equipNumber = 'Transaction'[Equip No]
VAR __maxDate = CALCULATE( MAX('Transaction'[Date]), FILTER( 'Transaction', 'Transaction'[Equip No] = __equipNumber ) )
VAR __subTable = FILTER( 'Transaction', 'Transaction'[Date] = __maxDate )
Return CALCULATE(SUM('Transaction'[Reading]), __subTable)

I obtained the expected result

enter image description here