Introduction
This wiki details the architecture of enabling reporting framework to operate at scale. It discusses the high level design problems to be solved and introduces the proposed architecture for the same.
Key Design Problems
TBA
...
Reporting Architecture
...
Druid Architecture
...
Druid Data Model
Raw Telemetry
Dimension in Druid
Field in Summary event
Description
Data Type
eid
eid
Event Id
String
ver
ver
Version
String
syncts
syncts
Sync timestamp
Long
uid
uid
User Id
String
context_date_range_from
context.date_range.from
Start Date for the summary
Long (Epoch)
context_date_range_to
context.date_range.to
End Date for the summary
Long (Epoch)
context_rollup_l1
context.rollup.l1
Context level1 rollup
String
context_rollup_l2
context.rollup.l2
Context level2 rollup
String
context_rollup_l3
context.rollup.l3
Context level3 rollup
String
context_rollup_l4
context.rollup.l4
Context level4 rollup
String
dimension_channel
dimensions.channel
Channel Id as dimension from raw telemetry
String
dimensions_did
dimensions.did
Device Id as dimension from raw telemetry
String
dimensions_pdata_id
dimensions.pdata.id
Producer Id as dimension from raw telemetry
String
dimensions_pdata_pid
dimensions.pdata.pid
Producer Process Id as dimension from raw telemetry
String
dimensions_sid
dimensions.sid
Session Id as dimension
String
dimensions_type
dimensions.type
Type of summary
String
dimensions_mode
dimensions.mode
Mode of action in the session
String
object_id
object.id
Content Id
String
object_type
object.type
Content Type
String
object_type
object.type
Content Type
String
object_version
object.ver
Content version
String
object_rollup_l1
object.rollup.l1
Object level1 rollup
String
object_rollup_l2
object.rollup.l2
Object level2 rollup
String
object_rollup_l3
object.rollup.l3
Object level3 rollup
String
object_rollup_l4
object.rollup.l4
Object level4 rollup
String
tags
tags
Tags attached to a summary event
Array[String]
edata_time_spent
edata.eks.time_spent
Time spent in the session excluding idle time
Double
edata_time_difference
edata.eks.time_diff
Total time in a session including idle time
Double
edata_interaction_count
edata.eks.interact_events_count
Total count of interact events in a session
Long
edata_env_summary_env
edata.eks.env_summary.env
High level env within the app
(content, domain, resources, community)
Array[String]
edata_env_summary_count
edata.eks.env_summary.count
Count of times the environment has been visited
Array[Integer]
edata_env_summary_time_spent
edata.eks.env_summary.time_spent
Time spent per env
Array[Double]
edata_page_summary_id
edata.eks.page_summary.id
Page id
Array[String]
edata_page_summary_type
edata.eks.page_summary.type
Type of page e.g. view/edit
Array[String]
Dimension in Druid | Field in Telemetry | Description | Data Type | ||||||
---|---|---|---|---|---|---|---|---|---|
1 | ets | ets | Event timestamp | Long | |||||
2 | eid | eid | Event Id | String | |||||
3 | syncts | syncts | Sync Timestamp | Long | |||||
4 | @timstamp | @timstamp | Sync Timestamp in String | String | |||||
5 | actor_id | actor.id | Actor Id of the event | String | |||||
56 | actor_type | actor.type | Type of the actor | String | |||||
67 | context_channel | context.channel | Channel Id | String | |||||
78 | context_pdata_id | context.pdata.id | Producer Id | String | |||||
89 | context_pdata_pid | context.pdata.pid | Producer Process Id | String | |||||
910 | context_pdata_ver | context.pdata.ver | Producer version number | String | |||||
1011 | context_env | context.env | Context Environment | String | |||||
1112 | context_sid | context.sid | Session Id | String | |||||
1213 | context_did | context.did | Device Id | String | |||||
1314 | context_cdata_type | context.cdata.type | Correlation Data Type | Array[String] | |||||
1415 | context_cdata_id | context.cdata.id | Correlation Data Id | Array[String] | 15|||||
16 | objectcontext_rollup_ | idl1 | objectcontext.rollup. | idContent Idl1 | Context level 1 rollup | String | 16|||
17 | objectcontext_rollup_ | typel2 | objectcontext.rollup. | typeContent Typel2 | Context level 2 rollup | String | 17|||
18 | objectcontext_ | versionobject.ver | Content Version | String | |||||
18 | tags | tags | Tags | Array[String] | |||||
19 | edata_type | edata.type | Event typerollup_l3 | context.rollup.l3 | Context level 3 rollup | String | |||
19 | context_rollup_l4 | context.rollup.l4 | Context level 4 rollup | String | |||||
20 | edataobject_ | subtypeid | edataobject. | subtypeid | Event subtypeContent Id | String | |||
21 | edataobject_ | modetype | edataobject. | modeSTART event Mode of starttype | Content Type | String | |||
22 | edataobject_ | pageidversion | edataobject. | pageidver | Unique pageidContent Version | String | |||
23 | edataobject_rollup_ | uril1 | edataobject.rollup. | uriIMPRESSION event Relative URI of the contentl1 | Content level 1 rollup | String | |||
24 | edataobject_rollup_ | idl2 | edataobject.rollup. | idEvent data Idl2 | Content level 2 rollup | String | |||
25 | edataobject_rollup_ | durationl3 | edataobject.rollup. | durationDuration of the event | Doublel3 | Content level 3 rollup | String | ||
26 | edataobject_rollup_ | indexl4 | edataobject. | indexASSESS event Index of the question within a contentrollup.l4 | Content level 4 rollup | String | |||
27 | edata_pass | edata.pass | ASSESS event Field to identify pass or fail for assessments | Stringtags | tags | Tags | Array[String] | ||
28 | edata_scoretype | edata.score | ASSESS event Assessment score | Doubletype | Event type | String | |||
29 | edata_resvaluessubtype | edata.resvalues | ASSESS event Assessment results | Array[Object]subtype | Event subtype | String | |||
30 | edata_item_idmode | edata.item.idmodeASSESS event Assessment item id | START event Mode of start | String | |||||
31 | edata_item_titlepageid | edata.item.titleASSESS event Assessment item titlepageid | Unique pageid | String | |||||
32 | edata_item_maxscoreuri | edata.item.maxscoreuri | ASSESS event Assessment item max score | DoubleIMPRESSION event Relative URI of the content | String | ||||
33 | edata_target_id | edata.target.idASSESS event Assessment item target id | Event data Id | String | |||||
34 | edata_target_typeduration | edata.target.type | ASSESS event Assessment item target type | Stringduration | Duration of the event | Double | |||
35 | edata_ratingindex | edata.ratingindex | FEEDBACK event RatingsASSESS event Index of the question within a content | Integer | |||||
36 | edata_commentspass | edata.commentspass | FEEDBACK event CommentsASSESS event Field to identify pass or fail for assessments | String | |||||
37 | edata_dirscore | edata.dirscore | SHARE ASSESS event directionAssessment score | StringDouble | |||||
38 | edata_items_idresvalues | edata.items.idresvalues | SHARE event shared item idsASSESS event Assessment results | Array[StringObject] | |||||
39 | edata_itemsitem_typeid | edata.itemsitem.type | SHARE item types | Array[String]id | ASSESS event Assessment item id | String | |||
40 | edata_items_origin_iditem_title | edata.itemsitem.origin.id | SHARE event source id | Array[String]title | ASSESS event Assessment item title | String | |||
41 | edata_itemsitem_origin_typemaxscore | edata.itemsitem.origin.type | SHARE event source type | Array[String]maxscore | ASSESS event Assessment item max score | Double | |||
42 | edata_itemstarget_to_id | edata.itemstarget.to.id | SHARE event destination ASSESS event Assessment item target id | Array[String] | |||||
43 | edata_itemstarget_to_type | edata.itemstarget.to.type | SHARE ASSESS event destination Assessment item target type | Array[String] | |||||
44 | edata_staterating | edata.staterating | AUDIT FEEDBACK event current stateRatings | StringInteger | |||||
45 | edata_prevstatecomments | edata.prevstateAUDIT event previous statecomments | FEEDBACK event Comments | String | |||||
46 | edata_sizedir | edata.sizedir | SEARCH SHARE event result sizedirection | IntegerString | |||||
47 | edata_filtersitems_dialcodesid | edata.filtersitems.dialcodesid | SEARCH event List of dialcodesSHARE event shared item ids | Array[String] | |||||
48 | edata_ | topnitems_ | identifiertype | edata. | topnitems. | identifierSEARCH event topn resultstype | SHARE item types | Array[String] | |
49 | edata_ | visitsitems_origin_ | objidid | edata. | visitsitems. | objidIMPRESSION event unique id for object visitedorigin.id | SHARE event source id | Array[String] | |
50 | edata_ | visitsitems_origin_ | objtypetype | edata.items. | visitsorigin. | objtypetype | IMPRESSION event type of object visitedSHARE event source type | Array[String] | |
51 | edata_ | visitsitems_to_ | objverid | edata.items. | visitsto. | objverIMPRESSION event version of object visitedid | SHARE event destination id | Array[String] | |
52 | edata_ | visitsitems_to_ | indextype | edata.items. | visitsto. | indextype | IMPRESSION event index of object within listSHARE event destination type | Array[ | IntegerString] |
53 | deviceedata_ | loc_state | devicedataedata.state | State location information for the deviceAUDIT event current state | String | ||||
54 | device_loc_state_code | devicedata.statecode | State ISO code information for the deviceedata_prevstate | edata.prevstate | AUDIT event previous state | String | |||
55 | deviceedata_ | loc_citysize | devicedataedata. | cityCity location information for the device | Stringsize | SEARCH event result size | Integer | ||
56 | deviceedata_ | locfilters_ | country_codedevicedata.countrycode | Country ISO code information for the device | String | ||||
57 | device_loc_country | devicedata.country | Country location information for the device | String | |||||
58 | device_os | devicedata.os | Device OS name | String | |||||
59 | device_make | devicedata.make | Device make and model | String | |||||
60 | device_id | devicedata.id | Physical device id if available from OS | String | |||||
61 | device_mem | devicedata.mem | Total memory in mb | Integer | |||||
62 | device_idisk | devicedata.idisk | Total interanl disk | Integer | |||||
63 | device_edisk | devicedata.edisk | Total external disk | Integer | |||||
64 | device_scrn | devicedata.scrn | Screen size in inches | Integer | |||||
65 | device_camera | devicedata.camera | Primary & secondary camera specdialcodes | edata.filters.dialcodes | SEARCH event List of dialcodes | Array[String] | |||
57 | edata_topn_identifier | edata.topn.identifier | SEARCH event topn results | Array[String] | |||||
58 | edata_visits_objid | edata.visits.objid | IMPRESSION event unique id for object visited | Array[String] | |||||
59 | edata_visits_objtype | edata.visits.objtype | IMPRESSION event type of object visited | Array[String] | |||||
60 | edata_visits_objver | edata.visits.objver | IMPRESSION event version of object visited | Array[String] | |||||
61 | edata_visits_index | edata.visits.index | IMPRESSION event index of object within list | Array[Integer] | |||||
62 | device_loc_state | devicedata.state | State location information for the device | String | |||||
63 | device_loc_state_code | devicedata.statecode | State ISO code information for the device | String | |||||
64 | device_loc_iso_state_code | devicedata.iso3166statecode | State ISO-3166 code information for the device | String | |||||
65 | device_loc_city | devicedata.city | City location information for the device | String | |||||
66 | device_ | cpuloc_country_code | devicedata. | cpuProcessor namecountrycode | Country ISO code information for the device | String | |||
67 | device_ | simsloc_country | devicedata. | simsNumber of sim cards | Integercountry | Country location information for the device | String | ||
68 | device_uaspec_agentos | devicedata.uaspec.agentUser agent of the browseros | Device OS name | String | |||||
69 | device_uaspec_vermake | devicedata.uaspec.verUser agent version of the browsermake | Device make and model | String | |||||
70 | device_uaspec_systemid | devicedata.uaspec.systemUser agent system identification of the browserid | Physical device id if available from OS | String | |||||
71 | device_uaspec_platformmem | devicedata.uaspec.platform | User agent client platform of the browser | Stringmem | Total memory in mb | Integer | |||
72 | device_uaspec_rawidisk | devicedata.uaspec.raw | Raw user agent of the browser | Stringidisk | Total interanl disk | Integer | |||
73 | device_first_accessedisk | devicedata.firstaccess | First access of the device | Long (Epoch)edisk | Total external disk | Integer | |||
74 | contentdevice_namescrn | contentdatadevicedata.name | Name of the content | Stringscrn | Screen size in inches | Integer | |||
75 | contentdevice_object_typecamera | contentdatadevicedata.objecttypeType of the contentcamera | Primary & secondary camera spec | String | |||||
76 | contentdevice_typecpu | contentdatadevicedata.contenttypeType of the resourcecpu | Processor name | String | |||||
77 | contentdevice_media_typesims | contentdatadevicedata.mediatypesims | Type of the media of the resource | StringNumber of sim cards | Integer | ||||
78 | contentdevice_uaspec_languageagent | contentdatadevicedata.uaspec.languageagent | List User agent of languages in the contentbrowser | Array[String] | |||||
79 | contentdevice_uaspec_mediumver | contentdatadevicedata.uaspec.mediumLanguage medium ver | User agent version of the boardbrowser | String | |||||
80 | contentdevice_uaspec_mimetypesystem | contentdatadevicedata.uaspec.mimetypeMimetype system | User agent system identification of the resource in the contentbrowser | String | |||||
81 | contentdevice_uaspec_frameworkplatform | contentdata.frameworkdevicedata.uaspec.platform | User agent client platform of the browser | String | |||||
82 | contentdevice_uaspec_boardraw | contentdatadevicedata.boardBoard of affiliationuaspec.raw | Raw user agent of the browser | String | |||||
83 | contentdevice_first_statusaccess | contentdatadevicedata.statusfirstaccess | Status First access of the content - Draft, Published etc.Stringdevice | Long (Epoch) | |||||
84 | content_versionname | contentdata.pkgversionname | Version Name of the content | DoubleString | |||||
85 | content_lastobject_submitted_ontype | contentdata.lastsubmittedonobjecttype | Last submitted date Type of the content | Long (Epoch)String | |||||
86 | content_last_published_ontype | contentdata.lastpublishedoncontenttype | Last submitted date Type of the contentLong (Epoch)resource | String | |||||
87 | content_ | lastmedia_ | updated_ontype | contentdata. | lastupdatedonLast updated datemediatype | Type of the media of the | contentLong (Epoch)resource | String | |
88 | usercontent_first_namelanguage | userdatacontentdata.firstnamelanguage | First name List of languages in the usercontent | Array[String] | |||||
89 | usercontent_last_namemedium | userdatacontentdata.lastnamemedium | Lastname Language medium of the userboard | Array[String] | |||||
90 | usercontent_grade_listmimetype | userdatacontentdata.gradelistmimetype | List of grades taught | Array[String]Mimetype of the resource in the content | String | ||||
91 | usercontent_language_listframework | userdata.languagelist | List of languages known | Array[String]contentdata.framework | String | ||||
92 | usercontent_subject_listboard | userdatacontentdata.subjectlistboard | List Board of subjects taughtaffiliation | Array[String] | |||||
93 | usercontent_namestatus | userdatacontentdata.namestatus | Username Status of the usercontent - Draft, Published etc. | String | |||||
94 | usercontent_typeversion | userdatacontentdata.typepkgversion | Type Version of userthe content | StringDouble | |||||
95 | usercontent_last_locsubmitted_stateon | userdatacontentdata.stateState info lastsubmittedon | Last submitted date of the userStringcontent | Long (Epoch) | |||||
96 | usercontent_last_locpublished_districton | userdatacontentdata.districtDistrict info lastpublishedon | Last submitted date of the userStringcontent | Long (Epoch) | |||||
97 | usercontent_last_ | locupdated_ | blockon | userdatacontentdata. | blockBlock infolastupdatedon | Last updated date of the | userStringcontent | Long (Epoch) | |
98 | dialcodeuser_grade_channellistdialcode | userdata.channel | Channel for which dialcode is generated | Stringgradelist | List of grades taught | Array[String] | |||
99 | dialcodeuser_language_batchcodelistdialcode | userdata.batchcode | Batch for which dialcode belongs to | Stringlanguagelist | List of languages known | Array[String] | |||
100 | dialcodeuser_subject_publisherlistdialcode | userdata.publishersubjectlist | Publisher List of the dialcodesubjects taught | Array[String] | |||||
101 | dialcodeuser_generated_ontype | dialcodeuserdata.generatedon | Dialcode generated on | Long (Epoch)type | Type of user | String | |||
102 | dialcodeuser_publishedloc_onstate | dialcodeuserdata.publishedon | Dialcode published on | Long (Epoch)state | State info of the user | String | |||
103 | dialcodeuser_loc_statusdistrictdialcode | userdata.statusdistrict | Status District info of the dialcodeuser | String | |||||
104 | dialcodeuser_objectloc_typeblock | dialcodeuserdata.objecttypeObject type - DialCode as a valueblock | Block info of the user | String |
Summary Events
105 | dialcode_channel | dialcodedata.channel | Channel for which dialcode is generated | String |
106 | dialcode_batchcode | dialcodedata.batchcode | Batch for which dialcode belongs to | String |
107 | dialcode_publisher | dialcodedata.publisher | Publisher of the dialcode | String |
108 | dialcode_generated_on | dialcodedata.generatedon | Dialcode generated on | Long (Epoch) |
109 | dialcode_published_on | dialcodedata.publishedon | Dialcode published on | Long (Epoch) |
110 | dialcode_status | dialcodedata.status | Status of the dialcode | String |
111 | dialcode_object_type | dialcodedata.objecttype | Object type - DialCode as a value | String |
Summary Events
Dimension in Druid | Field in Summary event | Description | Data Type | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1 | ets | ets | Event timestamp | Long | |||||||
2 | eid | eid | Event Id | String | |||||||
3 | ver | ver | Version | String | |||||||
4 | syncts | syncts | Sync timestamp | Long | |||||||
5 | uid | uid | User Id | String | |||||||
6 | context_date_range_from | context.date_range.from | Start Date for the summary | Long (Epoch) | |||||||
7 | context_date_range_to | context.date_range.to | End Date for the summary | Long (Epoch) | |||||||
8 | context_rollup_l1 | context.rollup.l1 | Context level1 rollup | String | |||||||
9 | context_rollup_l2 | context.rollup.l2 | Context level2 rollup | String | |||||||
10 | context_rollup_l3 | context.rollup.l3 | Context level3 rollup | String | |||||||
11 | context_rollup_l4 | context.rollup.l4 | Context level4 rollup | String | |||||||
12 | dimension_channel | dimensions.channel | Channel Id as dimension from raw telemetry | String | |||||||
13 | dimensions_did | dimensions.did | Device Id as dimension from raw telemetry | String | |||||||
14 | dimensions_pdata_id | dimensions.pdata.id | Producer Id as dimension from raw telemetry | String | |||||||
15 | dimensions_pdata_pid | dimensions.pdata.pid | Producer Process Id as dimension from raw telemetry | String | |||||||
16 | dimensions_pdata_ver | dimensions.pdata.ver | Producer Process Ver as dimension from raw telemetry | String | |||||||
17 | dimensions_sid | dimensions.sid | Session Id as dimension | String | |||||||
18 | dimensions_type | dimensions.type | Type of summary | String | |||||||
19 | dimensions_mode | dimensions.mode | Mode of action in the session | String | |||||||
20 | object_id | object.id | Content Id | String | |||||||
21 | object_type | object.type | Content Type | String | |||||||
22 | object_version | object.ver | Content version | String | |||||||
23 | object_rollup_l1 | object.rollup.l1 | Object level1 rollup | String | |||||||
24 | object_rollup_l2 | object.rollup.l2 | Object level2 rollup | String | |||||||
25 | object_rollup_l3 | object.rollup.l3 | Object level3 rollup | String | |||||||
26 | object_rollup_l4 | object.rollup.l4 | Object level4 rollup | String | |||||||
27 | tags | tags | Tags attached to a summary event | Array[String] | |||||||
28 | edata_time_spent | edata.eks.time_spent | Time spent in the session excluding idle time | Double | |||||||
29 | edata_time_difference | edata.eks.time_diff | Total time in a session including idle time | Double | |||||||
30 | edata_interaction_count | edata.eks.interact_events_count | Total count of interact events in a session | Long | |||||||
31 | edata_env_summary_env | edata.eks. | pageenv_summary.env | Env of pageHigh level env within the app (content, domain, resources, community) | Array[String] | ||||||
3832 | edata_pageenv_summary_visit_count | edata.eks.pageenv_summary.visit_count | Number Count of times each page was the environment has been visited | Array[Integer] | |||||||
3933 | edata_pageenv_summary_time_spent | edata.eks.pageenv_summary.time_spent | Time taken spent per pageenv | Array[Double] | |||||||
4034 | edata_itempage_responses_itemsummary_id | edata.eks.itempage_responsessummary.itemIdQuestion Id passed in the ASSESS eventid | Page id | Array[String] | |||||||
41 | edata_item_responses_time_spent | edata.eks.item_responses.timeSpent | Time spent in seconds from ASSESS event | Array[Double] | |||||||
4235 | edata_itempage_responsessummary_passtype | edata.eks.itempage_responsessummary.passPass response for a question from ASSESS eventtype | Type of page e.g. view/edit | Array[String] | |||||||
36 | edata_ | itempage_ | responsessummary_ | scoreenv | edata.eks. | itempage_ | responsessummary. | scoreScore from ASSESS eventenv | Env of page | Array[ | IntegerString] |
4437 | edata_itempage_responsessummary_maxvisit_scorecount | edata.eks.itempage_responsessummary.maxScoreMax Score from ASSESS eventvisit_count | Number of times each page was visited | Array[Integer] | |||||||
4538 | edata_itempage_summary_responsestime_timestampspent | edata.eks.itempage_responsessummary.time_stampTimestamp for each response from ASSESS eventspent | Time taken per page | Array[DateDouble] | |||||||
46 | device_loc_state | devicedata.state | State location information for the device | String | |||||||
47 | device_loc_state_code | devicedata.statecode | State ISO code information for the device | String | |||||||
48 | device_loc_city | devicedata.city | City location information for the device | String | |||||||
49 | device_loc_country_code | devicedata.countrycode | Country ISO code information for the device | String | |||||||
50 | device_loc_country | devicedata.country | Country location information for the device | String | |||||||
51 | device_os | devicedata.os | Device OS name | String | |||||||
52 | device_make | devicedata.make | Device make and model | String | |||||||
53 | device_id | devicedata.id | Physical device id if available from OS | String | |||||||
54 | device_mem | devicedata.mem | Total memory in mb | Integer | |||||||
55 | device_idisk | devicedata.idisk | Total interanl disk | Integer | |||||||
56 | device_edisk | devicedata.edisk | Total external disk | Integer | |||||||
57 | device_scrn | devicedata.scrn | Screen size in inches | Integer | |||||||
58 | device_camera | devicedata.camera | Primary & secondary camera spec | String | |||||||
59 | device_cpu | devicedata.cpu | Processor name | String | |||||||
60 | device_sims | devicedata.sims | Number of sim cards | Integer | |||||||
61 | device_uaspec_agent | devicedata.uaspec.agent | User agent of the browser | String | |||||||
62 | device_uaspec_ver | devicedata.uaspec.ver | User agent version of the browser | String | |||||||
63 | device_uaspec_system | devicedata.uaspec.system | User agent system identification of the browser | String | |||||||
64 | device_uaspec_platform | devicedata.uaspec.platform | User agent client platform of the browser | String | |||||||
65 | device_uaspec_raw | devicedata.uaspec.raw | Raw user agent of the browser | String | |||||||
66 | device_first_access | devicedata.firstaccess | First access of the device | Long (Epoch) | |||||||
67 | content_name | contentdata.name | Name of the content | String | |||||||
68 | content_object_type | contentdata.objecttype | Type of the content | String | |||||||
69 | content_type | contentdata.contenttype | Type of the resource | String | |||||||
70 | content_media_type | contentdata.mediatype | Type of media of the content | String | |||||||
71 | content_language | contentdata.language | List of languages | Array[String] | |||||||
72 | content_medium | contentdata.medium | Language medium of the board | String | |||||||
73 | content_mimetype | contentdata.mimetype | Mimetype of the content | String | 74 | content_framework | contentdata.framework | String | |||
75 | content_board | contentdata.board | Board of affiliation | String | |||||||
76 | content_status | contentdata.status | Status of the content - Draft, Published etc. | String | |||||||
77 | content_version | contentdata.pkgversion | Version of the content | Double | |||||||
78 | content_last_submitted_on | contentdata.lastsubmittedon | Last submitted date of the content | Long (Epoch) | |||||||
79 | content_last_published_on | contentdata.lastpublishedon | Last published date of the content | Long (Epoch) | |||||||
80 | content_last_updated_on | contentdata.lastupdatedon | Last updated date of the content | Long (Epoch) | |||||||
81 | user_first_name | userdata.firstname | First name of the user | String | |||||||
82 | user_last_name | userdata.lastname | Last name of the user | String | |||||||
83 | user_grade_list | userdata.gradelist | List of grades taught | Array[String] | |||||||
84 | user_language_list | userdata.languagelist | List of languages known | Array[String] | |||||||
85 | user_subject_list | userdata.subjectlist | List of subjects taught | Array[String] | |||||||
86 | user_name | userdata.name | User name of the user | String | |||||||
87 | user_type | userdata.type | Type of the user | String | |||||||
88 | user_loc_state | userdata.state | State info of the user | String | |||||||
89 | user_loc_district | userdata.district | District info of the user | String | |||||||
90 | user_loc_block | userdata.block | Block info of the user | String | |||||||
91 | dialcode_channel | dialcode.channel | Channel for which dialcode is generated | String | |||||||
92 | dialcode_batchcode | dialcode.batchcode | Batch for which dialcode belongs to | String | |||||||
93 | dialcode_publisher | dialcode.publisher | Publisher of the dialcode | String | |||||||
94 | dialcode_generated_on | dialcode.generatedon | Dialcode generated on | Long (Epoch) | |||||||
95 | dialcode_published_on | dialcode.publishedon | Dialcode published on | Long (Epoch) | |||||||
96 | dialcode_status | dialcode.status | Status of the dialcode | String | |||||||
97 | dialcode_object_type | dialcode.objecttype | Object type - DialCode as a value | String | |||||||
39 | edata_item_responses_item_id | edata.eks.item_responses.itemId | Question Id passed in the ASSESS event | Array[String] | |||||||
40 | edata_item_responses_time_spent | edata.eks.item_responses.timeSpent | Time spent in seconds from ASSESS event | Array[Double] | |||||||
41 | edata_item_responses_pass | edata.eks.item_responses.pass | Pass response for a question from ASSESS event | Array[String] | |||||||
42 | edata_item_responses_score | edata.eks.item_responses.score | Score from ASSESS event | Array[Integer] | |||||||
43 | edata_item_responses_max_score | edata.eks.item_responses.maxScore | Max Score from ASSESS event | Array[Integer] | |||||||
44 | edata_item_responses_timestamp | edata.eks.item_responses.time_stamp | Timestamp for each response from ASSESS event | Array[Long (Epoch)] | |||||||
45 | device_loc_state | devicedata.state | State location information for the device | String | |||||||
46 | device_loc_state_code | devicedata.statecode | State ISO code information for the device | String | |||||||
47 | device_loc_iso_state_code | devicedata.iso3166statecode | State ISO-3166 code information for the device | String | |||||||
48 | device_loc_city | devicedata.city | City location information for the device | String | |||||||
49 | device_loc_country_code | devicedata.countrycode | Country ISO code information for the device | String | |||||||
50 | device_loc_country | devicedata.country | Country location information for the device | String | |||||||
51 | device_os | devicedata.os | Device OS name | String | |||||||
52 | device_make | devicedata.make | Device make and model | String | |||||||
53 | device_id | devicedata.id | Physical device id if available from OS | String | |||||||
54 | device_mem | devicedata.mem | Total memory in mb | Integer | |||||||
55 | device_idisk | devicedata.idisk | Total interanl disk | Integer | |||||||
56 | device_edisk | devicedata.edisk | Total external disk | Integer | |||||||
57 | device_scrn | devicedata.scrn | Screen size in inches | Integer | |||||||
58 | device_camera | devicedata.camera | Primary & secondary camera spec | String | |||||||
59 | device_cpu | devicedata.cpu | Processor name | String | |||||||
60 | device_sims | devicedata.sims | Number of sim cards | Integer | |||||||
61 | device_uaspec_agent | devicedata.uaspec.agent | User agent of the browser | String | |||||||
62 | device_uaspec_ver | devicedata.uaspec.ver | User agent version of the browser | String | |||||||
63 | device_uaspec_system | devicedata.uaspec.system | User agent system identification of the browser | String | |||||||
64 | device_uaspec_platform | devicedata.uaspec.platform | User agent client platform of the browser | String | |||||||
65 | device_uaspec_raw | devicedata.uaspec.raw | Raw user agent of the browser | String | |||||||
66 | device_first_access | devicedata.firstaccess | First access of the device | Long (Epoch) | |||||||
67 | content_name | contentdata.name | Name of the content | String | |||||||
68 | content_object_type | contentdata.objecttype | Type of the content | String | |||||||
69 | content_type | contentdata.contenttype | Type of the resource | String | |||||||
70 | content_media_type | contentdata.mediatype | Type of media of the content | String | |||||||
71 | content_language | contentdata.language | List of languages | Array[String] | |||||||
72 | content_medium | contentdata.medium | Language medium of the board | String | |||||||
73 | content_mimetype | contentdata.mimetype | Mimetype of the content | String | |||||||
74 | content_framework | contentdata.framework | String | ||||||||
75 | content_board | contentdata.board | Board of affiliation | String | |||||||
76 | content_status | contentdata.status | Status of the content - Draft, Published etc. | String | |||||||
77 | content_version | contentdata.pkgversion | Version of the content | Double | |||||||
78 | content_last_submitted_on | contentdata.lastsubmittedon | Last submitted date of the content | Long (Epoch) | |||||||
79 | content_last_published_on | contentdata.lastpublishedon | Last published date of the content | Long (Epoch) | |||||||
80 | content_last_updated_on | contentdata.lastupdatedon | Last updated date of the content | Long (Epoch) | |||||||
81 | user_grade_list | userdata.gradelist | List of grades taught | Array[String] | |||||||
82 | user_language_list | userdata.languagelist | List of languages known | Array[String] | |||||||
83 | user_subject_list | userdata.subjectlist | List of subjects taught | Array[String] | |||||||
84 | user_type | userdata.type | Type of the user | String | |||||||
85 | user_loc_state | userdata.state | State info of the user | String | |||||||
86 | user_loc_district | userdata.district | District info of the user | String | |||||||
87 | user_loc_block | userdata.block | Block info of the user | String |
Aggregates
Granularity → DAY
Druid field name | Druid source field | Aggregate Type |
---|---|---|
total_interactions | interaction_count | SUM |
total_time_spent | time_spent | SUM |
total_sessions | mid | COUNT |
...
Report JSON Spec
JSON Schema
Code Block | ||
---|---|---|
| ||
[{ id: String, // Required. Report ID. label: String, // Required. Report Label (will be shown up as menu) title: String, // Optional. Report title. Defaults to report label description: String, // Optional. Report description. HTML text can be included as description dataSource: String, // Required. Location of the data source to show the report. Can be an expression. For ex: /<report_id>/{{channel}}/report.json charts: [{ // Optional datasets: [{ data: Array[Number], // Required if `dataExpr` is not provided. Array of Number. Data points to show in the chart dataExpr: String, // Required if `data` is not provided. Expression pointing to the data in dataSource. For ex: {{data.noOfDownloads}} label: String // Required. Label to display on the chart }], labels: Array[String], // Required if `labelsExpr` is not provided. Labels to show on the x-axis labelsExpr: String, // Required if `labels` is not provided. Expression pointing to the data in dataSource. For ex: {{data.Date}} chartType: String, // Optional. Defaults to line. Available types - line, bar, radar, pie, polarArea & doughnut colors: [""], // Optional. Color to show for each dataset. Defaults to ["#024F9D"]. options: { // Optional. options for display. Full set of options look at https://valor-software.com/ng2-charts/ responsive: Boolean, // Defaults to true ... }, legend: Boolean // Optional. Whether to show the legend below/above the chart. Defaults to true and position to top. }], table: { // Optional "columns": Array[String], // Required if `columnsExpr` is not provided. Columns to show. "values": Array[Array[String]], // Required if `valuesExpr` is not provided. Column data. "columnsExpr": String, // Required if `columns` is not provided. Expression pointing to the data in dataSource. For ex: {{keys}} "valuesExpr": String // Required if `values` is not provided. Expression pointing to the data in dataSource. For ex: {{tableData}} }, downloadUrl: String // Location to download the data as CSV }] |
...