移动使用活动

本页包含 SQL 查询 Blackboard Learn 数据库的活动累加器,以便您能获得 Blackboard 移动使用的相关活动信息。此类信息假定您已经可以访问您的数据库并有权查询信息。这些查询仅用于报告目的,因此,无需写入权限。

建议使用具有只读权限的帐户来防止意外更改。直接对任一复杂系统的数据库做出更改会导致重大问题,包括停机。本文档中这个页面列出的查询不会对系统做出任何更改。

本页面指定了 SQL 查询代码示例。通过这些查询,您应该能了解其他事项的工作原理。数据的记录方式存在一些限制。目前,我们无法确定任何特定事件是通过哪个应用程序或平台执行的。这意味着,在查找数据时,Blackboard 应用程序和 Blackboard Instructor 都是一样的。

在 SQL 查询示例中,bblearn 被用作示例数据库架构。Blackboard Learn 数据库会将数据存储在许多备用架构(如 bb_bb60 或 bblearn_stats)中以将数据存档。查询的第一部分可能需要进行更改,以将架构变体考虑在内。

统计特定时间段内移动登录的总次数

此查询会显示任何用户从任一设备上的任一应用程序登录到 Blackboard Learn 的次数。用户登录一次,它就会统计一次。如果用户在信号不好的地方反复断开连接,则它会报告多次登录,即使自动登录的用户在自己的设备上将其视为一次会话也是如此。下方的示例以一个月的数据为依据。

select Count(*) from bblearn.activity_accumulator
where TIMESTAMP > '01-MAR-2016'
and TIMESTAMP < '01-APR-2016'
and data like '%Mobile Login%'

当配置为强制进行 Web 验证时,对于每次移动应用程序用户登录,Blackboard Learn 数据库中的活动累加器表将“移动登录尝试”记录三次。详细了解此已知问题

统计特定时间段内的唯一身份用户数

此查询会显示在特定时间段内登录的唯一身份用户数。因为它使用与登录相关的数据库 ID(与在此时间段内使用的不同应用程序或设备数量无关),因此用户仅会显示为一个用户。例如,如果您要反复使用此查询来构建不同月份的报告,则对于每个查询来说,用户都是唯一的。也就是说,您每运行一次此查询,每个用户就会被统计一次。系统会针对用户登录的每个不同月份来统计每个用户,但每个月只统计一次。下方的示例以一个月的数据为依据。

select Count(Distinct(user_pk1)) from bblearn.activity_accumulator
where TIMESTAMP > '01-MAR-2016'
and TIMESTAMP < '01-APR-2016'
and data like '%Mobile Login%'

按课程角色统计唯一身份用户登录次数

此查询会显示按课程角色登录的唯一身份用户数。它将 activity_accumulator 表格与 course_users(注册)表格联接起来。联接 course_users 表格(包含每个用户的课程或组织角色)后,可以提供 Blackboard 和 Blackboard Instructor 应用程序访问用户数量的粗略估计值。适用于“统计特定时间段内的唯一身份用户数”的相同准则适用于此查询。此示例返回一个月内某位教师移动登录的次数。

select Count(Distinct(user_pk1)) from bblearn.activity_accumulator aa
join bblearn.course_users cu on
aa.user_pk1 = cu.users_pk1
where cu.role = 'P'
and timestamp > '01-NOV-2018'
and timestamp < '30-NOV-2018'
and aa.data like '%Mobile Login%';

请注意,对于 cu.role,必须使用课程或组织“ROLE ID”。此外,有些用户可能登录至错误的应用程序。例如,某位教师可能会误登录至 Blackboard 应用程序。分析结果时请考虑这一点。

显示特定时间段内的所有各个登录

此查询实际上与“统计特定时间段内移动登录的总次数”这个查询相同,但不同之处在于它显示所有原始数据(而非只统计行数)。如果您要查找模式、或打算导出要对其执行操作的数据以深入了解报告,这个查询会非常有用。第一行中的“*”字符表示它会显示表格中的所有列。

select * from bblearn.activity_accumulator
where TIMESTAMP > '01-MAR-2016'
and TIMESTAMP < '01-APR-2016'
and data like '%Mobile Login%'

显示用户在特定时间段内查看论坛话题的所有各个次数

此查询不是查找 Mobile Analytics 等页面上的登录数据,而是查找学生在应用程序中所执行的操作。当有人使用 Blackboard 应用程序在论坛上查看话题时,Building Block 便会在 activity_accumulator 表格中记录一个“mobile.view.thread”项目。此查询会显示任何学生在任一论坛上查看任一话题的时间。如果将此类数据与其他表格中的数据相结合,或在 Microsoft Excel 等程序中对此类数据执行操作,则可以确定有关特定学生、课程和使用模式的信息。

select * from bblearn.activity_accumulator
where TIMESTAMP > '01-MAR-2016'
and TIMESTAMP < '01-APR-2016'
and data = 'mobile.view.thread'

显示所有移动使用

以下查询会提取特定月份内的所有移动项目。不过,此查询会包括只含有“移动”一词的网页的结果。虽然此类信息非常有用,但为了查找使用模式,最好将数据转换成其他格式。例如,查看哪些项目(已记录使用)是最常通过移动设备访问的项目。

select * from bblearn.activity_accumulator
where TIMESTAMP > '01-MAR-2016'
and TIMESTAMP < '01-APR-2016'
and data like '%Mobile%'

高级查询

以下查询包括上述一些基础知识,并显示了几种方式来获取更详细的数据或将数据整合在一起,使其更具可读性。

查询 Blackboard 用户

此查询包括用户表格中的所有数据。其中含有每个用户的用户名和相关的 PK 值。这是 Blackboard Learn 中的所有用户,而与其是否使用任何 Blackboard 移动产品无关。

select *
from bblearn.users

将您的查询范围限制在特定列中

本页中的查询都在查询部分使用“*”标志符,以便让您指定列。这会导致 SQL 返回表格中的所有列,而与这些列是否为您提供任何实际值无关。以下查询会返回 activity_accumulator 表格中的所有行,但仅会返回 5 列。这样不仅可让我们识别用户、课程和内容项目,还会给我们提供数据字段的信息及活动发生时间的时间戳。它不会显示其他任何列。

select user_pk1, course_pk1, content_pk1, data, timestamp
from bblearn.activity_accumulator

将多个表格结合在一起

如果您想将两个表格中的结果结合在一起,则它会帮您筛选,以将数据范围限制在相关用户。您也可以提取用户名,直接将用户与活动关联起来,从而省去您手动查找的麻烦。SQL 会使用结合,将多个表格中的结果结合在一起。关联是一个地方,在这里,语句告知 SQL 一个表格中的值等于另一个表格中的相同值。

以下查询是一个使用表格的 SQL 结合示例。结合可能会非常困难,有时需要尝试多次并会出错。如果打算执行较复杂的查询,建议您了解结合。较复杂的查询需要数据库服务器处理更多的请求,且有可能出现更多的错误。

下方是一个逐行示例,您可参考它来构建其他查询。此查询将上述的多个查询结合为一个查询,以便只提供多个表格中设置了多项限制的特定列。

  1. 指定两个不同表格中的列。然后,定义表格名称。
  2. 选择两个表格,并为其提供单个字母的昵称。
  3. Where 是指定条件的地方。在 SQL 中,解释表格的关联方式被视为条件。因此,您需要指定哪些列是相等的,以便 SQL 了解如何将数据关联在一起。
  4. 其他条件:时间戳开始日期
  5. 其他条件:时间戳结束日期
  6. 其他条件:数据列限制器

select u.user_id, a.data, a.timestamp
from bblearn.activity_accumulator a, bblearn.users u
where u.pk1=a.user_pk1
and a.TIMESTAMP > '01-MAR-2016'
and a.TIMESTAMP < '01-APR-2016'
and a.data like '%Mobile Login%'

与查询类似,条件可以添加到用户表格中,如 u.user_id = 'StudentLogin'。这样一来,只要获得学生的实际用户名,系统便可针对 activity_accumulator 表格运行查询,而不必确定用户 PK1 值。

可以结合其他表格。添加的条件和结合越多,查询需要的时间就越长,但得到的结果中的数据质量会更好。无需获得许多数据库 ID,就像 activity_accumulator 会默认填充一样,内容名称和课程名称可以填充到查询中。

参考数据

移动事件

以下事件是由移动 Web 服务 Building Block 在 activity_accumulator 表格中记录的。此列表可能会随时间而变化。Building Block(而非应用程序本身)记录事件时,无论使用哪个应用程序执行操作,数据格式都是相同的。在上文的话题查看这个查询中,如果下表中任一条目包含除移动列表本身之外的额外文本,则可以使用此条目替换“mobile.view.thread”参数。在有些实例中,相同操作存在不同的条目。这是因为,记录的格式会在某种情况下发生变化,因此,您可能需要搜索这两种条目类型,才能获得一段时间内的结果。

Blackboard 应用程序支持的内容类型
事件 activity_accumulator 表格“数据”字段中的条目
查看博客列表 mobile.list.blogs
查看帖子列表 mobile.list.blog.entries
查看帖子评论 mobile.list.blog.comments
添加日记评论 mobile.list.journal.add.entry.comment
添加博客评论 mobile.list.blog.add.entry.comment
添加日记文章 mobile.list.journal.add.entry
添加博客文章 mobile.list.blog.add.entry
查看日记列表 mobile.list.journals
查看帖子列表 mobile.list.journal.entries
查看帖子评论 mobile.list.journal.comments
查看论坛 mobile.list.forums
查看话题 mobile.list.threads
查看话题 mobile.view.thread
查看话题帖子 mobile.view.thread.post
查看公告 mobile.view.announcements
查看花名册 mobile.view.roster
查看成绩 mobile.view.grades
添加日记文章 mobile.add.journal.entry
添加 db 帖子 mobile.add.thread.post
添加 db 帖子评论 mobile.add.thread.post.comment
查看内容项目 Mobile Content View

How do I find how many students and/or faculty are using Bb Mobile apps?

For servers using version *.2.9 and higher of the Blackboard Mobile Web Services building block, when a user logins on the Blackboard Mobile Learn app, the BbMobile User role is added as a secondary institutional role.

Students

Here's a query on how to find all student users who have the BbMobile User associated with them as a secondary institutional role (presumes 'student' role is institution_roles_pk1 = 1):

SELECT count(distinct u.pk1) as count_BbMobileUser
FROM users u, user_roles r, institution_roles ir
WHERE u.institution_roles_pk1 = '1'
AND u.pk1 = r.users_pk1
AND r.institution_roles_pk1 = ir.pk1
AND ir.role_name = 'BbMobile User';

Faculty

Here's a query on how to find all faculty users who have the BbMobile User associated with them as a secondary institutional role (presumes 'faculty' role is institution_roles_pk1 = 2):

SELECT count(distinct u.pk1) as count_BbMobileUser
FROM users u, user_roles r, institution_roles ir
WHERE u.institution_roles_pk1 = '2'
AND u.pk1 = r.users_pk1
AND r.institution_roles_pk1 = ir.pk1
AND ir.role_name = 'BbMobile User';

Counting total Mobile Logins for 1 month

SELECT Count(*) from bblearn.activity_accumulator
WHERE TIMESTAMP > '01-MAR-2016'
AND TIMESTAMP < '01-APR-2016'
AND data like '%Mobile Login%';

Counting Unique Users for 1 month

SELECT Count(Distinct(user_pk1))
FROM bblearn.activity_accumulator
WHERE TIMESTAMP > '01-MAR-2016'
AND TIMESTAMP < '01-APR-2016'
AND data like '%Mobile Login%';