Forum Discussion
Semester-to-Semester Student Retention Tracking
- 7 months ago
Hi Megabytze
Retention is term-to-term instead date-to-date.
So instead of
Days
Date differencesYou can use
TermID as an ordered time index
Cohort = first enrolled TermID
Offset = how many terms after cohortThis is exactly how customer cohort analysis works, just replace month with term.
Model Setup
Relationships
Enrollment[TermID] → Term[TermID] (Many-to-One)
No need to use Term Start/End Date for retention logicRequired columns
From Enrollment:
StudentID
TermID
Cohort TermID (first term the student enrolled)If you don’t have Cohort TermID, create it
Cohort TermID =
CALCULATE(
MIN(Enrollment[TermID]),
ALLEXCEPT(Enrollment, Enrollment[StudentID])
)Create “Term Offset” (This Replaces Month 1, Month 2…)
In Enrollment
Term Offset =
Enrollment[TermID] - Enrollment[Cohort TermID]
This gives:
0 = cohort term
1 = next semester
2 = semester after that
Base Measures
Students in Cohort (Denominator)
Cohort Size =
CALCULATE(
DISTINCTCOUNT(Enrollment[StudentID]),
Enrollment[Term Offset] = 0
)Retained Students (Numerator)
Retained Students =
DISTINCTCOUNT(Enrollment[StudentID])Retention % Measure
Retention % =
DIVIDE(
[Retained Students],
[Cohort Size]
)Build the Matrix Visual
Rows
Term[Cohort] or Enrollment[CohortTermID]Columns
Enrollment[Term Offset]Rename as
Term 1
Term 2
Term 3Values
Retention %
(or Retained Students for the count version)This will look exactly like your customer retention example, but by semester.
Please mark it as a solution with headup if this helps you. Thank You!
Hi Megabytze
Retention is term-to-term instead date-to-date.
So instead of
Days
Date differences
You can use
TermID as an ordered time index
Cohort = first enrolled TermID
Offset = how many terms after cohort
This is exactly how customer cohort analysis works, just replace month with term.
Model Setup
Relationships
Enrollment[TermID] → Term[TermID] (Many-to-One)
No need to use Term Start/End Date for retention logic
Required columns
From Enrollment:
StudentID
TermID
Cohort TermID (first term the student enrolled)
If you don’t have Cohort TermID, create it
Cohort TermID =
CALCULATE(
MIN(Enrollment[TermID]),
ALLEXCEPT(Enrollment, Enrollment[StudentID])
)
Create “Term Offset” (This Replaces Month 1, Month 2…)
In Enrollment
Term Offset =
Enrollment[TermID] - Enrollment[Cohort TermID]
This gives:
0 = cohort term
1 = next semester
2 = semester after that
Base Measures
Students in Cohort (Denominator)
Cohort Size =
CALCULATE(
DISTINCTCOUNT(Enrollment[StudentID]),
Enrollment[Term Offset] = 0
)
Retained Students (Numerator)
Retained Students =
DISTINCTCOUNT(Enrollment[StudentID])
Retention % Measure
Retention % =
DIVIDE(
[Retained Students],
[Cohort Size]
)
Build the Matrix Visual
Rows
Term[Cohort] or Enrollment[CohortTermID]
Columns
Enrollment[Term Offset]
Rename as
Term 1
Term 2
Term 3
Values
Retention %
(or Retained Students for the count version)
This will look exactly like your customer retention example, but by semester.
Please mark it as a solution with headup if this helps you. Thank You!
- Megabytze7 months agoFrequent Visitor
Wow, I think that worked - I can't thank you enough for walking me through that! Is there an easy way to change the column names to Term 1, Term 2?