Skip to content

daily_lesson_events

Lesson interaction volume per day. Shows which lessons are being consumed — useful to rank content and identify "forgotten" lessons.

  • Grain: (id_tenant, id_lesson, date)
  • ETL strategy: merge
  • PK: (id_tenant, id_lesson, date)

When to use it

  • Top lessons by consumption for the week / month.
  • Lessons with sudden access drops (signal of a tech issue or a funnel change).
  • A/B analysis of new lessons vs. legacy content.

Columns

ColumnTypeDescription
id_tenantBIGINTFK → tenants.id. Part of PK.
id_lessonBIGINTFK → lessons.id. Lesson in question. Part of PK.
dateDATEDay. Part of PK.
totalINTEGERTotal events recorded on the lesson that day (views + completions + revisits — every hit, no user dedup).

For "distinct learners" per lesson (not events), use lesson_progress_aggregates.

Usage pattern

sql
-- Top lessons of the week
SELECT id_lesson, sum(total) AS events
FROM metrics.daily_lesson_events
WHERE date >= current_date - interval '7 days'
GROUP BY id_lesson
ORDER BY events DESC
LIMIT 20;

-- Lessons that lost > 50% week-over-week
WITH this_week AS (
    SELECT id_lesson, sum(total) AS current
    FROM metrics.daily_lesson_events
    WHERE date BETWEEN current_date - 7 AND current_date - 1
    GROUP BY id_lesson
),
last_week AS (
    SELECT id_lesson, sum(total) AS previous
    FROM metrics.daily_lesson_events
    WHERE date BETWEEN current_date - 14 AND current_date - 8
    GROUP BY id_lesson
)
SELECT a.id_lesson, previous, current,
       round(100.0 * (current - previous) / NULLIF(previous, 0), 1) AS variation_pct
FROM last_week a JOIN this_week b USING (id_lesson)
WHERE previous >= 100 AND current < previous * 0.5
ORDER BY variation_pct;

OpenDB · Cademi LMS Data Warehouse