Druid Data Model - Course Batch

Introduction:

This wiki explains ingestion specification for the Course Batch and its related objects to compute required metrics and compose dashboards using Druid.

Design:

Below are the objects related to course batch

  • Course
  • Course Batch
  • Enrollment
  • User
  • Location
  • Content
  • organization

To denormalize Course, User, Location and Content details we use the properties part of the Telemetry ingestion spec.

We use below prefix for each object for easy understanding.

ObjectPrefix
Coursecourse_
Course Batchbatch_
Enrollmentbatch_enrollment_
Useruser_
Locationlocation_
Contentcontent_

Data Model:

Dimension in DruidThe field in Course BatchDescriptionData Type
batch_namenameName of the Course BatchString
batch_idbatchIdIdentifier of the Course Batch

String

batch_createdBycreatedByCourse Batch - created byString
batch_createdDatecreatedDateCourse Batch - created dateDate
batch_createdForcreatedForCourse Batch - created for (organizations)String
batch_enrollmentTypeenrollmentTypeCourse Batch Type - open or invite-onlyString
batch_startDatestartDateCourse Batch - start dateDate
batch_endDateendDateCourse Batch - end dateDate
batch_enrollmentEndDateenrollmentEndDateCourse Batch - enrollment end dateDate
batch_statusstatusCourse Batch - statusLong
batch_updatedDateupdatedDateCourse Batch - updated dateDate
batch_enrollment_activeactiveEnrollment active or inactiveBoolean
batch_enrollment_completedOncompletedOnEnrollment completed onDate
batch_enrollment_completionPercentagecompletionPercentagecompletion percentageLong
batch_enrollment_enrolledDateenrolledDateEnrollment dateDate
batch_enrollment_progressprogressCount of complete contents in the courseInteger
batch_enrollment_updatedByupdatedByLast updated byString
batch_enrollment_updatedDateupdatedDateLast updated dateDate
batch_enrollment_certificatescertificatesCertificates assigned to the enrollment. Considering only namelastIssuedOnlastReIssuedOnArray[Object]
content_typecontentTypetype of the contentString
content_assessment_attemptidattempt_idAttemptId for the content assessmentSttring
content_assessment_attemptscoretotal_scoretotal score for the assessment attemptInteger
content_assessment_maxscoretotal_max_scoretotal score for the assessment attemptInteger
user_iduserIdEnrolled user idString
user_nameusernameEnrolled usernameString
user_emailemailEnrolled user emailString
user_phonephoneEnrolled user phoneString
user_organizationorgname(organisation table)Enrolled user organisation nameString
user_school


user_enrollment_dateenrolleddate(user_courses table)Enrolled user  enrolled DateDate
user_boardframework.boardEnrolled user : boardString
user_gradeframework.gradeEnrolled user : gradeArray[String]
user_mediumframework.mediumEnrolled user : mediumArray[String]
user_subjectframework.subjectEnrolled user : subjectArray[String]
user_signup_datecreatedOnEnrolled user : createdOn DateDate
user_course_progressprogress(user_courses table)Enrolled user : course progressint
user_signin_typeuser_signin_typeEnrolled user : Mode of SigninString
user_login_mode
Enrolled user : Mode of device(app/portal/desktop)String
user_org_externalIdexternalidEnrolled user : organisation external idString
location_districtname(location table)district Location of the enrolled userString
location_blockname(location table)block Location of the enrolled userString
course_idcourseidunique id of the courseString
course_namecourseadditionalinfo.courseNamename of the courseString
course_authorcoursecreatorauthor of the courseString