Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
BlueTeam
Helper II
Helper II

Student Retention: Term-by-Term, Fall-to-Fall, Year-by-Year

Trying to figure out how to accurately measure retention of students from Term-to-Term, Fall-to-Fall and Year-by-Year and am failing.  The issue around applying consistant filters.

 

Goal:

Measure retention as described above AND be able to consistently apply the same cohort filter(s) to subsequent term/year enrollment data.  I'd like to add additional filters such as Declared Major, etc. in the future.

 

Example:

Cohort=2017 Academic Year, Term=2, Enrollment Status=Full-Time

 

Results:

Cohort is accurate but subsequent term data are not.  Subsequent term data may be a mix of Full-Time, Part-Time and Non-Credit.

 

Currently I'm using two tables (cohort and subsequent enrollment data) but would like to use a single table containing all enrollment data over a 5-year period.

 

Thanks everyone!

22 REPLIES 22
v-shex-msft
Community Support
Community Support

Hi @BlueTeam ,

Can you please share some sample data with expect result to help us clarify your requirement?

How to Get Your Question Answered Quickly

Regards,

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Sure.  Here is a simplified example of enrollment data.  This would be an example of all enrollment history.  I would like to define the starting cohort by filters (Academic Year, Academic Term, Enrollment Status, etc.) and apply the same or different filters on the resulting retention side.  Obviously the retention academic period (YearTerm) must be greater than the cohort YearTerm.  Hope that make sense.  Thanks!

 

Academic YearAcademic TermYearTermidEnrollment StatusCredit_Hours
20174201741000Full-Time12
20164201641000Full-Time12
20173201731000Part-Time4
20172201721001Full-Time12
20173201731001Full-Time12
20174201741001Part-Time9
20184201841001Part-Time9
20182201821001Part-Time9
20164201641001Part-Time4
20163201631001Part-Time4
20162201621001Part-Time4
20183201831001Part-Time9
20174201741002Full-Time13
20162201621002Full-Time15
20163201631002Full-Time17
20164201641002Full-Time18
20172201721002Full-Time17
20173201731002Full-Time17
20194201941003Non-Credit0
20193201931003Non-Credit0
20164201641004Non-Credit0
20163201631005Non-Credit0
20163201631006Part-Time8
20172201721006Part-Time4
20194201941007Part-Time4
20192201921007Part-Time4
20193201931007Part-Time4

Hi,

Please show the exact result you are expecting on this sample data.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Here is a quick example (not final look).  On left is the starting cohort where I can apply filers to Enrollment Status, YearTerm, etc..  The graph shows retention by subsequent term, but it shows all retention, regardless of Enrollment Status in the joined table.  For example, If I wanted to know how many non-credit students were enrolled for Fall (yearterm 20192) who subsequently enrolled part-time, I would select the Part-Time filter on the right (enrollment table).  Unfortunately I get wonky results (second picture).  As you can see, Term 2 completely disappears and I end up with completely inaccurate results.

 

In this example, I only show one year but the goal is to show year-to-year in another graph with similar filters (YearTerm to YearTerm).  For example, Fall 2017-18 to Fall 2018-19 and break that out by starting Enrollment Status and ending Enrollment Status over the entire timeline.  So 1,000 students start out as full-time, we want to track not only their retention but also their enrollment status term by term, year by year.  Make sense?

 

Thanks again!

 

Photo 1: Retention by Term for Non-Credit Students

Capture1.PNG

 

Photo 2: Retention by Term for Non-Credit to Full-Time

Capture2.PNG

Here is the sample tables and relationship I've started with.

Capture3.PNG

Hi,

It would be ideal if you could show the result in a Table.  Once the Table is ready, we can build whatever visual we want.  Also, why are there 2 source tables - there should be one one source Table.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Yes, I would prefer to use a single table with all enrollment history.  Below is a made up table of what I'm looking to do.

 

1. The starting cohort in this case is Fall 2017-18, Term 2.  The table shows the entire academic year plus the next fall term (Fall 2018-19, Term 2).  I've used concatenated Academic Year and Academic Term in the past to perform this analysis in SQL so for example, the cohort above would have a value of 20182 and the next academic fall term would be 20192.

 

The goal here is not not just calculate retention but to also get into the weeds of how students swirl between full-time, part-time and non-credit enrollment.  In the first example, 1050 full-time students started in Fall 2017-18, Term 2 (starting cohort).  Subsequently, only 985 retained that status in Winter Term, 872 in Spring and 646 the next Fall Term.

 

 

Fall 2017-18Winter 2017-18Spring 2017-18Fall 2018-19 
Term 2Term 3Term 4Term 2Enrollment Status
1050985872646Full-Time to Full-Time
105021220298Full-Time to Part-Time
10501050Full-Time to Non-Credit
     
602454398125Part-Time to Part-Time
602865135Part-Time to Full-Time
6021231Part-Time to Non-Credit
     
180515621301840Non-Credit to Non-Credit
1805574312Non-Credit to Part-Time
180515157Non-Credit to Full-Time

Hi,

I think i can help here.  Share that single table from where you want to generate your expected result.  Based on that Table you share, please also share the exact figures you want to see in the Cohort table so that i can tally my answers with yours.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Here is the sample table of enrollment data by enrollment status.

 

Sample Table

 

 

Hi,

The calculations will become a lot easier if, from the Year and term, we can generate a date (could be the first date of the term).  So please let me know the starting date of each of the four terms for any year.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Yes, I use another lookup table for those data.  Here they are by YearTerm, which is in the first shared table.

 

YearTermStartDate
201616/22/2015
201629/28/2015
201631/4/2016
201643/28/2016
201716/20/2016
201729/26/2016
201731/9/2017
201744/3/2018
201816/26/2017
201829/25/2017
201831/8/2018
201844/2/2018
201916/25/2018
201929/24/2018
201931/7/2019
201944/1/2019
202016/24/2019
202029/23/2019
202031/6/2020
202043/30/2020

Hi,

Please also share the start dates for 20151, 20152, 20153 and 20154 since these Year/term combinations appear in your source data.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Ashish,

 

Your work on this is so greatly appreciated!  Any chance you can load this new dataset (link below)?  I found flaws in the random generation code for the original sample dataset.

 

I've verified these data and outcomes against the samples provided below.  Samples include retention over three terms as well as several scenarios of enrollment status change between terms.

 

Thank you again so very, very much!

 

Sample Data 2

 

Unduplidated Headcount by YearTerm, Fall 2015 (20152):

Academic YearAcademic TermYearTermUnduplicated HeadcountEnrollment Status
2015220152884Full-Time
20152201521412Non-Credit
2015220152968Part-Time

 

 

Retention Term-to-Term by Same Enrollment Status Examples:

 

Full-Time Retention, Fall to Winter to Spring, 2015:

Academic YearAcademic TermYearTermFall UnduplicatedWinter UnduplicatedSpring Unduplicated
2015220152884636490

 

Part-Time Retention, Fall to Winter to Spring, 2015:

Academic YearAcademic TermYearTermFall UnduplicatedWinter UnduplicatedSpring Unduplicated
2015220152968476290

 

Non-Credit Retention, Fall to Winter to Spring, 2015:

Academic YearAcademic TermYearTermFall UnduplicatedWinter UnduplicatedSpring Unduplicated
20152201521412533357

 

 

Enrollment Status Change Examples:

 

Fall Full-Time to Winter and Spring Part-Time Enrollment Status Change, 2015:

Academic YearAcademic TermYearTermFall UnduplicatedWinter UnduplicatedSpring Unduplicated
201522015288410045

 

Fall Non-Credit to Winter and Spring Full-Time Enrollment Status Change, 2015:

Academic YearAcademic TermYearTermFall UnduplicatedWinter UnduplicatedSpring Unduplicated
201522015214124829

 

Fall Non-Credit to Winter and Spring Part-Time Enrollment Status Change, 2015:

Academic YearAcademic TermYearTermFall UnduplicatedWinter UnduplicatedSpring Unduplicated
201522015214125420

 

Hi,

You are welcome.  My results do not match with yours.  As can be seen in the screenshot below, the number of students who enrolled in the Full time course for the first time in 20152 were 824 (as per you this figure is 884).  If i simply filter your source dataset with the criteira of Full Time and 20152, copy the ID's to another sheet and then remove duplicates, the count of ID's is 884 (the figure that you are reporting).  However, in this list are 60 students who also enrolled in 20151.  If you exclude those students, then result is 824, which i think is what you really want.  I have not even checked the others figures you are reporting because i'd like to clarify this first.

Untitled.png

 


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Any term can be the starting term and any prior attendance (before starting term) should not be factored.  So in the above sample results I gave, I used 20152 (fall term of 2015) as the starting cohort.  The retention rates are calculated by only those students in attendance for that specific term and then carried forward (matched) to the following terms and as selected by the end user.  I could have just as easily looked at 20154 (spring term of 2015) and compared this cohort to 20162 (fall term 2016).  The results should always compare the cohort term (starting term) to any following terms selected in the filter, irrespective if the student has attended prior.

 

Example:  User wishes to identify students from Fall Term 2015 (20152) who maintained a Full-Time enrollment status for Winter and Spring terms of the same year.

 

Steps to Define Cohort (starting term students) (in sql, this would be an left outer join):

  1. User selects starting cohort year/term = "20152"
  2. User selects an enrollment status of="Full-Time"

 

Steps to Define Retention Metrics for Subsequent Terms:

  1. User selects all following terms to track retention by enrollment status.  In this example, user would select year/terms "20153" and "20154".
  2. User selects one or more enrollment status types.  In this example, user selects only "Full-Time"

 

Results:

  1. Grid showing unduplicated count of starting cohort (year/term=20162) and sees a total of 824 unduplicates students in starting cohort.
  2. Subsequent year/terms selections show Winter Term retention of 636 and Spring Term retention of 490.  In grid form, it might look something like this.  These students attended each of the three terms and all maintained an enrollment status of "full-time".
201522015320154
FTFTFT
824636490

 

Example 2:  User would like to look at all possible retention metrics for these same students.

 

Steps to Define Retained Metrics:

1. User selects all enrollment status types for retained students (right side).  Results might look something like this (note that I did not calculate the empty cells yet so some will appear blank.  So in this example, of the 824 Full-Time for the starting cohort, 100 switched to part-time in winter term and only 45 of those remained part-time in spring term.  And, of the 968 part-time in the cohort, 476 remained part-time for winter and of those, 290 remained part-time in spring.

 

 201522015220152201532015320153201542015420154
 FTPTNCFTPTNCFTPTNC
FT824--636100 49045 
PT-968- 476  290 
NC--141248545332920357

 

Again, Ashish, I really appreciate your guidance here and I feel bad about using so much of your time.  I think if I could get to the above full metric grid, I might be able to take it from there.  Thanks again!

Hi,

OK.  So this is that i get then.  Of the 884 students enrolled in Full Time in 20152, only 531 continued with the same course in 20154.  However, for you, this figure is 490.  Please recheck.  I have cross checked this figure - it should be 531.  Our figures also differ in range E11:E12 - so please cross check those as well.

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Yes, there are 531 matching records between 20152 and 20154 if I am measuring retention for just those two year/terms.  In the example above, I am attempting to sequentially measure 20152-to-20153-to-20154.  This means that the students must have attended each of those terms and have the same enrollment status each term.  Below is an explanation.

 

These are the unduplicated headcount for "Full-Time for each of the following terms.

 

20152=884

20153=1052

20154=1157

 

20152 is the starting cohort and if we join this dataset to 20153, you will see that there are 636 matching records.  I used a left-outer join on ID.  If I then use another left-outer join to the next term in the metric (20154), there are only 490 students.  These 490 students attended each of the aforementioned terms with an enrollment status of "Full-Time".

 

To your point, had the user selected only 20152 and 20154, the result would have been 531 matching students, just as you have noted.  But because we added another term that sequentially falls between those two terms, the matching total drops because some students either did not attend or dropped below the full-time status.

 

Hope that makes more sense?

 

 

Hi,

I am clear now.  I have made multiple attempts but have not been able to solve it.  I will continue trying and if i can solve it, i will share the solution with you.  I'd request you to not start a new thread but just in case you do, please share the link of that thread with me so that i can subscribe to that one and learn from someone else's solution.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Thanks, Ashish!  This is a complex problem but in SQL, the logic is fairly simple.  I'm just not familiar enough with Dax to figure this out - especially as the logic must be dynamic in order to solve multi-term variables.

 

I may just try to solve this for one year at a time: i.e. 20152-to-20153-to-20154 by building different views in sql and joining in Power BI.

 

Thanks again for your efforts!

Sorry about that.  These days may not be exact but should be within a day or two.  I don't have access to the historical calendar at the moment but can always update those values later.

 

YearTermStartDate
201516/23/2014
201529/29/2014
201531/5/2015
201543/29/2015
201616/22/2015
201629/28/2015
201631/4/2016
201643/28/2016
201716/20/2016
201729/26/2016
201731/9/2017
201744/3/2018
201816/26/2017
201829/25/2017
201831/8/2018
201844/2/2018
201916/25/2018
201929/24/2018
201931/7/2019
201944/1/2019
202016/24/2019
202029/23/2019
202031/6/2020
202043/30/2020

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.