...
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Request
Response
|
...
Column | Type | Description |
---|---|---|
activity_type | String | Type of the activity - Course, CourseUnit, Quiz etc |
activity_id | String | Id of the activity - course_id, content_id etc |
user_id | String | User Id |
context_id | String | Context in which the activity happened. Combination of type:value. For ex: CourseBatch → cb:do_123121 |
agg | Map<String, Number> | Aggregate metrics for the user and activity combination |
agg_last_updated | Map<String, Timestamp> | When did the agg metrics last updated? |
Partition Key - (activity_type, activity_id, usergroup_id, contextuser_id)
activity_agg
Column | Type | Description |
---|---|---|
activity_type | String | Type of the activity - Course, CourseUnit, Quiz etc |
activity_id | String | Id of the activity - course_id, content_id etc |
context_id | String | Context in which the activity happened. Combination of type:value. For ex: CourseBatch → cb:do_123121 |
agg | Map<String, Number> | Aggregate metrics for the activity |
agg_last_updated | Map<String, Timestamp> | When did the aggregate metrics last updated? |
Partition Key - (activity_type, activity_id, context_id)
Course Metrics
completedCount
completionPercentage
enrolledCount
<TBD>
Course User Metrics
Open Questions
Do we need activity_agg table which is a next level aggregation on activity_user_agg table?
Will there be an activity happening only in group context? For ex: course can be taken up outside group but aggregated within group. But there can be a quiz conducted within group context across multiple groups.