# Changelog

In this section, we track updates and changes to the data model.

### March 30, 2026

Two new columns, Courses (Classic) and Courses (AI Native), have been added to the Time in Learn export. These columns represent the time a learner spent in each variant.

### March 27, 2026

Two new columns, Courses (Classic) and Courses (AI Native), have been added to the Time in Learn report. These columns represent the time a learner spent in each variant.

### March 25, 2026

We've introduced the concept of **course variants** to support our new AI-native course format. A course can now exist as a **classic** variant (the traditional DataCamp course experience) or an **AI-native** variant (a new interactive learning format powered by AI). Both variants share the same course identity (`course_id` / `content_id`) and all common metadata.

**New table**

* **`dim_course_variant`** — A new dimension table containing variant-specific information such as the variant name, description, and duration details. See Dimension tables for the full schema.

**New columns**

* **`course_variant_id`** added to **`dim_content`** — Identifies the course variant for course and chapter content rows. `1` = classic, `2` = AI-native.
* **`course_variant_id`** added to **`fact_learn_events`** — Identifies which course variant a learning event is associated with. Populated for course and chapter events.

**Schema changes**

* **Breaking change:** **`chapter_id`** in **`dim_content`** has changed from **integer to string**. If your queries cast `chapter_id` to an integer or use integer comparisons, they will need to be updated.

**New content records**

* AI-native courses introduce new **chapter-level records** in `dim_content`. These AI-native chapters have their own `content_id` and `chapter_id` values. If you aggregate at the chapter level, be aware that you will now see both classic and AI-native chapters unless you filter by `course_variant_id`.

**Impact on existing queries**

* **Course completion queries:** A user can now complete both the classic and AI-native variant of the same course. If you count course completions, consider whether you want to count per variant or per course. Use `course_variant_id` to differentiate.
* **Chapter-level queries:** New AI-native chapters will appear alongside classic chapters. Filter by `course_variant_id` if you need to isolate one variant.
* **Queries using `chapter_id`:** Update any logic that treats `chapter_id` as an integer.

See Domain Gotchas for detailed guidance.

### February 2, 2026

We've expanded the possible values of `assessment_knowledge_level` in `fact_learn_events` from 3 to 5 levels:

* Novice (0-69)
* Lower Intermediate (70-100)
* Upper Intermediate (101-130)
* Lower Advanced (131-160)
* Upper Advanced (161-200)

### January 15, 2026

We’ve added a new `assignment_unassigned` event to `fact_learn_events` to better track the user–assignment lifecycle.

This event is triggered when an Admin deletes an assignment after creating it.

### December 15, 2025

We’ve updated the Data Connector model to capture the new XP awarded for certification and skill assessment completions.

* **Certifications (**`certification_granted` event in `fact_certification_events`)
  * Career Certification pass: 10,000 XP
  * Fundamentals Certification pass: 2,000 XP
* **Skill Assessments (**`assessment_engaged` event in `fact_learn_events`)
  * Assessment completion: 100 XP
    * Note: this award is given for every completion (no per-user limit).
  * Score > 50th percentile: 500 XP
  * Score > 75th percentile: 1,000 XP

{% hint style="info" %}
Each XP award can only be earned **once per user per certification** and **assessment**, unless otherwise noted.
{% endhint %}

* The `group_detail` metric table has been extended to include the new XP events and:
  * `certification_started`
  * `certification_completed`
* We have added URL fields to key dimension tables so you can link directly to content from your reports and dashboards:
  * `dim_content` – now includes a URL link to the content item
  * `dim_track` – now includes a URL link to the track
  * `dim_certification` – now includes a URL link to the certification

### December 2, 2025

We’ve expanded the `dim_content` table to better represent non-course learning resources and competitions.

**What’s new**

* **New resource types added to `dim_content`:**\
  Free online resources are now included as content (code-alongs, cheat sheets, case studies, data sheets, ebooks, infographics, podcasts, tools, webinars, whitepapers)
* **New `is_resource` flag:**\
  A new Boolean column `is_resource` has been added to `dim_content` to distinguish these resources from other content types (e.g., courses, tracks, assessments).
* **Competitions in `dim_content`:**\
  Competitions are now also represented in the `dim_content` table as a dedicated content type, allowing you to report on and filter them alongside other learning assets.

### October 2, 2025

We’ve released the **DataCamp** **Data Connector 2.0 Power BI Template** — a plug-and-play dashboard that lets you go from connection to insights in minutes.

* **What’s included:** Pre-built pages for **Snapshot**, **Engagement**, **Progress**, and **Leaderboard**, wired to the Data Connector 2.0 model for consistent KPIs and analysis.
* **Where to get it:** **Group Hub → Reporting → Data Connector**. Download the `.pbit` file and open it in Power BI Desktop.
* **Setup highlights:** Create an **Athena ODBC DSN** on Windows and connect via the built-in **Amazon Athena** connector in Power BI. See our Microsoft Power BI guide for step-by-step DSN fields and connection prompts. [enterprise-docs.datacamp.com](https://enterprise-docs.datacamp.com/integrating-our-data-into-your-tools-via-data-connector-2.0/using-data-connector-2.0/integrating-with-your-bi-tools/microsoft-power-bi)

Download the template now to turn your Data Connector 2.0 data into insights in minutes, unlock richer analyses and faster decisions with zero modeling required.

### September 17, 2025

We’ve updated the data model to capture license and invite interactions. The `fact_permission_event` table now records these events (e.g., `user_license_allocated`, `user_license_revoked`, `invite_sent`, `invite_claimed`, `invite_withdrawn`). This enables company-level analysis of DataCamp adoption.

### August 21, 2025

We’ve fixed an issue in the data model by removing `course_engagement` events with content\_id = `ex0`. These events did not represent exercise-level engagement and are no longer included, ensuring that engagement metrics remain consistent and exercise-granular.

### August 20, 2025

We’ve enhanced the data model to include course difficulty levels. A new field, `course_difficulty_level`, has been added to the `dim_content` table.

### August 19, 2025

We’ve updated the data model to support the source of the DataLab workbook. The `fact_datalab_events` table now includes the `workbook_source` and `workbook_class` fields.

The `workbook_source` field contains the source of the workbook, with the following possible values: *project, certification, competition, course,* or *other*.

When a workbook source includes one of the following values — *project, certification, competition,* or *course,* it is marked as **embedded**.

### July 10, 2025

A new `dim_assignment` table has been added to the data model to support assignment-level analysis and reporting. Additionally, four assignment-related events—`assignment_assigned`, `assignment_completed`, `assignment_completed_late`, and `assignment_missed`—have been integrated into the `fact_learn_events` table.

### July 2, 2025

Courses in `dim_content` can now contain decimal values for `time_duration_in_hours`. This change is meant to support upcoming courses that are expected to take less than one hour to complete.

### June 5, 2025

We’ve updated the data model to support custom assessments. The `dim_content` table now includes a new boolean field: `assessment_is_custom`. This field indicates whether an assessment is custom (`true`) or standard (`false`).

If your group uses custom assessments, you’ll now see corresponding rows reflected in this table.

We have also added a `last_sso_nameid` column to the `bridge_user_group` table. This field contains the last SSO NameID of the user in the group. Some groups that authenticate with SSO use this field to include custom identification data for their users.

### May 28, 2025

We’ve updated the underlying data in the data model (note: this is not a schema change) to improve the accuracy of engagement metrics:

* **Filtered course activity**: We now exclude `course_engagement` events associated with courses that are not in one of the three expected states: *Live*, *Soft Launched*, or *Archived*. Previously, some engagement data from courses in other states may have been included. This change may slightly reduce reported course durations. This does **not** affect XP calculations.
* **Filtered assessment activity**: We now exclude `assessment_engaged` events for assessments that are not in the *public* state. Previously, engagement data for non-public assessments was included. This change may slightly reduce assessment duration metrics. This does **not** affect XP calculations.

### May 22, 2025

We've enhanced the data model to include the description and short description for courses and chapters. New fields, `description` and `short_description`  has been added to the `dim_content` table.

### April 22, 2025

We've enhanced the data model to include the estimated time required to complete courses and projects. A new field `time_needed_in_hours` has been added to the `dim_content` table. This field represents the expected duration (in hours) to complete a given piece of content and is currently populated only for courses and projects.

### April 17, 2025

We've added a `course_is_skipped` column to `fact_learn_events` . This column will contain a boolean (true/false) for `course_completed` events, indicating whether the course was skipped. A skipped course is still treated as a completed course. For cases when the course was skipped, the `occurred_at` timestamp for the course completion event will reflect the time at which the course was skipped.

### April 16, 2025

We’ve updated the data model to support custom certifications. The `dim_certification` table now includes a new boolean field: `certification_is_custom`. This field indicates whether a certification is custom (`true`) or standard (`false`).

If your group uses custom certifications, you’ll now see corresponding rows reflected in this table.

### March 31, 2025

Launched Data Connector 2.0!!

* With Data Connector 2.0, we’ve significantly improved the data model, making it simpler, more efficient, and aligned with the rest of our reporting.

  * Simplified data model – Fewer tables (29 → 13) for easier querying
  * Data alignment with **Groups** tab reporting - Data Connector 2.0 now uses the same source as the rest of our reporting, ensuring consistency across all analytics and no discrepancies.
  * Includes mobile data - Now includes learner data done via the mobile app
  * Pre-aggregated metrics – New pre-aggregated metric tables to speed up reporting
  * Easier querying – Significantly fewer complex joins for common reports

  For more info on the differences, check out [Migrating from Data Connector (1.0)](https://enterprise-docs.datacamp.com/integrating-our-data-into-your-tools-via-data-connector-2.0/migrating-from-data-connector-1.0)
