Skip to content

Migrate marts__micromasters_dedp_exam_grades to use dimensional layer #2088

Open

Description

@blarghmatey

Epic: #2072

File: src/ol_dbt/models/marts/micromasters/marts__micromasters_dedp_exam_grades.sql

Problem: References micromasters and mitxonline proctored exam grade intermediates. Target: use a future tfact_grade or tfact_exam_grade dimensional model.

Acceptance criteria:

  • Model references only dimensional/, mart, or reporting models
  • No {{ ref('int__*') }} or {{ ref('stg__*') }} calls remain
  • Model compiles and passes dbt tests

Activity

  1. self-assigned this
    on Jun 15, 2026
  2. quazi-h commented on Jun 17, 2026

    @quazi-h
    Contributor

    This marts table includes proctored exam results for DEDP learners (one row per learner per exam, combining data from MicroMasters and MITxOnline). Two fields that are included in this mart (semester and passing_grade) come from exam run configuration data that only exists for MicroMasters. Neither of those fields exist in any of the current dimensional models (dim_course_run, tfact_grade, etc.).

    Where should this exam-run metadata live in the dimensional layer?

    1. Add to dim_course_run: semester and passing_grade are attributes of the exam course run itself, so it makes sense to make these new nullable columns in dim_course_run.
    2. Add to tfact_grade: embed these two fields directly on the grade fact table, only populated for proctored exam rows. Simpler but breaks the convention that fact tables shouldn't carry dimensional attributes.

    Should I proceed with extending dim_course_run?

  3. quazi-h commented on Jun 17, 2026

    @quazi-h
    Contributor

    Semester — which academic term an exam run belongs to (e.g. "Fall 2023") - is a property of the exam run configuration in MicroMasters, not of any individual grade event.
    Passing_grade (examrun_passing_grade) — the threshold score required to pass that specific exam run - is set once per exam run, same value for every student who sits it

    Neither of these fields vary per student but they do vary per exam run which means dim_course_run is the correct place for this data. A dimension table describes what something is - attributes, configuration, and context - and semester and passing_grade fall neatly into this dimension.

  4. quazi-h commented on Jun 24, 2026

    @quazi-h
    Contributor

    Splitting this out into 2 PRs, the first one that is linked here is just to add semester + passing grade to the dim model. The follow up PR will actually migrate the mart table to use those new fields for micromasters and null for all other sources (sparse attribute).

  5. reopened this on Jul 7, 2026
  6. added 2 commits that reference this issue on Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestproduct:data-platformIssues related to the Data Platform product

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions