Forum Discussion
Calculating Score Difference between oldest and newest score
- 5 months ago
Please try the measure below:
Point Increase = VAR _Student = SELECTEDVALUE ( 'Table'[student_name] ) VAR _EarliestDate = CALCULATE ( MIN ( 'Table'[date_taken] ), 'Table'[student_name] = _Student ) VAR _LatestDate = CALCULATE ( MAX ( 'Table'[date_taken] ), 'Table'[student_name] = _Student ) VAR _EarliestScore = CALCULATE ( MAX ( 'Table'[Composite Score] ), 'Table'[student_name] = _Student, 'Table'[date_taken] = _EarliestDate ) VAR _LatestScore = CALCULATE ( MAX ( 'Table'[Composite Score] ), 'Table'[student_name] = _Student, 'Table'[date_taken] = _LatestDate ) RETURN _LatestScore - _EarliestScoreIf you strictly need calculated column, you could try using:
Point Increase = VAR _Student = 'Table'[student_name] VAR _EarliestDate = CALCULATE ( MIN ( 'Table'[date_taken] ), ALL ( 'Table' ), 'Table'[student_name] = _Student ) VAR _LatestDate = CALCULATE ( MAX ( 'Table'[date_taken] ), ALL ( 'Table' ), 'Table'[student_name] = _Student ) VAR _EarliestScore = CALCULATE ( MAX ( 'Table'[Composite Score] ), ALL ( 'Table' ), 'Table'[student_name] = _Student, 'Table'[date_taken] = _EarliestDate ) VAR _LatestScore = CALCULATE ( MAX ( 'Table'[Composite Score] ), ALL ( 'Table' ), 'Table'[student_name] = _Student, 'Table'[date_taken] = _LatestDate ) RETURN _LatestScore - _EarliestScore - 5 months ago
hi banhngu
To calculate the point increase between a student's earliest and latest composite scores, you can use Variables (VAR) combined with the CALCULATE function to safely navigate the dates for each student.Because you mentioned adding this as a separate column, I will provide the DAX for a Calculated Column, but I will also provide the Measure approach, which is usually recommended over calculated columns for dynamic reporting.Point Increase = // 1. Identify the earliest and latest dates for this specific student VAR EarliestDate = CALCULATE ( MIN ( TestScores[date_taken] ), ALLEXCEPT ( TestScores, TestScores[student_name] ) ) VAR LatestDate = CALCULATE ( MAX ( TestScores[date_taken] ), ALLEXCEPT ( TestScores, TestScores[student_name] ) ) // 2. Retrieve the Composite Score on the Earliest Date VAR EarliestScore = CALCULATE ( MAX ( TestScores[Composite Score] ), ALLEXCEPT ( TestScores, TestScores[student_name] ), TestScores[date_taken] = EarliestDate ) // 3. Retrieve the Composite Score on the Latest Date VAR LatestScore = CALCULATE ( MAX ( TestScores[Composite Score] ), ALLEXCEPT ( TestScores, TestScores[student_name] ), TestScores[date_taken] = LatestDate ) // 4. Calculate the difference RETURN LatestScore - EarliestScoreIf you place student_name into a Table or Matrix visual in your report, a Measure is much more efficient. A measure does not consume memory in your data model like a calculated column does. Because the visual itself automatically filters down to the specific student, you do not need the ALLEXCEPT function here.
Point Increase Measure = VAR EarliestDate = MIN ( TestScores[date_taken] ) VAR LatestDate = MAX ( TestScores[date_taken] ) VAR EarliestScore = CALCULATE ( MAX ( TestScores[Composite Score] ), TestScores[date_taken] = EarliestDate ) VAR LatestScore = CALCULATE ( MAX ( TestScores[Composite Score] ), TestScores[date_taken] = LatestDate ) RETURN IF ( NOT ISBLANK(EarliestScore) && NOT ISBLANK(LatestScore), LatestScore - EarliestScore )If this helped, please consider giving kudos and mark as a solution
@me in replies or I'll lose your thread
Hi banhngu,
Thanks for confirming, glad to hear the responses helped and that you were able to identify a solution.
If you run into any further questions or need additional clarification, feel free to reach out happy to assist anytime.
Hi banhngu,
Just wanted to follow up. If the shared guidance worked for you, that’s wonderful hopefully it also helps others looking for similar answers. If there’s anything else you'd like to explore or clarify, don’t hesitate to reach out.
Thank you.