@James makes a good point, the various endpoints for these type of questions exists in multiple places, sometimes it's a matter of what you can gain access to or consume based on your experience and tools at hand. Reading @millerjm 's response I was thinking we need a feature matrix, limited in x, possible in y, complicated in z.
As James states, depending on the size of your school it can often make sense to combine these things and compile a solution that fills in the gaps. I really want to start collecting these solutions in some open source community reference.
Live Events is a stream of transactions that make up several parts of what is Canvas Data or API end points.
With the API we have to request that information on a per record basis (or just about), with Canvas Data we have to get the files and expect it's missing some of the data we want now, until we can get an update later. Rinse Repeat...
However, Live Events doesn't create or send total_time information, it would send most 'clicks' or action taken by the user. Asset Accessed (a resource within a course), Submission, Discussion Entry, File Uploaded. You can parse this information and produce something like total_time, which would be very similar to how I do so with the requests table, but there would be less noise, because there is no LTI traffic... what is job based can be separated from user actions. On the subject, for me, Live Events fills the gap between using the API for 'last activity', and the enrollment_dim.last_activity_at. Where that is static from the last date of download, Live Events can be appended to CD and I can query for the last asset_accessed, submission, discussion_entry etc, for that student and that course, and show the Instructor, the student was active this morning, even though CD was downloaded and installed last night.
I also plan to use Live Events to truncate heaps of rows from the Requests Table in order to have 'clicks' not logs.
I haven't gone very far with GraphQL yet, I'm excited about it, but I'm focused on releasing this Live Events consumer for the community so we can all have the same toys. @phanley , posted the most impressive GraphQL example I've seen in Canvas context here, which provides a very nice query with joined API endpoints and produces a result with course name, users/enrollments, last_activity, section, and grades. GraphQL is used within Canvas in a few places, the Course Context Card is one. For GraphQL, just hit /graphiql to your Canvas URL, start with beta/test. :smileygrin:
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.