Skip to content

user_logs

Access and action events for learners. Append-only (rows are immutable).

  • ETL strategy: append (insert-only; PK used only for retry dedup)
  • PK: id

Columns

ColumnTypeDescription
idBIGINTPK.
id_tenantBIGINTFK → tenants.id.
id_userBIGINTFK → users.id.
referenceTEXTEvent type. Enum — see below.
ipTEXTClient IP.
user_agentTEXTBrowser User-Agent.
created_atTIMESTAMPTZEvent timestamp.

Enum · reference

The same set is used by admin_logs.reference.

ValueMeaning
first_accessFirst-ever access on the platform.
session_activeActive-session heartbeat (logged in).
platform_consentPlatform terms accepted.
product_consentProduct terms accepted.
certificateCertificate generated or downloaded.
password_reset"Forgot password" — request or completion.

Unmapped values (rare) are preserved unchanged.

Patterns

sql
-- Distinct logins per day (last 30 days)
SELECT date_trunc('day', created_at)::date AS day,
       count(DISTINCT id_user) AS logged_users
FROM lms.user_logs
WHERE reference = 'session_active'
  AND created_at >= now() - interval '30 days'
GROUP BY 1
ORDER BY 1;

For trend analysis, prefer metrics.daily_counters (user_logins), which already aggregates this.

OpenDB · Cademi LMS Data Warehouse