tm_learnings_v2
1. Dataset Name
tm_learnings_v2
2. Description
Employee-level learning and development activity dataset that unions three sources of skill-building activity — completed courses, completed internal projects, and upskilling plan progress — each denormalized to one row per activity-skill combination, enriched with employee attributes.
3. Source Tables
- customer_views.course_attendance
- customer_views.courses
- customer_views.project_teammembers_details
- customer_views.profile_upskilling
- customer_views.employee (joined twice — appears to be a redundant duplicate join rather than intentional double enrichment)
4. Grain
One row per (profile_id, skill_name, activity record), where "activity record" is one of: a completed course (one row per skill tagged to that course), a completed project (one row per project teammate record), or an upskilling plan update (one row per skill tagged to that plan).
5. Dashboards Supported
- Learning & Development / Course Completion Dashboard
- Skill Building / Upskilling Dashboard
- Project-Based Learning Dashboard
6. Metrics Supported
| Metric | Supported Breakdowns |
| Course Completions | Business unit, job function, location, skill |
| Project Completions | Business unit, project teammate role, location, skill |
| Upskilling Plan Completion % | Business unit, job function, plan_id |
| Activity by Source Type | source_type (Course / Project / Upskilling) |
| Skill-Tagged Completions | skill_name, source_type |
7. Known Exclusions / Filters Applied
- Course rows included only where completion_date is not null — in-progress courses excluded.
- Project rows included only where project_completed_ts is not null — in-progress projects excluded.
- Upskilling rows have no equivalent completion-status filter — check completion_percentage for actual progress, not the presence of a completion date.
- completion_percentage is hardcoded to 1 (100%) for Course and Project rows, regardless of partial completion — consistent with the filter above, but this field can't distinguish partial completion for those two source types.
- Many columns are source_type-conditional — populated for one source type and null for the others. Always filter/group by source_type before interpreting these columns.
- Employee is joined twice on the same key, which appears to be a redundant/duplicated join rather than an intentional enrichment — flagged for cleanup, though it shouldn't inflate row counts since profile_id is unique.
8. Schema
| Column Name | Data Type | Notes |
| profile_id / employee_id | varchar | Employee identifiers |
| business_unit / lob / location / location_country / seniority | varchar | Employee attributes |
| gender / race | varchar | Demographic fields |
| profile_activated_ts / is_employee / termination_date / is_alumni | — | Lifecycle fields |
| manager_name / manager_email | varchar | Employee's manager |
| completion_date | date | Semantics vary by source_type — course completion / project completion / upskilling record update |
| lms_course_id | varchar | Course ID, project ID, or plan assignment ID depending on source_type |
| plan_id | varchar | Upskilling only |
| use_profile_id | varchar | Duplicate of profile_id, retained under a different alias |
| skill_name | varchar | Flattened skill tag (Course, Upskilling) or scalar project skill |
| source_type | varchar | One of Course, Project, Upskilling |
| id / start_date / status / category / group_id | — | Course-only fields (group_id also populated for Project) |
| title | varchar | Course or project title; null for Upskilling |
| project_id, project_teammember_*, project_start_ts/end_ts/creation_ts/publish_ts/archived_ts, project_published_ind, project_completed_ind | — | Project-only fields |
| completion_percentage | double | 1 for Course/Project; actual percentage for Upskilling |