ユーザー受講状況 一括ログ集計について

ユーザー受講状況 一括ログ集計について

by A Torii -
Number of replies: 4
お世話になります。

学習者の学習進捗ログの集計方法について教えていただきたく、投稿しております。

まず、こちらの状況ですが、 現在、社内の学習ツールとしてmoodleを利用しています。利用者登録の際にコーホートに振り分けて、コース登録を実施しています。

コーホートAのユーザー:全コース登録
コーホートBのユーザー:一部のコースに登録

現在、利用者の受講状況を各コースのレポート:活動完了 を利用して、確認しています。
ただ、コース数が多いため、コーホートAのユーザーの全体の受講状況を把握するために、集計にすごく時間がかかってしまっています。

利用者視点で、 全登録コースの受講状況(完了プログレスの%)を一括で取得する方法はございますでしょうか?
可能であれば、項目にユーザーネーム、姓、名、アドレス、所属、部署、各コースで表示できると、とても助かります。

イメージ
123、山田、花子、888@jp.、営業、1課、コースa 85%、コースb 5%、コースc65%……………


現在使用中のmoodle: 3.7.1です。
Average of ratings: -
In reply to A Torii

Re: ユーザー受講状況 一括ログ集計について

by Mitsuhiro Yoshida -
Picture of Developers Picture of Particularly helpful Moodlers Picture of Translators

非標準プラグインのAd-hoc database queries※1をインストールした上でSQL「User Course Completion※2を使用した場合、各コースでのユーザの完了日時をCSVファイル形式で取得可能です。必要に応じてSQL「User Course Completion」の記述をご変更ください。

[※1 Reports: Ad-hoc database queries]
https://moodle.org/plugins/report_customsql

[※2 User Course Completion - ad-hoc contributed reports - MoodleDocs]
https://docs.moodle.org/39/en/ad-hoc_contributed_reports#User_Course_Completion

Attachment Ad-hoc database queries.png
In reply to Mitsuhiro Yoshida

Re: ユーザー受講状況 一括ログ集計について

by A Torii -
吉田様

ご教示いただきありがとうございます。

非標準プラグインのAd-hoc database queries※1をインストールすると、
データベース上でSQLが触れるようになるのですね。
データベースやSQLの知識がないのですが、SQLの内容によって、必要な情報が簡単に取れるということは理解しました。

各コースでのユーザの完了日時ではなく、進捗率というのも、
SQLデータを書き換えれば取得可能なのでしょうか?
([※2 User Course Completion - ad-hoc contributed reports - MoodleDocs から該当しそうな内容を探したのですが、見つけられず・・)

ご返信いただけますと幸いです。

鳥居
In reply to A Torii

Re: ユーザー受講状況 一括ログ集計について

by Mitsuhiro Yoshida -
Picture of Developers Picture of Particularly helpful Moodlers Picture of Translators

> 各コースでのユーザの完了日時ではなく、進捗率というのも、SQLデータを書き換えれば取得可能なのでしょうか?

可能だと思います。

以下のようなAd-hoc database queries用SQL文ではいかがでしょうか。

SELECT u.username AS 'Username', u.lastname AS 'Lastname', u.firstname AS 'Firstname', u.email AS 'Email', c.fullname AS 'Course Fullname', c.shortname AS 'Course Shortname',
(SELECT COUNT(*)
FROM prefix_course_modules cm
WHERE  cm.course=en.courseid AND cm.completion = 2) AS 'Course Modules',

(SELECT COUNT(*)
FROM prefix_course_modules_completion cc
JOIN prefix_course_modules cm ON cm.id = cc.coursemoduleid
WHERE cm.course=en.courseid AND cc.userid=ue.userid AND cc.completionstate = 1) AS 'Modules Completed',

ROUND((
(SELECT COUNT(*)
FROM prefix_course_modules_completion cc
JOIN prefix_course_modules cm ON cm.id = cc.coursemoduleid
WHERE cm.course=en.courseid AND cc.userid=ue.userid AND cc.completionstate = 1) /
(SELECT COUNT(*)
FROM prefix_course_modules cm
WHERE  cm.course=en.courseid AND cm.completion = 2) * 100),2) AS 'Progress %'

FROM prefix_user_enrolments ue
JOIN prefix_enrol en ON en.id = ue.enrolid
JOIN prefix_user u ON u.id=ue.userid
JOIN prefix_course c ON c.id=en.courseid
Attachment Ad-hoc database queries.png
In reply to Mitsuhiro Yoshida

Re: ユーザー受講状況 一括ログ集計について

by A Torii -
吉田様

お世話になります。
SQLのご教示ありがとうございます。
とても助かりました。活用させていただきます。