Maybe there are more elegant ways to approach this, but I would do this:
Reshape the data so that each learner has a field for each possible course.
Use a three-value code in each field:
0 = Not started
1 = Started
2 = Completed
Now your calc can tell everything about every course in one glance. (You could even have other codes for "dropped", "credit, but not taken", and anything else you might need. You could also have the grade in there. If it's not 1,2, or 3, then the value is the grade. Etc.)
You could still store it all in another relational database, but your data wource would be an ETL of the actual database to have it shaped for easy use in this visualization.
Maybe someone else will propose something better, and if so I will squirrel it away in my bag of tricks.