Dovetail Reporting

with Elasticsearch

Elasticsearch Suitability

with Caliper Events

Not So Much

  • Caliper is denormalized, but still relational
  • Elasticsearch has no support for relationships
  • Requires multiple stages to generate a result

Stages are Expensive

  • Think of a stage as a join or subselect in SQL
  • In Elasticsearch:
    1. Execute ES query
    2. Iterate result set while performing business logic
      • Grouping
      • Finding max value
      • Collecting intermediate values
    3. Repeat #1

Class Performance Report

Aggregation

  • Learning objective
    • Learner
      • Average score

Aggregation

  • Learning objective
    • Learner
      • Max Score
      • Total Score

No Custom Scripting

Filter Criteria

Date range

Classes

Learning Objectives

Data Source

Query Stages

  1. Filter Assessment Outcome events
  2. Filter Assessment Item Outcome Events
  3. Aggregate Assessment Item Outcome data

Stage 1

Assessment Outcome

Assessment Outcome
(filtered)

filter (apply criteria)

filter (max ( endedAtDate ) )

[14, 87, 112, 114, 871, ...]
assessment attempt ids

Stage 2

Assessment Item Outcome

Assessment Item Outcome
(filtered)

filter ([14, 87, 112, 114, 871, ...])

filter (max ( endedAtDate ) )

[48, 1015, 2349, 8670, ...]
assessment item attempt ids

Stage 3

Assessment Item Outcome

aggregate (skill, learner)

transform

{

    elasticsearch json

}

{

    dovetail json

}

Demo

Class Performance

curl -X POST -H "Content-Type: application/json" -d '{
    "classIds": ["http://mheducation.com/connected/classes/43e9a1bf-b039-45a5-9164-04bd03709c92"],
    "learningObjectives": ["http://api.academicbenchmarks.com/rest/v3/standards/CF6A375C-67AD-11DF-AB5F-995D9DFF4B22"],
    "boundsLower": "2015-08-01T00:00:00Z",
    "boundsUpper": "2016-06-01T00:00:00Z",
    "sourceSystems": ["engrade"],
    "activityTypes": ["assessment"]}' 'http://leap-output-rest-api-dev.mhedovetail.com/reports/classes/performance'

Demo

Class Assessments

curl -X POST -H "Content-Type: application/json" -d '{
    "classIds": ["http://mheducation.com/connected/classes/43e9a1bf-b039-45a5-9164-04bd03709c92"],
    "learningObjectives": ["http://api.academicbenchmarks.com/rest/v3/standards/CF6A375C-67AD-11DF-AB5F-995D9DFF4B22"],
    "boundsLower": "2015-08-01T00:00:00Z",
    "boundsUpper": "2016-06-01T00:00:00Z",
    "sourceSystems": ["engrade"],
    "activityTypes": ["assessment"]}' 'http://leap-output-rest-api-dev.mhedovetail.com/reports/classes/assessment'

Dovetail Reporting

By James Cook

Dovetail Reporting

  • 863