Using an external reporting tool through API calls to identify student needs earlier

We do most of our reporting out of our SIS (Ellucian Colleague) using a tool from Entrinsik called Informer. However, we don't identify students who need help until after final grades have been posted to the SIS. In an effort to identify students who aren't turning in assignments or who aren't on track to pass a course before the course has ended, I've connected Informer to D2L Brightspace using the API capabilities.

Informer allows me to pull "datasets" from multiple sources and then compile them into comprehensive reports. My goal is to combine assignment/grade data from Brightspace with demographic data from Colleague to identify cohorts, such as athletes or "chemistry majors" who are struggling.

I want to pull all grades into a dataset with the student and course identifiers associated with each grade. However, it seems that Brightspace only wants me to pull grades for individual courses (the org unit ID is part of the API url). Is there some way to pull all grades for a given term (or terms) with the corresponding course and student identifiers so that I can link everything back together on the Informer side?

This has been my primary resource: https://docs.valence.desire2learn.com/http-scopestable.html#cap-grades

Answers

  • Renee.J.194
    Renee.J.194 Posts: 126

    What we do is that we collect most of the Brightspace data sets into our institutional data peopllake, which is an oracle database The data lake also has data from Ellucian Banner, our SIS, including demographics. We write SQL reports to join D2L and Banner on shared keys. (Our Spriden ID in Banner is the Org defined ID for a user in D2L. Our CRN and term code in Banner combine in D2L to be a course offering code. We are able to create reports that have the information that people understand and look for. Obviously, there is more to it than this summary, and a report on student performance might include a couple of Banner tables and 6 or 8 or 10 D2L tables. But once you get the idea, it just takes a bit of patience. Our data lead also builds views that pull together commonly requested data and can be used by less patient analysts (like me) to build specialized reports easily.

  • We haven't found a way except to use our custom tables where we dump the datasets each morning. We pull diff files via api and output the ones we want into our data warehouse. Then we can calc grades by using the fields below. BOLD are the data sets we use and output into our custom tables.
    [D2L_GRADE_RESULTS].POINTS_NUMERATOR
    /NULLIF([D2L_GRADE_RESULTS].POINTS_DENOMINATOR,0)
    So, this is by course, but then we can query for each individual student all terms based on our custom tables. We tie our D2L_USERS_ID to our Colleague ID so we can tie back to our other tables.
    We primarily use the d2l datasets for our custom attendance process, but are now expanding into grades more and more. We use WebFocus and Tableau here for reporting, but I handle the calculations in our data warehouse in SQL.
    Feel free to reach out privately if you have more questions.

    Stephanie Stansell

    Application Implementation & Development Director

    smstansell1@ccis.edu

  • Mike.M.452
    Mike.M.452 Posts: 2 🌱

    I toyed around with the API years ago but couldn't find a good way to grab all that data without a large number of of api hits per teacher. If you find another way I'd love to know if it doesn't involve dumping the entire db and processing it daily. If you find a way I'd love to know!

  • You could look at using the "All Grades" Advanced Dataset. https://community.d2l.com/brightspace/kb/articles/4539-list-of-advanced-data-sets#all-grades

    This dataset can be created and pulled by API but also can be filtered by department or course and dates.

    It gives all the grades modified in the date range.

  • I've been reading up on the All Grades advanced data set because it does sound like what I need, but I haven't been able to find a page that describes how to pull data from that dataset through the API. The only thing I've been able to find is a way to pull a zip file containing csv data. If Informer can pull the data directly (through the API), it automatically creates a Postgres database of the data, but it can't read/access data that is "hidden" in a zip file.

  • There is a great article on that at https://community.d2l.com/brightspace/kb/articles/16111-how-to-get-started-with-data-hubs-apis-advanced-data-sets

    Basically, you create a advanced dataset job, then once complete you can download the dataset.

  • Based on the article found here: https://community.d2l.com/brightspace/kb/articles/1105-brightspace-data-sets-headless-non-interactive-client-example

    It seems that I'm stuck with downloading a zip file and then unzipping it to CSV before I can do anything with the data. This is disappointing as I'm able to access data directly through API calls for the base Brightspace APIs (differentiating from the "Advanced Data Sets"). This intermediate Zip/CSV design forces us to write a script rather than simply access the data directly from within our reporting tool.