Average Time to Course Completion
Also known as: Course Completion Time Average
Measures the average duration taken by learners to complete a course from enrollment to completion. This metric helps in understanding learner engagement and course effectiveness.
Business Use Case
Executives can use this metric to identify courses that may need redesign or additional support resources to improve completion rates.
Business Criticality
High
Journey / Navigation Area
Engagement
Owning Function
Data Architecture Team
Scope
User
Formula
SUM(completion_time) / COUNT(completed_courses)Calculation Notes
1️⃣ Exclude courses with incomplete status. 2️⃣ Calculate the mean completion time. 3️⃣ Determine the standard deviation of completion times. 4️⃣ Identify outliers exceeding 2 standard deviations from the mean. 5️⃣ Filter out these outliers from the dataset.
Technical Details
Events
Data Mappings
W3 Data Layer
{}GA4 Data Layer
{}Adobe Client Data Layer
{}XDM Mapping
{}SQL Queries
Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
SELECT user_id, AVG(TIMESTAMP_DIFF(completion_time, enrollment_time, SECOND)) AS avg_time_to_completion
FROM (
SELECT user_id,
MIN(IF(event_name = 'enroll', event_timestamp, NULL)) AS enrollment_time,
MIN(IF(event_name = 'complete_course', event_timestamp, NULL)) AS completion_time
FROM `your-project.analytics_123456789.events_*`,
UNNEST(event_params) AS params
WHERE event_name IN ('enroll', 'complete_course')
GROUP BY user_id
HAVING completion_time IS NOT NULL
)
GROUP BY user_idAdobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
SELECT user_id, AVG(DATEDIFF(completion_time, enrollment_time)) AS avg_time_to_completion
FROM (
SELECT user_id,
MIN(CASE WHEN event_name = 'enroll' THEN event_timestamp END) AS enrollment_time,
MIN(CASE WHEN event_name = 'complete_course' THEN event_timestamp END) AS completion_time
FROM aep_backend_dataset,
UNNEST(event_params) AS params
WHERE event_name IN ('enroll', 'complete_course')
GROUP BY user_id
HAVING completion_time IS NOT NULL
)
GROUP BY user_idSource Data
Learning Management System
Dependencies
[ "Course Enrollment Event", "Course Completion Event" ]
Report Attributes
Course Type Learner Demographics
Recommended Reporting Views
Segment Eligibility
true
Governance
Governance
GitHub
catalog/metrics/average-time-to-course-completion.yml