Skip to content

daily_counters

The daily operations dashboard. One row per (tenant, day) with counters covering registrations, learning outcomes and support engagement.

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

When to use it

  • Daily KPI tracking.
  • D-1 / W-1 / M-1 comparisons.
  • Anomaly detection (login drops, ratings spikes).

Columns · Keys

ColumnTypeDescription
id_tenantBIGINTFK → tenants.id. Part of PK.
dateDATEThe day the counters refer to. Part of PK.

Columns · Registrations

ColumnExecutive meaning
usersNew learners registered that day.
users_deletedLearners soft-deleted that day.
user_loginsActive sessions recorded that day (logged-in heartbeat for learners).

Columns · Learning

ColumnExecutive meaning
certificates_issuedCertificates issued that day (includes reissues).
exams_passedExams passed.
exams_failedExams failed.
ratings_positiveLesson likes.
ratings_negativeLesson dislikes.

Columns · Engagement (messages)

ColumnExecutive meaning
questions_createdQuestions posted by learners.
question_admin_responsesAdmin replies to questions.
comments_createdComments created.
comment_admin_responsesAdmin replies to comments.
comments_hiddenComments hidden (moderation).
user_messagesTotal volume of messages sent by users.

Usage pattern

sql
-- Last-week summary
SELECT
    sum(users)                AS new_learners,
    sum(user_logins)          AS sessions,
    sum(certificates_issued)  AS certificates,
    sum(exams_passed)         AS approvals,
    sum(exams_failed)         AS failures
FROM metrics.daily_counters
WHERE date >= current_date - interval '7 days';

-- Busiest day in the last 90 days
SELECT date, sum(user_logins) AS sessions
FROM metrics.daily_counters
WHERE date >= current_date - interval '90 days'
GROUP BY date
ORDER BY sessions DESC
LIMIT 5;

OpenDB · Cademi LMS Data Warehouse