# LMS Tool Use

The *mart\_general.lms\_tool* mart keeps track of interactions with LMS tools in the learning environment.

## BQ Prod Dataset Location <a href="#lmstooluse-bqproddatasetlocation" id="lmstooluse-bqproddatasetlocation"></a>

mart\_general

## Interactive Mart Dependency Diagram <a href="#lmstooluse-interactivemartdependencydiagram" id="lmstooluse-interactivemartdependencydiagram"></a>

The following visualization shows the construction of this data mart defined in the [UDP marts](https://gitlab.com/unizin-community/unizin-data-platform/marts) repository. More information on the repository and diagram can be found on [this marts page.](https://resources.unizin.org/products/data-and-analytics/unizin-data-platform/data-stores/data-marts)

{% hint style="info" %}
[Click here to open the interactive chart.](https://assets.public.unizin.org/udp-marts/mart/mart__general__lms_tool.svg)
{% endhint %}

<div data-full-width="true"><figure><img src="https://3709019308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKYwtHNGgdPXS3PWAlZUr%2Fuploads%2Fgit-blob-a499e16048d47500863a8754c4a4dd35d7afe256%2Flms_tool.png?alt=media" alt=""><figcaption><p>mart_general.lms_tool</p></figcaption></figure></div>

## Schema <a href="#lmstooluse-schema" id="lmstooluse-schema"></a>

<table data-full-width="true"><thead><tr><th width="302.33333333333337">Field Name</th><th width="165">Type</th><th>Description</th></tr></thead><tbody><tr><td>udp_course_offering_id</td><td>INTEGER</td><td>The UDP ID for the Course offering associated with the LMS tool.</td></tr><tr><td>lms_course_offering_id</td><td>STRING</td><td>The LMS ID for the Course offering associated with the LMS tool.</td></tr><tr><td>sis_course_offering_id</td><td>STRING</td><td>The SIS ID for the Course offering associated with the LMS tool.</td></tr><tr><td>udp_person_id</td><td>INTEGER</td><td>The UDP ID for the person who used the LMS tool.</td></tr><tr><td>lms_person_id</td><td>STRING</td><td>The LMS ID for the person who used the LMS tool.</td></tr><tr><td>sis_person_id</td><td>STRING</td><td>The SIS ID for the person who used the LMS tool.</td></tr><tr><td>role</td><td>STRING</td><td>The role of the person who used the LMS tool, i.e. <em>Learner</em> or <em>Instructor.</em></td></tr><tr><td>role_status</td><td>STRING</td><td>The <a href="https://docs.udp.unizin.org/tables/ref_role_status.html">role_status</a> of the person who used the LMS tool.</td></tr><tr><td>enrollment_status</td><td>STRING</td><td>The <a href="https://docs.udp.unizin.org/tables/ref_enrollment_status.html">enrollment_status</a> of the person who used the LMS tool.</td></tr><tr><td>academic_term_name</td><td>STRING</td><td>The name of the academic term, i.e. <em>Fall 2020.</em></td></tr><tr><td>academic_term_start_date</td><td>DATE</td><td>The start date for the academic term. </td></tr><tr><td>academic_organization_array</td><td>ARRAY&#x3C;STRING></td><td>An array of the academic organization(s) associated with the course offering.</td></tr><tr><td>academic_organization_display</td><td>STRING</td><td>An array of the academic organization(s) associated with the course offering written as a comma-separated string</td></tr><tr><td>course_offering_title</td><td>STRING</td><td>The title of the Course offering associated with the LMS tool, i.e. <em>Linear Algebra.</em></td></tr><tr><td>course_offering_start_date</td><td>DATE</td><td>The start date of the Course offering associated with the LMS tool.</td></tr><tr><td>course_offering_subject</td><td>STRING</td><td>The subject of the Course offering associated with the LMS tool, i.e. <em>MATH</em></td></tr><tr><td>course_offering_number</td><td>STRING</td><td>The number of the Course offering associated with the LMS tool, i.e. <em>310.</em></td></tr><tr><td>course_offering_code</td><td>STRING</td><td>The code of the Course offering associated with the LMS tool, i.e. <em>MATH 310.</em></td></tr><tr><td>num_students</td><td>INTEGER</td><td>The number of students enrolled in the Course offering associated with the LMS tool.</td></tr><tr><td>udp_course_section_id</td><td>INTEGER</td><td>The UDP ID of the Course section associated with the LMS tool.</td></tr><tr><td>lms_course_section_id</td><td>STRING</td><td>The LMS ID of the Course section associated with the LMS tool.</td></tr><tr><td>sis_course_section_id</td><td>STRING</td><td>The SIS ID of the Course section associated with the LMS tool.</td></tr><tr><td>all_section_enrollments</td><td>STRUCT</td><td>Container to list all sections in which the person is enrolled for a given course_offering. Fields in the struct include: <code>udp_course_section_id</code>, <code>sis_course_section_id</code>, <code>lms_course_section_id</code>, <code>role</code>, <code>role_status</code>, <code>enrollment_status</code>, <code>created_date</code></td></tr><tr><td>instructor_name_array</td><td>ARRAY&#x3C;STRING></td><td>An array of the instructors’ names for the Course offering associated with the LMS tool.</td></tr><tr><td>instructor_lms_id_array</td><td>ARRAY&#x3C;STRING></td><td>An array of the instructors’ LMS IDs for the Course offering associated with the LMS tool.</td></tr><tr><td>instructor_display</td><td>STRING</td><td>The array of the instructors’ names for the Course offering associated with the LMS tool written as a string.</td></tr><tr><td>instructor_email_address_array</td><td>ARRAY&#x3C;STRING></td><td>An array of the instructors' email addresses for the Course offering.</td></tr><tr><td>instructor_email_address_display</td><td>STRING</td><td>An array of the instructor's email addresses for the Course offering written as a comma-separated string.</td></tr><tr><td>event_time</td><td>DATETIME</td><td>The time that the LMS tool was used.</td></tr><tr><td>event_day</td><td>DATE</td><td>The date that the LMS tool was used.</td></tr><tr><td>event_hour</td><td>INTEGER</td><td>The hour that the LMS tool was used.</td></tr><tr><td>canvas_tool</td><td>STRING</td><td>The Canvas tool that was used if the LMS is Canvas. This field will be null if the LMS is not Canvas.</td></tr><tr><td>brightspace_tool</td><td>STRING</td><td>The Brightspace tool that was used if the LMS is Brightspace. This field will be null if the LMS is not Brightspace</td></tr><tr><td>asset_type</td><td>STRING</td><td>The asset type of the LMS tool.</td></tr><tr><td>asset_type_id</td><td>STRING</td><td>The ID for the asset type of the LMS tool.</td></tr><tr><td>asset_subtype</td><td>STRING</td><td>The asset subtype of the LMS tool.</td></tr><tr><td>asset_subtype_id</td><td>STRING</td><td>The ID for the asset subtype of the LMS tool.</td></tr><tr><td>module_item_id</td><td>STRING</td><td>The ID of the module item if the LMS tool is accessed as a module item.</td></tr><tr><td>learner_activity_id</td><td>STRING</td><td>The ID of the learner activity if a learner activity is referenced in the speed grader.</td></tr><tr><td>udp_discussion_id</td><td>INTEGER</td><td>The UDP ID of the discussion accessed. </td></tr><tr><td>udp_quiz_id</td><td>INTEGER</td><td>The UDP ID of the quiz accessed.</td></tr><tr><td>udp_module_item_id</td><td>INTEGER</td><td>The UDP ID of the module item accessed.</td></tr><tr><td>udp_file_id</td><td>INTEGER</td><td>The UDP ID of the file accessed.</td></tr><tr><td>udp_wiki_page_id</td><td>INTEGER</td><td>The UDP ID of the wiki page accessed.</td></tr><tr><td>udp_learner_activity_id</td><td>INTEGER</td><td>The UDP ID of the learner activity accessed.</td></tr></tbody></table>

### Fields <a href="#lmstooluse-fields" id="lmstooluse-fields"></a>

#### **num\_students**

The *num\_students* field defines the number of enrolled students in a Course offering. This number is found from the *course\_section\_enrollment* table in UDP’s context store, which keeps track of enrollments in course sections. We count the number of enrollments with a role of ‘Student’ or ‘Observer’ and a role status that is not ‘Dropped’, ‘Withdrawn’, or ‘Not-enrolled’.

#### **event\_time**

The field *event\_time* defines the time the event associated with the LMS tool use took place. This field is derived from the UDP’s event store. An event is considered to be a LMS tool launch when the EdApp ID of the event is the LMS. For example, an event is a Canvas tool launch if the EdApp ID is ‘canvas’ or ‘instructure’**.**

#### **canvas\_tool**

The field *canvas\_tool* defines the Canvas tool used if the LMS is Canvas. The Canvas tool used is derived from the *asset\_type* and *asset\_subtype* fields. If the *asset\_type* field is ‘course’, then the *canvas\_tool* field is defined based on the *asset\_subtype* field. For instance, if the *asset\_type* is ‘course’ and the *asset\_subtype* is ‘home’, then the *canvas\_tool* is defined as ‘Homepage’. Otherwise, the *canvas\_tool* is defined based on the *asset\_type* field.

#### **asset\_type**

The *asset\_type* field defines the asset type of the LMS tool. This field is derived from the event store. As mentioned when discussing the *event\_time* field, an event is a LMS tool launch if the EdApp ID of the event is the LMS. The asset type is generally extracted from the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]*. However, if the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]* is equal to ‘course’ and the *request\_url* key from *extensions\_json\[‘com.instructure.canvas’]* is an URL with a path similar to ‘*/course/…/grades/…’,* then the asset type is defined as ‘gradebook’.

#### **asset\_type\_id**

The *asset\_type\_id* field defines the ID for the asset type of the LMS tool. This field is also derived from events in the event store with an EdApp ID of the LMS. The asset type ID is extracted from the extensions of the object, or the *object.extensions* field. Specifically, it is extracted from the *entity\_id* key from *object.extensions.\[‘com.instructure.canvas’]*. If this value is null, then the asset type ID is extracted from the *object.id* field.

#### **asset\_subtype**

The *asset\_subtype* field is defined as the asset subtype of the LMS tool. This field is derived from events in the event store with an EdApp ID of the LMS. If the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]* is equal to ‘course’ and the *request\_url* key from *extensions\_json\[‘com.instructure.canvas’]* is an URL with a path similar to ‘*/course/…/grades/…’,* then the asset subtype is ‘user’. If the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]* is equal to ‘enrollment’, then the asset subtype is again defined as ‘user.’ Otherwise, the asset subtype is extracted from the *asset\_subtype* key from *object.extensions.\[‘com.instructure.canvas’].*

#### **asset\_subtype\_id**

The *asset\_subtype\_id* field is the asset subtype ID for the LMS tool. This field is taken from events in the event store with an EdApp ID of the LMS. If the *asset\_subtype* key from *object.extensions.\[‘com.instructure.canvas’]* is not null and the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]* is not equal to ‘course’, then the asset subtype ID is extracted from the *entity\_id* key from *object.extensions.\[‘com.instructure.canvas’].* When this key is null, the ID is instead extracted from the *object.id* field. If the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]* is equal to ‘enrollment’, then the asset subtype ID is extracted from the *request\_url* key from *extensions\_json.\[‘com.instructure.canvas’].* If the *asset\_type* key from *object.extensions.\[‘com.instructure.canvas’]* is equal to ‘course’ and the *request\_url* key from *extensions\_json\[‘com.instructure.canvas’]* is an URL with a path similar to ‘*/course/…/grades/…’,* then the asset subtype ID is extracted from the *request\_url* key from *extensions\_json.\[‘com.instructure.canvas’].* Otherwise, the asset subtype ID is null.

<table data-header-hidden data-full-width="true"><thead><tr><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><em>asset_subtype</em> key from <em>object.extensions</em></td><td><em>asset_type</em> key from <em>object.extensions</em></td><td><em>request_url</em> from <em>extensions_json</em></td><td><strong>asset_subtype_id</strong></td></tr><tr><td>Is not NULL</td><td>Is not equal to ‘course’</td><td><br></td><td>Is extracted from the <em>entity_id</em> key from <em>object.extensions</em> field. If this key is null, it is then extracted from the <a href="http://object.id">object.id</a> field.</td></tr><tr><td><br></td><td>Is equal to ‘enrollment’</td><td><br></td><td>Is extracted from <em>request_url</em> key from <em>object.extensions</em> field.</td></tr><tr><td><br></td><td>Is equal to ‘course’</td><td>Similar path as ‘/course/…/grades/…’</td><td>Is extracted from <em>request_url</em> key from <em>extensions_json</em> field.</td></tr></tbody></table>

## Tableau Template Workbook <a href="#lmstooluse-schema" id="lmstooluse-schema"></a>

As a starting point for visualization for this data mart, Unizin has created a Tableau template workbook available for download here:

{% file src="<https://3709019308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKYwtHNGgdPXS3PWAlZUr%2Fuploads%2FS3WxCR30McO1Fba5zG1r%2FCanvas%20Tool%20Dashboard_2025_05_13.twb?alt=media&token=abed0336-009b-4986-830c-9cef55779cf6>" %}
Canvas Tool Dashboard Tableau Workbook File
{% endfile %}

Unizin does not provide active, production support for the visualizations, filters, and aggregations in the Tableau workbooks. They are intended to be used as-is, but modifications are welcome! However, we will provide support related to connecting to source data and any issues with the Bigquery -> Tableau workflow.&#x20;

Once downloaded, ownership of the workbook is transferred to the user.  Unizin does not host the workbook on a Tableau Server instance.

### Connecting to Data <a href="#lmstooluse-fields" id="lmstooluse-fields"></a>

The default data connection in the workbook is to Unizin's synthetic data. After downloading the workbook, the first step will be to transfer the connection to your own production UDP data. Here is a [guide document](https://docs.google.com/document/d/1v_4JjgCz46nky5WZbZZGmO_6F6E2zoyBYifOSoZJNk4/edit?usp=sharing) to help with this process; also, Tableau has a [published doc](https://help.tableau.com/current/pro/desktop/en-us/connect_basic_replace.htm) for replacing data sources. For any issues connecting to source data, please contact <support@unizin.org>.

### Tableau Dashboard Filters <a href="#lmstooluse-fields" id="lmstooluse-fields"></a>

The following fields are used as filters in the Tableau Workbook:

* Instructor Display - The list of names of the course's instructors.
* Course Offering Title - The title of the course offering.
* UDP Course Offering ID - The UDP ID of the course offering.
* Academic Term - The academic term of the course; the default selection is the current term.

These filters are in scope for all visuals in the dashboard.

### Tableau Visualizations <a href="#lmstooluse-fields" id="lmstooluse-fields"></a>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc2VnxORGI_Th-moylbFiCQ4egsmcF7jzybOcidJCK2aqFtntu8J1IO9-oA4Owj-uJFemEYXLUS_WfeMeufbhpYLdBQiff7kRFhb3IU3eePXmET6s_8TllTVCp5RB8K2T6UXqyc2Q?key=WcA5v9a9x62PK-l2pv11g7pT" alt=""><figcaption><p>Metric Cards</p></figcaption></figure>

The metric cards displays 2 keys indicators: the total number of users and the total number of launches, showing how many users are active and how often they interact with canvas tools.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdcUD-b0R1Lv7k1zOhMp0ULEh_8oNheMTRMWBuKY6XnOEHnwuEWgySXzhfE9zvwJ-ixPV9hpcXxVmC13XCRojEYJwkBWP6RfHTEjA28Z6IQYBd2d8hBk6WXZA5UKl-f1i7vnA_k?key=WcA5v9a9x62PK-l2pv11g7pT" alt=""><figcaption><p>Hourly timeline</p></figcaption></figure>

The hourly distribution of canvas tool usage offers insights into when users are most active on the platform. This helps identify peak usage hours and understand daily engagement patterns.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfs7v3goLgdelhYHvSdfnkTUC1BJ1tUGTXFnsoeXSNjV2WFfWdJi9TkppCyllEQTS5SU34XJAWpIc4eeiarn2_9LZHmEeXqriZkFzWWu8XzMCWVuMlWo_OKymJzCxTqKEtyY5M6pA?key=WcA5v9a9x62PK-l2pv11g7pT" alt=""><figcaption><p>Daily timeline</p></figcaption></figure>

The daily canvas tool usage chart highlights the distribution of activity across weekdays, revealing patterns in how users engage with the platform throughout the week. This allows users to identify peak days of usage and adjust support or instructional strategies accordingly.

<figure><img src="https://3709019308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKYwtHNGgdPXS3PWAlZUr%2Fuploads%2FhUMvyShGkb4H0VskrJPx%2FScreenshot%202025-05-13%20at%209.59.39%E2%80%AFAM.png?alt=media&#x26;token=1ec05c90-f0db-40a1-afac-8be09a9e4b88" alt=""><figcaption><p>Hourly usage distribution </p></figcaption></figure>

The hourly canvas tool usage for recent activity chart breaks down platform engagement by hour over the past week - ranging from today and yesterday to activity more than 7 days ago. This view helps track short-term usage trends and identify changes in user behavior on a day-to-day basis.

<figure><img src="https://3709019308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKYwtHNGgdPXS3PWAlZUr%2Fuploads%2FQBtEj3OWTcI1y4OrHW24%2FScreenshot%202025-05-13%20at%2010.12.23%E2%80%AFAM.png?alt=media&#x26;token=5ca18636-5327-4d26-9763-aae27400925d" alt=""><figcaption><p>Usage Per Week</p></figcaption></figure>

The canvas tool usage per week chart presents weekly engagement across different canvas tools throughout the term. Stacked bars represent usage trends over the term, helping to identify which tools are most used each week. Hovering over each bar section reveals the tooltip, showing the tool name and the total number of clicks for the tool in scope.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcI4dje60t04S5N-cW01BnLo7miFl_pj4RMgYcwpnNwGger12mf7-QZTRCWhdjuffXxjvy1pccxBfVtmkO2dpIyRZpmbl_mStMw2J9CKrSH4LmJgcU_CWk3EGtkXEKGNmqi4Os9lQ?key=WcA5v9a9x62PK-l2pv11g7pT" alt="" width="375"><figcaption><p>Total Clicks Per Tool</p></figcaption></figure>

The total clicks per tool table displays the number of launches for each canvas tool. It provides a clear view of which tools are most frequently accessed across the platform.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdaOq16lryxuBYoBpEt_z5HEj-N52s3j4rewzrhCEtbQ6dNqfiYgClZftxbdgCh-wZMmHvioYky-iKkSDchdh5a4Z9U1QZM1Ndbj71IHCHQCKwUqrfz02NxuEEnKiIgDGWTgJFS0Q?key=WcA5v9a9x62PK-l2pv11g7pT" alt=""><figcaption><p>Daily Canvas Tool Usage Across Term</p></figcaption></figure>

The daily canvas tool usage line graph shows tool engagement throughout the term. It highlights daily trends and also marks the highest and lowest points for total usage and distinct users.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd5Y83QC_odKj1Y5P1-uQxNmS5RQ8xKzEpqVAJPYX9Cpwek9awenwkVF_PLgXL4MPLShJXma80T-tvSwAVk7RySGeOtW53dsmZckV6s4lUK_TASB1lbow7hOABC4Cyb-dkqG5T8zQ?key=WcA5v9a9x62PK-l2pv11g7pT" alt=""><figcaption><p>Tool Usage Per Course</p></figcaption></figure>

The canvas tool usage per course table displays tool engagement across different courses, including total clicks and the number of distinct users for each course.
