Data Lake: Data Schema

 

users

The users table contains details of each user within the company, including deactivated, and not yet active users.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

The unique user identifier

sign_in_count

Integer

Count of the total number of times the user has logged in all-time

current_sign_in_at

Timestamp

Timestamp (UTC) of the user’s most recent log in

created_at

Timestamp

Timestamp (UTC) when the user was originally created

first_name

String

First name of the user. (aka given name)

last_name

String

Last name of the user. (aka surname)

job_title

String

Job title of the user. (e.g. Marketing Assistant). Can be blank.

language

String

Primary (selected) language for the user in ISO 653-1 format

manager

Boolean

True/false flag to identify whether the user is a manager. Includes both primary team managers and override managers.

time_zone

String

Time zone string for the users selected time zone (if any).

coach_id

Integer

User id of the user’s coach (if any).

is_coach

Boolean

True/false flag to identify if the user is designated as a coach

manager_id

Integer

User is of the user’s override manager, or primary team manager if user has no override manager set.

secondary_manager

Boolean

True/false flag to identify if the user is the secondary manager of any team.

hire_date

Date

Hire date of the employee. Only set if this data is available from an HR system integration or similar.

is_override_manager

Boolean

True/false false to identify if the user is designated as the override manager of another user.

deactivated_at

Timestamp

Timestamp (UTC) for when the user was deactivated

deactivated

Boolean

True/false flag it identify whether or not the user have been deactivated.

system_role

String

System role of the user on Learn Amp.

location_id

Integer

ID for the user’s primary location. See id in locations table.

tenure_in_days

Integer

Total length of the user’s tenure in days (Today or Leave Date minus their Hire Date, in days). Will be null if Hire Date has not been set.

leave_date

Date

Employment termination / leave date, if available/applicable.

custom fields

The custom_fields table contains each custom field value for each user.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique id of the user’s custom field. Can be ignored

user_id

Integer

ID of the user that the custom field relates to

custom_field_id

Integer

ID of custom field. This value will be repeated for each occurrence of this custom field

name

String

name of the custom field, e.g. “Employee Number”

value

String

value of the custom field for this particular user, e.g. “ABC123”

groups

The groups table contains basic metadata of all groups. A group is a collection of users, defined by a set of filtering criteria. Users are added to groups automatically by the system, and are refreshed on a regular basis.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the group.

created_at

Timestamp

Timestamp (UTC) for when the group was first created.

name

String

Name of the Group

 

group_users

The group_users table is a link table, associating users with groups. This table defines who belongs to which groups.

Field name

Data type

Description

Field name

Data type

Description

group_id

integer

ID of the group, see id in groups table

id

Integer

Unique ID of the group_user record.

user_id

integer

ID of the user, see id in users table

created_at

Timestamp

Timestamp (UTC) for when the given user was added to the given group.

teams

The teams table contains basic metadata of all teams. A team may have a manager and secondary managers. Users may belong to a primary, and many secondary teams.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the team.

name

String

Name of the team

created_at

Timestamp

Timestamp (UTC) for when the team was first created.

manager_id

Integer

User id of the manager of the team. See id in users table

parent_team_id

Integer

ID of this team’s parent team. Teams may exist within a hierachy, and have parent and child teams.

team_users_count

Integer

Count of users belonging directly to this team. (Excludes managers)

team_user_caches_count

Integer

Count of users belonging directly to this team AND any of the child teams beneath this team in the hieracy. (Excludes team managers).

manager_name

String

Full name of the team’s manager. This will be identical to full_name in users table, for the given manager_id

 

team_users

The team_users table is a link table, associating users with teams. This table defines who belongs to which teams.

Field name

Data type

Description

Field name

Data type

Description

team_id

integer

ID of the team, see id in teams table

id

Integer

Unique ID of the team_user record.

user_id

integer

ID of the user, see id in users table

created_at

Timestamp

Timestamp (UTC) for when the given user was added to the given team.

primary_flag

 

Boolean

True/false flag to denote whether this is the user’s primary team.

 

locations

The locations table contains basic metadata of all locations.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the location.

name

String

Name of the location

 

content

The content table contains basic metadata for all types of content referenced by activities and tasks. Content may belong directly to the company or is shared with the company from a library account.

Field name

Data type

Description

Field name

Data type

Description

created_at

Timestamp

Timestamp (UTC) when the content was first created

content_type

String

Type of the content on the Learn Amp platform. Since Items has multiple types, this field may be different from the type field described below. Example content types: video, article, book etc.

name

String

Name (or title) of the piece of content. If the content has a title saved in multiple languages, the name stored here will be the first available translation - beginning with English, then English-USA, and so on.

type_with_id

String

Concatenation of the content’s primary id with it’s type, in the form: item-123

type

String

The entity type of the content on Learn Amp. Will be one of: Item, Channel, Learnlist, Event, Quiz, Survey

 

channels

The channels table contains basic metadata of all channels. Channels may include those belonging directly to the company, and those shared from a library account. channels is a subset of the content table, for reporting/listing only channels.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the channel.

created_at

Timestamp

Timestamp (UTC) for when the channel was first created.

name

String

Name of the channel

 

events

This events table contains basic metadata of all events. events is a subset of the content table, for reporting/listing only events.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the event.

created_at

Timestamp

Timestamp (UTC) for when the event was first created.

name

String

Name of the event

 

items

The items table contains basic metadata of all items. items is a subset of the content table, for reporting/listing only items. In Learn Amp, an item is a single learning object, such as a SCORM package, a downloable document, a video etc.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the item.

guid

String

Globally unique identifier. Not used. Please ingore.

source_id

String

If the item came from an external integration or import of content from another system, the source_id may be used to store the unique identifier of the item in that system

source_type

String

If the item can from an external integration or import of content, source_type may be used to store a label/name of that system.

created_at

Timestamp

Timestamp (UTC) for when the item was first created.

name

String

Name of the item

 

learnlists

The learnlists table contains basic metadata of all learnlists. Learnlists may include those belonging directly to the company, and those shared from a library account. learnlists is a subset of the content table, for reporting/listing only learnlists.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the learnlist.

created_at

Timestamp

Timestamp (UTC) for when the learnlist was first created.

name

String

Name of the learnlist

 

quizzes

The quizzes table contains basic metadata of all quizzes. Quizzes may include those belonging directly to the company, and those shared from a library account. quizzes is a subset of the content table, for reporting/listing only quizzes.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the quiz.

created_at

Timestamp

Timestamp (UTC) for when the quiz was first created.

name

String

Name of the quiz

quizzes

The quizzes table contains basic metadata of all quizzes. Quizzes may include those belonging directly to the company, and those shared from a library account. quizzes is a subset of the content table, for reporting/listing only quizzes.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the quiz.

created_at

Timestamp

Timestamp (UTC) for when the quiz was first created.

name

String

Name of the quiz

quiz_attempts

Field Name

Data Type

Description

Field Name

Data Type

Description

id

bigint (not null)

Unique ID of the quiz attempt

quiz_id

bigint (not null)

Foreign key referencing the quizzes table

user_id

bigint (not null)

Foreign key referencing the users table

correct_answer_count

integer

Number of correct answers in the quiz attempt

incorrect_answer_count

integer

Number of incorrect answers in the quiz attempt

submitted_at

timestamp

Timestamp indicating when the quiz attempt was submitted

score

integer

Overall score achieved in the quiz attempt

passed

boolean

Indicates whether the user passed the quiz

expired_at

timestamp

Timestamp indicating when the quiz attempt expired

expired

boolean

Indicates whether the quiz attempt has expired

most_recent

boolean

Indicates whether the attempt is the most recent one

quiz_attempt_answers

The "quiz_attempt_answers" table is designed to store information about individual answers submitted by users during quiz attempts.

Field Name

Data Type

Description

Field Name

Data Type

Description

question_id

bigint (not null)

Unique ID of the question in the quiz

correct

boolean

Indicates whether the submitted answer is correct

submitted_at

timestamp

Timestamp indicating when the answer was submitted

quiz_attempt_id

bigint (not null)

Foreign key referencing the quiz_attempts table

quiz_id

bigint (not null)

Foreign key referencing the quizzes table

user_id

bigint (not null)

Foreign key referencing the users table

most_recent

boolean

Indicates whether the answer is the most recent one

question

varchar(255)

Text of the question being answered

question_type

varchar(255)

Type of the question (e.g., multiple choice, essay)

answer

varchar(2000)

Text of the submitted answer

surveys

The surveys table contains basic metadata of all surveys. Surveys may include those belonging directly to the company, and those shared from a library account. surveys is a subset of the content table, for reporting/listing only surveys.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the survey.

created_at

Timestamp

Timestamp (UTC) for when the survey was first created.

name

String

Name of the survey

survey_type

String

Returns the type of survey.

survey_occurrences

The survey_occurrences table contains specific point in time issuances of surveys. Metadata around attempts (and therefore responses) is denormalized into this table for convenience.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the survey occurrence

survey_id

Integer

ID of the survey that was issued. (Foreign ID reference to surveys table)

issued_at

Timestamp

The precise time of issuance of the survey

deadline

Date

The date that this survey occurrence is, or was due by

attempts_issued

Integer

A count of attempts that were created as a result of the survey being issued - indicating the number of users the survey was issued to.

attempts_completed

Integer

A count of the attempts relating to this survey that have been submitted - the number of users who have responded.

response_rate

Integer

The response rate given as a percentage.

survey_attempts

The survey_attempts table holds top level information about survey attempts. Attempts model the user’s attempt at a given Survey as relating to a specific occurrence thereof. The attempt is created prior to the user submitting any answers, so gives information about unsubmitted user attempts also.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the survey occurrence

user_id

Integer

ID of the user that the attempt belongs to. (Foreign ID reference to users table)

survey_id

Integer

ID of the survey that was issued. (Foreign ID reference to surveys table)

deadline

Date

The date that this survey occurrence is, or was due by

submitted_at

Timestamp

The specific date and time that this attempt was submitted at. This will be null if the user is yet to submit the attempt.

currently_overdue

Boolean

Returns whether the attempt is currently overdue. This will only be true if the attempt is unsubmitted and past the deadline.

overdue_when_submitted

Boolean

Returns whether, at the time of submission (submitted_at) the attempt was overdue. This will return false prior to submission.

survey_type

String

Returns the type of survey the attempt was for, denormalized from surveys

observation_subject_id

Integer

If the survey is an observation of another user, this returns the ID of htis user (Foreign id reference to users table)

completed

Boolean

Returns true if the survey attempt has been submitted.

started_at

Timestamp

Returns the specific time that the attempt was started.

time_taken

Integer

Returns the number of seconds taken between starting and submitting the attempt.

survey_occurrence_id

Integer

ID of the survey occurrence this attempt relates to. (Foreign id reference to survey_occurrences table)

survey_attempt_answers

The survey_attempt_answers table contains one record per answer as relates to a user’s survey attmempt. This table contains the question information denormalized for convenience. In the case of multi-dimensional questions, or Polls, the question will be given in the form “Question - poll option”. Weightings & values are given by the value column, whilst the answer always contains the text representation if relevant.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the survey occurrence

user_id

Integer

ID of the user that gave the answer (Foreign ID reference to users table)

survey_attempt_id

Integer

ID of the survey attempt that this answer belongs to (Foreign id reference to survey_attempts table).

survey_id

Integer

ID of the survey that was issued. (Foreign ID reference to surveys table)

question

String

The question text. In the case of multi-dimensional questions, or Polls, the question will be given in the form “Question - poll option”

question_type

String

The type of question this answer relates to.

answer

String

The string representation of the answer, where applicable

value

Integer

The integer representation of the answer, where applicable (eg weighting or sliding scale type questions)

deadline

Date

The deadline for this particular survey attempt/occurrence.

submitted_at

Timestamp

Returns the specific time that the answer and its parent attempt were submitted.

survey_occurrence_id

Integer

ID of the survey occurrence this attempt relates to. (Foreign id reference to survey_occurrences table)

 

activities

The activities table contains all the activity logged by users within the company. For reporting on content completion, we recommend using the completions table, described below. Likewise views and starts have their own table. Activities is the all encompassing table, which is used to generate the Activity Log on the Learn Amp platform.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique id of the activity record. For most use cases this can be ignored

user_id

Integer

User id of the user who performed the activity. (Foreign id reference to users table)

happened_at

Timestamp

Timestamp (UTC) for when the activity occurred

completed

Boolean

True/false flag for whether this activity was a “content was completed” activity.

result

String

Result value reported by SCORM (or similar) elearning package. Typically this will be PASS, FAIL, FAILED, UNKNOWN, COMPELETED. Most activity will have a null value for result.

score

Integer

Score value reported by SCORM (or similar) elearning package. Generally this is a percentage value that the user achieved. Most activity will have a null value for score.

total_time

Integer

Total time in seconds that the user took to complete the content, as reported by SCORM (or similar) elearning package. Most activity will have a null value for total_time.

expired_at

Timestamp

Timestamp (UTC) for when the activity was marked as expired. Learn Amp will expire, for example, the previous year’s activity when a user has a new recurring task issued to them.

single

Boolean

True/false flag to mark whether this is the most recent activity of this verb, for this user, for this piece of content. Used to filter by “only show unique activity”.

type

String

Type of content this activity relates to. See type description for the content table.

content_id

Integer

Unique id of the content this activity relates to.

verb

String

Verb (label) for this activity. For example: completed, started, failed etc.

expired

Boolean

True/false flag to indicate whether this activity has been marked as expired or not. See expired_at description.

 

completions

The completions table contains all the content completed activity logged by users within the company. This is a subset of the activities table, and is recommended to use for completion reporting.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique id of the activity record. For most use cases this can be ignored

user_id

Integer

User id of the user who performed the activity. (Foreign id reference to users table)

happened_at

Timestamp

Timestamp (UTC) for when the activity occurred

completed

Boolean

True/false flag for whether this activity was a “content was completed” activity.

result

String

Result value reported by SCORM (or similar) elearning package. Typically this will be PASS, FAIL, FAILED, UNKNOWN, COMPELETED. Most activity will have a null value for result.

score

Integer

Score value reported by SCORM (or similar) elearning package. Generally this is a percentage value that the user achieved. Most activity will have a null value for score.

total_time

Integer

Total time in seconds that the user took to complete the content, as reported by SCORM (or similar) elearning package. Most activity will have a null value for total_time.

expired_at

Timestamp

Timestamp (UTC) for when the activity was marked as expired. Learn Amp will expire, for example, the previous year’s activity when a user has a new recurring task issued to them.

single

Boolean

True/false flag to mark whether this is the most recent activity of this verb, for this user, for this piece of content. Used to filter by “only show unique activity”.

type

String

Type of content this activity relates to. See type description for the content table.

content_id

Integer

Unique id of the content this activity relates to.

expired

Boolean

True/false flag to indicate whether this activity has been marked as expired or not. See expired_at description.

 

starts

The starts table contains all the content started activities logged by users within the company. This is a subset of the activities table, and is recommended to use for reporting on what content was started.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique id of the activity record. For most use cases this can be ignored

user_id

Integer

User id of the user who performed the activity. (Foreign id reference to users table)

happened_at

Timestamp

Timestamp (UTC) for when the activity occurred

expired_at

Timestamp

Timestamp (UTC) for when the activity was marked as expired. Learn Amp will expire, for example, the previous year’s activity when a user has a new recurring task issued to them.

single

Boolean

True/false flag to mark whether this is the most recent activity of this verb, for this user, for this piece of content. Used to filter by “only show unique activity”.

type

String

Type of content this activity relates to. See type description for the content table.

content_id

Integer

Unique id of the content this activity relates to.

expired

Boolean

True/false flag to indicate whether this activity has been marked as expired or not. See expired_at description.

 

views

The views table contains all the content viewed activities logged by users within the company. This is a subset of the activities table, and is recommended to use for reporting on what content was started.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique id of the activity record. For most use cases this can be ignored

user_id

Integer

User id of the user who performed the activity. (Foreign id reference to users table)

happened_at

Timestamp

Timestamp (UTC) for when the activity occurred

expired_at

Timestamp

Timestamp (UTC) for when the activity was marked as expired. Learn Amp will expire, for example, the previous year’s activity when a user has a new recurring task issued to them.

single

Boolean

True/false flag to mark whether this is the most recent activity of this verb, for this user, for this piece of content. Used to filter by “only show unique activity”.

type

String

Type of content this activity relates to. See type description for the content table.

content_id

Integer

Unique id of the content this activity relates to.

expired

Boolean

True/false flag to indicate whether this activity has been marked as expired or not. See expired_at description.

 

tasks

The tasks table contains data relating to individual tasks that have been assigned to users, requiring them to complete content by a certain deadline.

Field name

Data type

Description

Field name

Data type

Description

user_id

Integer

User id of the user who was assigned the task. (Foreign id reference to users table)

id

Integer

Unique ID of the task

deadline

Date

Deadline for when the content must be completed by.

completed_at

Datetime

Timestamp (in UTC) for when the user completed the content, triggering the task to be marked as completed. If the task has not yet been completed, this will be null.

mandatory

Booolean

True/false flag denoting whether the task was marked as mandatory.

expired_at

Timestamp

Timestamp (in UTC) for when the task was marked as expired. When a recurring task is issued, any previous tasks in the series will be marked as expired.

assigned_at

Timestamp

Timestamp (in UTC) for when the task was issued to the user.

archived

Boolean

True/false flag denoting that the task has been archived. A task will be archived automatically if the content that it relates to gets archived. This is because the user can no longer access the content once it has been archived.

type

String

Type of content this task is for. See type description for the content table.

content_id

Integer

Unique id of the content this task is for.

expired

Boolean

True/false flag denoting whether this task has been expired. See expired_at.

completed

Boolean

True/false flag denoting whether this task has been completed. See completed_at.

overdue

Boolean

True/false flag denoting whether the user has not yet completed the task and is past the deadline. Note that overdue relates to today’s date. If a user completed the task after the deadline (ie. it was overdue at the time of completion) this flag will show false, since the task is no longer overdue today.

 

event_sessions

The event_sessions table contains metadata related to each session of an event. Event metadata is stored in the events table. However, details like start time/date, end time/date and location are stored in the event_session table. This is because events may have more than one session, ie. a given event may be run multiple times.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the event session

event_id

Integer

Event id of the event this session belongs to. (Foreign id reference to events table)

starts_at

Timestamp

Date/time (stored in UTC) for when the event session begins

ends_at

Timestamp

Date/time (stored in UTC) for when the event session ends

location_type

String

Type of location, e.g. Website URL, Map location, MS Teams, Zoom etc.

attendance_type

String

How the user’s attendance is marked, e.g. Marked automatically, Marked by attendee, Marked by admin, Marked by host.

host_id

Integer

User ID of the user who is designated as the Host for the event session. See id in users table.

name

String

Name of the event. Will be identical to name in the events table for the given event_id

host_name

String

Full name of the host. Will be identical to full_name in the users table for the given host_id.

content_id

Integer

Foreign ID reference to the content table for this event.

 

enrollments

The enrollments table contains details of a user’s enrollment in a specific event session. The enrollments table also stores the attendenance status for whether a given user attended or did not attend a specific event session (if this information is available).

Field name

Data type

Description

Field name

Data type

Description

user_id

Integer

User ID of the user who is enrolled in the event session.

id

Integer

Unique ID of the enrollment

event_session_id

Integer

ID of the event session for this enrollement.

status

String

The status of the enrollment. Will be one of: pending, approved, rejected, unenrolled

attendance

String

Denotes whether or not the user attended the event session or not, if available. Will be one of: not yet recorded, attended, did not attend.

host

Boolean

True/false flag denoting if this is the host’s enrollment record. When a user is made the host of an event session, a host enrollment is automatically created for them, since they will likely attend the event session for which they are the host.

 

skills (a.k.a Topics)

The skills table contains basic meta data for a skill. In Learn Amp a skill may also be referred to as a Topic, since organising content into topics is generally how we encourage you to build up your learning taxonomy.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the skill/topic

name

String

Name of the skill/topic. If the skill has multiple translations, this field will contain English or the first available translation of the name.

 

skill_categories (a.k.a Topic Categories)

The skill_categories table contains basic meta data for a skill or topic category.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique ID of the skill/topic category

name

String

Name of the skill/topic category. If the category has multiple translations, this field will contain English or the first available translation of the name.

 

skill_category_skills

The skill_category_skills table is a link table, to denote which skills/topics belong to which categories.

Field name

Data type

Description

Field name

Data type

Description

skill_category_id

Integer

Skill Category ID, foreign id reference to skill_categories table

id

Integer

Unique ID of the skill/topic category

skill_id

Integer

Skill ID, foreign id reference to skills table

content_skills

The content_skills table is a link table, to denote which skills/topics relate to which items of content.

Field name

Data type

Description

Field name

Data type

Description

content_id

Integer

ID of the content, see type_with_id in the content table

skill_id

Integer

Skill ID, foreign id reference to skills table

user_skills

The user_skills table is a link table, to denote which skills/topics a given user is interested in learning about. Additionally, if a user or their manager rate their proficiency in the skill, this rating is also stored in this table.

Field name

Data type

Description

Field name

Data type

Description

user_id

Integer

User ID of the user who has expressed interest in or been rated for the skill.

id

Integer

Unique id of this user_skill record.

skill_id

Integer

Skill ID, foreign id reference to skills table

own_rating

Integer

Rating that the user has given themselves in the skill. Rating range will depend on how your skill ratings have been configured in your company.

target_rating

Integer

Target rating that the user or their manager has set for this user to achieve in this skill

manager_rating

Integer

Rating that the user’s manager has given them in the skill.

preferred_rating

Integer

If present this will be the manager_rating value. If not present, this will be the own_rating value.

 

session_tracks

The session_tracks table contains session duration data for users on Learn Amp. Each time the user interacts with a page, their session duration value is extended. This table is useful for analysing engagement and usage of the platform.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

Unique id for the session. Note this is not the browser session ID value.

user_id

Integer

ID of the user who this session relates to.

duration

Integer

Length of the session in seconds

starts_at

Timestamp

Timestamp (in UTC) for when this session started.

 

managers

The managers table contains basic meta data for a given manager. This table includes both override managers and team managers. The full details of each user are stored in users table, but this table is useful for reporting by manager.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

User ID of this manager. Will match the id in the users table

first_name

String

First name of the manager

last_name

String

Last name of the manager

full_name

String

Full name of the manager

coaches

The coaches table contains basic meta data for a given coach. The full details of each user are stored in users table, but this table is useful for reporting by coach.

Field name

Data type

Description

Field name

Data type

Description

id

Integer

User ID of this coachj. Will match the id in the users table

first_name

String

First name of the coach

last_name

String

Last name of the coach

full_name

String

Full name of the coach