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
String
context_date_range_to
context.date_range.to
End Date for the summary
String
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
String
edata_time_difference
edata.eks.time_diff
Total time in a session including idle time
String
edata_interaction_count
edata.eks.interact_events_count
Total count of interact events in a session
Long
edata_summary_env
edata.eks.env_summary.env
High level env within the app
(content, domain, resources, community)
String
edata_env_summary_count
edata.eks.env_summary.count
Count of times the environment has been visited
Integer
edata_env_summary_time_spent
edata.eks.env_summary.time_spent
Time spent per env
Double
edata_page_summary_id
edata.eks.page_summary.id
Page id
String
edata_page_summary_type
edata.eks.page_summary.type
Type of page e.g. view/edit
String
edata_page_summary_visit_count
edata.eks.page_summary.visit_count
Number of times each page was visited
String
edata_page_summary_time_spent
edata.eks.page_summary.time_spent
Time taken per page
Double
edata_item_responses_item_id
edata.eks.item_responses.itemId
Question Id passed in the ASSESS event
String
edata_item_responses_time_spent
edata.eks.item_responses.timeSpent
Time spent in seconds from ASSESS event
String
edata_item_responses_pass
edata.eks.item_responses.pass
Pass response for a question from ASSESS event
String
edata_item_responses_score
edata.eks.item_responses.score
Score from ASSESS event
Array[Integer]
edata_item_responses_max_score
edata.eks.item_responses.maxScore
Max Score from ASSESS event
Array[Integer]
edata_item_responses_timestamp
edata.eks.item_responses.time_stamp
Timestamp for each response from ASSESS event
String
device_loc_state
ldata.state
State location information for the device
String
device_loc_state_code
ldata.state_code
State ISO code information for the device
String
device_loc_city
ldata.city
City location information for the device
String
device_loc_country_code
ldata.country_code
Country ISO code information for the device
String
device_loc_country
ldata.country
Country location information for the device
String
Dimension in Druid | Field in Telemetry | Description | Data Type | |||
---|---|---|---|---|---|---|
1 | ets | ets | Event timestamp | Long | ||
2 | eid | eid | Event Id | String | ||
23 | syncts | syncts | Sync Timestamp | Long | 3||
4 | @timstamp | @timstamp | Sync Timestamp in String | String | ||
5 | actor_id | actor.id | Actor Id of the event | String | ||
46 | actor_type | actor.type | Type of the actor | String | ||
57 | context_channel | context.channel | Channel Id | String | ||
68 | context_pdata_id | context.pdata.id | Producer Id | String | ||
79 | context_pdata_pid | context.pdata.pid | Producer Process Id | String | ||
810 | context_pdata_ver | context.pdata.ver | Producer version number | String | ||
911 | context_env | context.env | Context Environment | String | ||
1012 | context_sid | context.sid | Session Id | String | ||
1113 | context_did | context.did | Device Id | String | ||
1214 | context_cdata_type | context.cdata.type | Correlation Data Type | Array[String] | ||
1315 | context_cdata_id | context.cdata.id | Correlation Data Id | Array[String] | ||
16 | objectcontext_rollup_ | idl1 | objectcontext.rollup. | idContent Idl1 | Context level 1 rollup | String |
17 | objectcontext_rollup_ | typel2 | objectcontext.rollup. | typeContent Typel2 | Context level 2 rollup | String |
18 | objectcontext_rollup_ | versionl3 | objectcontext.rollup. | verContent Versionl3 | Context level 3 rollup | String |
17 | tags | tags | Tags | Array[String] | ||
18 | edata_type | edata.type | Event type | String | ||
19 | edata_subtype | edata.subtype | Event subtype | String | ||
20 | edata_mode | edata.mode | START event Mode of start | String | ||
21 | edata_pageid | edata.pageid | Unique pageid | String | ||
22 | edata_uri | edata.uri | IMPRESSION event Relative URI of the content | String | ||
23 | edata_id | edata.id | Event data Id | String | ||
24 | edata_duration | edata.duration | Duration of the event | String | ||
25 | edata_index | edata.index | ASSESS event Index of the question within a content | String | ||
26 | edata_pass | edata.pass | ASSESS event Field to identify pass or fail for assessments | String | ||
27 | edata_score | edata.score | ASSESS event Assessment score | Double | ||
28 | edata_resvalues | edata.resvalues | ASSESS event Assessment results | Array[Object] | ||
29 | edata_item_id | edata.item.id | ASSESS event Assessment item id | String | ||
30 | edata_item_title | edata.item.title | ASSESS event Assessment item title | String | ||
31 | edata_item_maxscore | edata.item.maxscore | ASSESS event Assessment item max score | Double | ||
32 | edata_target_id | edata.target.id | ASSESS event Assessment item target id | String | ||
33 | edata_target_type | edata.target.type | ASSESS event Assessment item target type | String | ||
34 | edata_rating | edata.rating | FEEDBACK event Ratings | String | ||
35 | edata_comments | edata.comments | FEEDBACK event Comments | String | ||
36 | edata_dir | edata.dir | SHARE event direction | String | ||
37 | edata_items_id | edata.items.id | SHARE event shared item ids | String | ||
38 | edata_items_type | edata.items.type | SHARE item types | String | ||
39 | edata_items_origin_id | edata.items.origin.id | SHARE event source id | String | ||
40 | edata_items_origin_type | edata.items.origin.type | SHARE event source type | String | ||
41 | edata_items_to_id | edata.items.to.id | SHARE event destination id | String | ||
42 | edata_items_to_type | edata.items.to.type | SHARE event destination type | String | ||
43 | edata_state | edata.state | AUDIT event current state | String | ||
44 | edata_prevstate | edata.prevstate | AUDIT event previous state | String | ||
45 | edata_size | edata.size | SEARCH event result size | Integer | ||
46 | edata_filters_dialcodes | edata.filters.dialcodes | SEARCH event List of dialcodes | Array[String] | ||
47 | edata_topn | edata.topn | SEARCH event topn results | Array[Object] | ||
48 | edata_visits | edata.visits | IMPRESSION event object visit details | Array[Object] | ||
49 | device_loc_state | ldata.state | State location information for the device | String | ||
50 | device_loc_state_code | ldata.state_code | State ISO code information for the device | String | ||
51 | device_loc_city | ldata.city | City location information for the device | String | ||
52 | device_loc_country_code | ldata.country_code | Country ISO code information for the device | String | ||
53 | device_loc_country | ldata.country | Country location information for the device | String | ||
54 | content_name | name | Name of the content | String | ||
55 | content_object_type | objectType | Type of the content | String | ||
56 | content_type | contentType | Type of the resource | String | ||
57 | content_media_type | mediaType | Type of the media of the resource | String | ||
58 | content_language | language | List of languages in the content | Array[String] | ||
59 | content_medium | meidum | Language medium of the board | String | ||
60 | content_mimetype | mimeType | Mimetype of the resource in the content | String | 61 | content_framework | framework | String |
62 | content_board | board | Board of affiliation | String | ||
63 | content_status | status | Status of the content - Draft, Published etc. | String | ||
64 | content_mimetypes_count | mimeTypesCount | Count grouped by mimetypes | JSON Object | ||
65 | content_types_count | contentTypesCount | Counts grouped by each content type | JSON Object | ||
66 | content_version | versionKey | Version of the content | Double | ||
67 | content_last_submitted_on | lastSubmittedOn | Last submitted date of the content | String | ||
68 | content_last_published_on | lastPublishedOn | Last submitted date of the content | String | ||
69 | device_first_access | first_access | First access of the device | String | ||
70 | device_spec | device_spec | Specification of the device | Map | ||
71 | device_ua_spec | ua_spec | User agent spec of the browser | Map | ||
72 | user_first_name | firstname | First name of the user | String | ||
73 | user_last_name | lastname | Lastname of the user | String | ||
74 | user_grade_list | grade_list | List of grades taught | Array[String] | ||
75 | user_language_list | language_list | List of languages known | Array[String] | ||
76 | user_subject_list | subject_list | List of subjects taught | Array[String] | ||
77 | user_name | username | Username of the user | String | ||
78 | user_type | userType | Type of user | String | ||
79 | user_loc_state | user_state | State info of the user | String | ||
80 | user_loc_district | user_district | District info of the user | String | ||
81 | user_loc_block | user_block | Block info of the user | String |
Summary Events
19 | context_rollup_l4 | context.rollup.l4 | Context level 4 rollup | 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 | Content level 1 rollup | String |
24 | object_rollup_l2 | object.rollup.l2 | Content level 2 rollup | String |
25 | object_rollup_l3 | object.rollup.l3 | Content level 3 rollup | String |
26 | object_rollup_l4 | object.rollup.l4 | Content level 4 rollup | String |
27 | tags | tags | Tags | Array[String] |
28 | edata_type | edata.type | Event type | String |
29 | edata_subtype | edata.subtype | Event subtype | String |
30 | edata_mode | edata.mode | START event Mode of start | String |
31 | edata_pageid | edata.pageid | Unique pageid | String |
32 | edata_uri | edata.uri | IMPRESSION event Relative URI of the content | String |
33 | edata_id | edata.id | Event data Id | String |
34 | edata_duration | edata.duration | Duration of the event | Double |
35 | edata_index | edata.index | ASSESS event Index of the question within a content | Integer |
36 | edata_pass | edata.pass | ASSESS event Field to identify pass or fail for assessments | String |
37 | edata_score | edata.score | ASSESS event Assessment score | Double |
38 | edata_resvalues | edata.resvalues | ASSESS event Assessment results | Array[Object] |
39 | edata_item_id | edata.item.id | ASSESS event Assessment item id | String |
40 | edata_item_title | edata.item.title | ASSESS event Assessment item title | String |
41 | edata_item_maxscore | edata.item.maxscore | ASSESS event Assessment item max score | Double |
42 | edata_target_id | edata.target.id | ASSESS event Assessment item target id | String |
43 | edata_target_type | edata.target.type | ASSESS event Assessment item target type | String |
44 | edata_rating | edata.rating | FEEDBACK event Ratings | Integer |
45 | edata_comments | edata.comments | FEEDBACK event Comments | String |
46 | edata_dir | edata.dir | SHARE event direction | String |
47 | edata_items_id | edata.items.id | SHARE event shared item ids | Array[String] |
48 | edata_items_type | edata.items.type | SHARE item types | Array[String] |
49 | edata_items_origin_id | edata.items.origin.id | SHARE event source id | Array[String] |
50 | edata_items_origin_type | edata.items.origin.type | SHARE event source type | Array[String] |
51 | edata_items_to_id | edata.items.to.id | SHARE event destination id | Array[String] |
52 | edata_items_to_type | edata.items.to.type | SHARE event destination type | Array[String] |
53 | edata_state | edata.state | AUDIT event current state | String |
54 | edata_prevstate | edata.prevstate | AUDIT event previous state | String |
55 | edata_size | edata.size | SEARCH event result size | Integer |
56 | edata_filters_dialcodes | 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_loc_country_code | devicedata.countrycode | Country ISO code information for the device | String |
67 | device_loc_country | devicedata.country | Country location information for the device | String |
68 | device_os | devicedata.os | Device OS name | String |
69 | device_make | devicedata.make | Device make and model | String |
70 | device_id | devicedata.id | Physical device id if available from OS | String |
71 | device_mem | devicedata.mem | Total memory in mb | Integer |
72 | device_idisk | devicedata.idisk | Total interanl disk | Integer |
73 | device_edisk | devicedata.edisk | Total external disk | Integer |
74 | device_scrn | devicedata.scrn | Screen size in inches | Integer |
75 | device_camera | devicedata.camera | Primary & secondary camera spec | String |
76 | device_cpu | devicedata.cpu | Processor name | String |
77 | device_sims | devicedata.sims | Number of sim cards | Integer |
78 | device_uaspec_agent | devicedata.uaspec.agent | User agent of the browser | String |
79 | device_uaspec_ver | devicedata.uaspec.ver | User agent version of the browser | String |
80 | device_uaspec_system | devicedata.uaspec.system | User agent system identification of the browser | String |
81 | device_uaspec_platform | devicedata.uaspec.platform | User agent client platform of the browser | String |
82 | device_uaspec_raw | devicedata.uaspec.raw | Raw user agent of the browser | String |
83 | device_first_access | devicedata.firstaccess | First access of the device | Long (Epoch) |
84 | content_name | contentdata.name | Name of the content | String |
85 | content_object_type | contentdata.objecttype | Type of the content | String |
86 | content_type | contentdata.contenttype | Type of the resource | String |
87 | content_media_type | contentdata.mediatype | Type of the media of the resource | String |
88 | content_language | contentdata.language | List of languages in the content | Array[String] |
89 | content_medium | contentdata.medium | Language medium of the board | Array[String] |
90 | content_mimetype | contentdata.mimetype | Mimetype of the resource in the content | String |
91 | content_framework | contentdata.framework | String | |
92 | content_board | contentdata.board | Board of affiliation | String |
93 | content_status | contentdata.status | Status of the content - Draft, Published etc. | String |
94 | content_version | contentdata.pkgversion | Version of the content | Double |
95 | content_last_submitted_on | contentdata.lastsubmittedon | Last submitted date of the content | Long (Epoch) |
96 | content_last_published_on | contentdata.lastpublishedon | Last submitted date of the content | Long (Epoch) |
97 | content_last_updated_on | contentdata.lastupdatedon | Last updated date of the content | Long (Epoch) |
98 | user_grade_list | userdata.gradelist | List of grades taught | Array[String] |
99 | user_language_list | userdata.languagelist | List of languages known | Array[String] |
100 | user_subject_list | userdata.subjectlist | List of subjects taught | Array[String] |
101 | user_type | userdata.type | Type of user | String |
102 | user_loc_state | userdata.state | State info of the user | String |
103 | user_loc_district | userdata.district | District info of the user | String |
104 | user_loc_block | userdata.block | Block info of the user | String |
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.env_summary.env | High level env within the app (content, domain, resources, community) | Array[String] | ||||||
32 | edata_env_summary_count | edata.eks.env_summary.count | Count of times the environment has been visited | Array[Integer] | ||||||
33 | edata_env_summary_time_spent | edata.eks.env_summary.time_spent | Time spent per env | Array[Double] | ||||||
34 | edata_page_summary_id | edata.eks.page_summary.id | Page id | Array[String] | ||||||
35 | edata_page_summary_type | edata.eks.page_summary.type | Type of page e.g. view/edit | Array[String] | ||||||
36 | edata_page_summary_env | edata.eks.page_summary.env | Env of page | Array[String] | ||||||
37 | edata_page_summary_visit_count | edata.eks.page_summary.visit_count | Number of times each page was visited | Array[Integer] | ||||||
38 | edata_page_summary_time_spent | edata.eks.page_summary.time_spent | Time taken per page | Array[Double] | ||||||
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] | ||||||
6982 | user_language_listlanguage_list | userdata.languagelist | List of languages known | Array[String] | ||||||
7083 | user_subject_listsubject_list | userdata.subjectlist | List of subjects taught | Array[String] | ||||||
7184 | user_name | username | User name of the user | String | 72 | user_type | usertypetype | userdata.type | Type of the user | String |
7385 | user_loc_stateuser_ | userdata.state | State info of the user | String | ||||||
7486 | user_loc_districtuser_ | userdata.district | District info of the user | String | ||||||
7587 | user_loc_blockuser_ | 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 }] |
...