diff --git a/tutoraspects/asset_command_helpers.py b/tutoraspects/asset_command_helpers.py
index 2cf1f8b9c..491e170e4 100644
--- a/tutoraspects/asset_command_helpers.py
+++ b/tutoraspects/asset_command_helpers.py
@@ -214,8 +214,10 @@ def process(self, content: dict, existing: dict):
if not metric.get("verbose_name"):
metric["verbose_name"] = metric["metric_name"].replace("_", " ").title()
- content["sql"] = format_string(
- content["sql"], mode=Mode(dialect_name="clickhouse")
+ content["sql"] = (
+ format_string(content["sql"], mode=Mode(dialect_name="clickhouse"))
+ if "filter indent" not in content["sql"]
+ else content["sql"]
)
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_b2fff8.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_b2fff8.yaml
index 9829dfb49..64fd02092 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_b2fff8.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_b2fff8.yaml
@@ -29,6 +29,10 @@ params:
groupby:
- course_name
- org
+ - expressionType: SQL
+ label: More details
+ sqlExpression: |-
+ {% raw %}{{ get_filtered_dashboard_link('course-dashboard', 'course_name', 'IfS-Rd0ZS') }}{% endraw %}
metrics:
- enrollees
- active_count
@@ -38,7 +42,6 @@ params:
percent_metrics: []
query_mode: aggregate
row_limit: 50000
- server_page_length: 10
show_cell_bars: false
table_timestamp_format: smart_date
temporal_columns_lookup: {}
@@ -46,7 +49,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 221
+ id: 651
type: table
force: false
form_data:
@@ -71,13 +74,17 @@ query_context:
truncateLongCells: true
conditional_formatting: []
dashboards:
- - 3141
- datasource: 221__table
+ - 355
+ datasource: 651__table
extra_form_data: {}
force: false
groupby:
- course_name
- org
+ - expressionType: SQL
+ label: More details
+ sqlExpression: |-
+ {% raw %}{{ get_filtered_dashboard_link('course-dashboard', 'course_name', 'IfS-Rd0ZS') }}{% endraw %}
metrics:
- enrollees
- active_count
@@ -89,9 +96,8 @@ query_context:
result_format: json
result_type: full
row_limit: 50000
- server_page_length: 10
show_cell_bars: false
- slice_id: 1181
+ slice_id: 1298
table_timestamp_format: smart_date
temporal_columns_lookup: {}
time_grain_sqla: P1M
@@ -102,6 +108,10 @@ query_context:
columns:
- course_name
- org
+ - expressionType: SQL
+ label: More details
+ sqlExpression: |-
+ {% raw %}{{ get_filtered_dashboard_link('course-dashboard', 'course_name', 'IfS-Rd0ZS') }}{% endraw %}
custom_form_data: {}
custom_params: {}
extras:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_ccdd7d.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_ccdd7d.yaml
index 98d55008d..7cb702cf5 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_ccdd7d.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Info_ccdd7d.yaml
@@ -29,6 +29,10 @@ params:
groupby:
- course_run
- course_name
+ - expressionType: SQL
+ label: More details
+ sqlExpression: |
+ {% raw %}{{ get_filtered_dashboard_link('course-dashboard', 'course_run', 'w863AfFgi') }}{% endraw %}
metrics:
- active_count
- tag_list
@@ -38,7 +42,6 @@ params:
percent_metrics: []
query_mode: aggregate
row_limit: 50000
- server_page_length: 10
show_cell_bars: false
table_timestamp_format: smart_date
temporal_columns_lookup: {}
@@ -46,7 +49,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 221
+ id: 651
type: table
force: false
form_data:
@@ -71,13 +74,17 @@ query_context:
truncateLongCells: true
conditional_formatting: []
dashboards:
- - 3141
- datasource: 221__table
+ - 355
+ datasource: 651__table
extra_form_data: {}
force: false
groupby:
- course_run
- course_name
+ - expressionType: SQL
+ label: More details
+ sqlExpression: |
+ {% raw %}{{ get_filtered_dashboard_link('course-dashboard', 'course_run', 'w863AfFgi') }}{% endraw %}
metrics:
- active_count
- tag_list
@@ -89,9 +96,8 @@ query_context:
result_format: json
result_type: full
row_limit: 50000
- server_page_length: 10
show_cell_bars: false
- slice_id: 1381
+ slice_id: 1286
table_timestamp_format: smart_date
temporal_columns_lookup: {}
time_grain_sqla: P1M
@@ -102,6 +108,10 @@ query_context:
columns:
- course_run
- course_name
+ - expressionType: SQL
+ label: More details
+ sqlExpression: |
+ {% raw %}{{ get_filtered_dashboard_link('course-dashboard', 'course_run', 'w863AfFgi') }}{% endraw %}
custom_form_data: {}
custom_params: {}
extras:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Information_fa249d.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Information_fa249d.yaml
index 1da63f21a..2203351a0 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Information_fa249d.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Course_Information_fa249d.yaml
@@ -2,7 +2,7 @@ _file_name: Course_Information_fa249d.yaml
cache_timeout: null
certification_details: null
certified_by: null
-dataset_uuid: 633a1d4e-cd40-482f-a5dc-d5901c2181c2
+dataset_uuid: f25fdc4e-ce79-4f4c-9fc6-3dfe91690493
description: null
params:
adhoc_filters:
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: enrolled_at
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
Avg Course Grade:
@@ -22,14 +23,9 @@ params:
d3SmallNumberFormat: ~g
conditional_formatting:
- colorScheme: '#ACE1C4'
- column: graded_learners
- operator: '>'
+ column: active_within
+ operator: "\u2265"
targetValue: 0
- - colorScheme: '#FDE380'
- column: avg_course_grade
- operator: "\u2264 x \u2264"
- targetValueLeft: '50'
- targetValueRight: '70'
- colorScheme: '#EFA1AA'
column: avg_course_grade
operator: <
@@ -58,6 +54,7 @@ params:
- course_name
- course_run
metrics:
+ - active_within
- avg_course_grade
- median_course_grade
order_by_cols: []
@@ -74,7 +71,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 54
+ id: 38
type: table
force: false
form_data:
@@ -95,14 +92,9 @@ query_context:
d3SmallNumberFormat: ~g
conditional_formatting:
- colorScheme: '#ACE1C4'
- column: graded_learners
- operator: '>'
+ column: active_within
+ operator: "\u2265"
targetValue: 0
- - colorScheme: '#FDE380'
- column: avg_course_grade
- operator: "\u2264 x \u2264"
- targetValueLeft: '50'
- targetValueRight: '70'
- colorScheme: '#EFA1AA'
column: avg_course_grade
operator: <
@@ -125,8 +117,8 @@ query_context:
operator: <
targetValue: 50
dashboards:
- - 28
- datasource: 54__table
+ - 17
+ datasource: 38__table
extra_form_data: {}
force: false
groupby:
@@ -135,6 +127,7 @@ query_context:
- course_name
- course_run
metrics:
+ - active_within
- avg_course_grade
- median_course_grade
order_by_cols: []
@@ -146,7 +139,7 @@ query_context:
row_limit: 1000
server_page_length: 10
show_cell_bars: true
- slice_id: 5
+ slice_id: 49
table_timestamp_format: smart_date
temporal_columns_lookup:
enrolled_at: true
@@ -171,11 +164,12 @@ query_context:
op: TEMPORAL_RANGE
val: No filter
metrics:
+ - active_within
- avg_course_grade
- median_course_grade
order_desc: true
orderby:
- - - avg_course_grade
+ - - active_within
- false
post_processing: []
row_limit: 1000
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_7eaf5b.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_7eaf5b.yaml
index 10a5b8dcb..012fd94d1 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_7eaf5b.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_7eaf5b.yaml
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: emission_time
aggregateFunction: Sum
+ annotation_layers: []
colOrder: key_a_to_z
colSubTotals: false
conditional_formatting: []
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_8230a3.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_8230a3.yaml
index 97ab78eb9..11e2b3e39 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_8230a3.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Enrollment_Counts_8230a3.yaml
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: emission_time
aggregateFunction: Sum
+ annotation_layers: []
colOrder: key_a_to_z
colSubTotals: false
conditional_formatting: []
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_visit_date_6c2b10.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_Visit_Date_6c2b10.yaml
similarity index 90%
rename from tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_visit_date_6c2b10.yaml
rename to tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_Visit_Date_6c2b10.yaml
index 234fad0aa..53d04bf83 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_visit_date_6c2b10.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_Visit_Date_6c2b10.yaml
@@ -8,10 +8,7 @@ params:
adhoc_filters: []
annotation_layers: []
color_scheme: supersetColors
- comparison_type: values
extra_form_data: {}
- forecastInterval: 0.8
- forecastPeriods: 10
groupby: []
legendOrientation: top
legendType: scroll
@@ -41,23 +38,18 @@ params:
optionName: metric_orthejcnotd_6ealxq45fqk
sqlExpression: null
only_total: true
- order_desc: true
orientation: vertical
rich_tooltip: true
row_limit: 10000
show_empty_columns: true
show_legend: true
sort_series_type: sum
- time_grain_sqla: P1D
tooltipTimeFormat: smart_date
truncateXAxis: true
truncate_metric: true
viz_type: echarts_timeseries_bar
xAxisLabelRotation: 45
x_axis: last_visited
- x_axis_sort_asc: true
- x_axis_sort_series: name
- x_axis_sort_series_ascending: true
x_axis_time_format: '%Y-%m-%d'
x_axis_title: Date Visited
x_axis_title_margin: 100
@@ -69,21 +61,18 @@ params:
y_axis_title_position: Left
query_context:
datasource:
- id: 94
+ id: 33
type: table
force: false
form_data:
adhoc_filters: []
annotation_layers: []
color_scheme: supersetColors
- comparison_type: values
dashboards:
- - 30
- datasource: 94__table
+ - 364
+ datasource: 33__table
extra_form_data: {}
force: false
- forecastInterval: 0.8
- forecastPeriods: 10
groupby: []
legendOrientation: top
legendType: scroll
@@ -113,7 +102,6 @@ query_context:
optionName: metric_orthejcnotd_6ealxq45fqk
sqlExpression: null
only_total: true
- order_desc: true
orientation: vertical
result_format: json
result_type: full
@@ -121,18 +109,14 @@ query_context:
row_limit: 10000
show_empty_columns: true
show_legend: true
- slice_id: 171
+ slice_id: 52
sort_series_type: sum
- time_grain_sqla: P1D
tooltipTimeFormat: smart_date
truncateXAxis: true
truncate_metric: true
viz_type: echarts_timeseries_bar
xAxisLabelRotation: 45
x_axis: last_visited
- x_axis_sort_asc: true
- x_axis_sort_series: name
- x_axis_sort_series_ascending: true
x_axis_time_format: '%Y-%m-%d'
x_axis_title: Date Visited
x_axis_title_margin: 100
@@ -150,12 +134,10 @@ query_context:
expressionType: SQL
label: last_visited
sqlExpression: last_visited
- timeGrain: P1D
custom_form_data: {}
custom_params: {}
extras:
having: ''
- time_grain_sqla: P1D
where: ''
filters: []
metrics:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b0e170.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b0e170.yaml
index 5b7ae82bb..13ebbdd03 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b0e170.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b0e170.yaml
@@ -22,6 +22,7 @@ params:
subject: emission_time
all_columns:
- success
+ annotation_layers: []
color_pn: true
column_config:
avg_course_grade:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b518f3.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b518f3.yaml
index cdb62bff7..9a5815f9e 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b518f3.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b518f3.yaml
@@ -12,6 +12,7 @@ params:
adhoc_filters: []
all_columns:
- success
+ annotation_layers: []
color_pn: true
column_config:
avg_course_grade:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Summary_6da509.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Summary_6da509.yaml
index 49dc028cc..40cc393ce 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Summary_6da509.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Summary_6da509.yaml
@@ -12,8 +12,11 @@ params:
operator: TEMPORAL_RANGE
subject: emission_time
all_columns: []
- annotation_layers: []
color_pn: true
+ column_config:
+ Course Grade %:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
conditional_formatting:
- colorScheme: '#ACE1C4'
column: course_grade
@@ -61,7 +64,7 @@ params:
sqlExpression: grade_bucket
- expressionType: SQL
label: Course Grade %
- sqlExpression: ROUND(course_grade*100, 2)
+ sqlExpression: ROUND(course_grade, 2)
order_by_cols: []
order_desc: true
percent_metrics: []
@@ -79,7 +82,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 992
+ id: 12
type: table
force: false
form_data:
@@ -91,6 +94,10 @@ query_context:
subject: emission_time
all_columns: []
color_pn: true
+ column_config:
+ Course Grade %:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
conditional_formatting:
- colorScheme: '#ACE1C4'
column: course_grade
@@ -105,7 +112,9 @@ query_context:
column: course_grade
operator: <
targetValue: 0.5
- datasource: 992__table
+ dashboards:
+ - 18
+ datasource: 12__table
extra_form_data: {}
force: false
groupby:
@@ -138,7 +147,9 @@ query_context:
expressionType: SQL
label: Grade Range
sqlExpression: grade_bucket
- - course_grade
+ - expressionType: SQL
+ label: Course Grade %
+ sqlExpression: ROUND(course_grade, 2)
order_by_cols: []
order_desc: true
percent_metrics: []
@@ -150,7 +161,7 @@ query_context:
server_pagination: true
show_cell_bars: true
show_totals: true
- slice_id: 4364
+ slice_id: 32
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -194,7 +205,9 @@ query_context:
expressionType: SQL
label: Grade Range
sqlExpression: grade_bucket
- - course_grade
+ - expressionType: SQL
+ label: Course Grade %
+ sqlExpression: ROUND(course_grade, 2)
custom_form_data: {}
custom_params: {}
extras:
@@ -249,7 +262,9 @@ query_context:
expressionType: SQL
label: Grade Range
sqlExpression: grade_bucket
- - course_grade
+ - expressionType: SQL
+ label: Course Grade %
+ sqlExpression: ROUND(course_grade, 2)
custom_form_data: {}
custom_params: {}
extras:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learners_447a19.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learners_447a19.yaml
index 8c13dd874..763d51075 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learners_447a19.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learners_447a19.yaml
@@ -7,6 +7,7 @@ description: null
params:
adhoc_filters: []
all_columns: []
+ annotation_layers: []
color_pn: true
extra_form_data: {}
groupby:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_2985a9.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_2985a9.yaml
similarity index 91%
rename from tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_2985a9.yaml
rename to tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_2985a9.yaml
index 553cd3d3b..85805f4b9 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_2985a9.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_2985a9.yaml
@@ -1,9 +1,11 @@
-_file_name: Watched_Video_Segments_2985a9.yaml
+_file_name: Number_of_Views_across_Video_Duration_2985a9.yaml
cache_timeout: null
certification_details: null
certified_by: null
dataset_uuid: c2c391b3-3403-4f05-bc0b-3de53bd366ec
-description: null
+description: To view the number of views across the duration of a single video, click
+ the name of the video in the Video Name With Location column of the Video Engagement
+ table above.
params:
adhoc_filters:
- clause: WHERE
@@ -60,7 +62,7 @@ params:
zoomable: true
query_context:
datasource:
- id: 5
+ id: 27
type: table
force: false
form_data:
@@ -79,9 +81,9 @@ query_context:
color_scheme: supersetColors
comparison_type: values
dashboards:
- - 28
- - 29
- datasource: 5__table
+ - 17
+ - 18
+ datasource: 27__table
extra_form_data: {}
force: false
forecastInterval: 0.8
@@ -101,7 +103,7 @@ query_context:
row_limit: 10000
show_empty_columns: true
show_legend: true
- slice_id: 100
+ slice_id: 9
sort_series_type: sum
stack: Stack
time_grain_sqla: P1M
@@ -171,7 +173,7 @@ query_context:
url_params: {}
result_format: json
result_type: full
-slice_name: Watched Video Segments
+slice_name: Number of Views across Video Duration
uuid: 2985a9db-c338-4008-af52-2930b81ee2e5
version: 1.0.0
viz_type: echarts_timeseries_bar
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_a7947b.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml
similarity index 91%
rename from tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_a7947b.yaml
rename to tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml
index 41f680a33..0f6708886 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_a7947b.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml
@@ -1,9 +1,11 @@
-_file_name: Watched_Video_Segments_a7947b.yaml
+_file_name: Number_of_Views_across_Video_Duration_a7947b.yaml
cache_timeout: null
certification_details: null
certified_by: null
dataset_uuid: c2f0e842-738d-41a0-9ea6-51e32b7fab82
-description: null
+description: To view the number of views across the duration of a single video, click
+ the name of the video in the Video Name With Location column of the Video Engagement
+ table above.
params:
adhoc_filters:
- clause: WHERE
@@ -54,7 +56,7 @@ params:
y_axis_title_position: Left
query_context:
datasource:
- id: 107
+ id: 18
type: table
force: false
form_data:
@@ -68,8 +70,8 @@ query_context:
color_scheme: supersetColors
comparison_type: values
dashboards:
- - 30
- datasource: 107__table
+ - 19
+ datasource: 18__table
extra_form_data: {}
force: false
forecastInterval: 0.8
@@ -89,7 +91,7 @@ query_context:
row_limit: 10000
show_empty_columns: true
show_legend: true
- slice_id: 190
+ slice_id: 30
sort_series_type: sum
time_grain_sqla: P1D
tooltipTimeFormat: smart_date
@@ -158,7 +160,7 @@ query_context:
url_params: {}
result_format: json
result_type: full
-slice_name: Watched Video Segments
+slice_name: Number of Views across Video Duration
uuid: a7947bdb-65a2-49ed-815e-850423bfeacc
version: 1.0.0
viz_type: echarts_timeseries_bar
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Section_834ec7.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Section_834ec7.yaml
index 4fc65b000..c3af59ce8 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Section_834ec7.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Section_834ec7.yaml
@@ -18,6 +18,7 @@ params:
sqlExpression: null
subject: content_level
all_columns: []
+ annotation_layers: []
color_pn: true
conditional_formatting:
- colorScheme: '#ACE1C4'
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Subsection_18f857.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Subsection_18f857.yaml
index 4bc23f827..d6221a968 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Subsection_18f857.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Page_Engagement_per_Subsection_18f857.yaml
@@ -28,6 +28,7 @@ params:
sqlExpression: null
subject: content_level
all_columns: []
+ annotation_layers: []
color_pn: true
conditional_formatting:
- colorScheme: '#ACE1C4'
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Partial_and_Full_Video_Views_54a155.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Partial_and_Full_Video_Views_54a155.yaml
index 452c039c7..89d7106ed 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Partial_and_Full_Video_Views_54a155.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Partial_and_Full_Video_Views_54a155.yaml
@@ -19,7 +19,9 @@ params:
targetValue: 0
extra_form_data: {}
groupby:
- - video_name_with_location
+ - expressionType: SQL
+ label: Video Link
+ sqlExpression: video_link
metrics:
- full_views
- partial_views
@@ -36,7 +38,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 23
+ id: 33
type: table
force: false
form_data:
@@ -53,12 +55,14 @@ query_context:
operator: '>'
targetValue: 0
dashboards:
- - 29
- datasource: 23__table
+ - 18
+ datasource: 33__table
extra_form_data: {}
force: false
groupby:
- - video_name_with_location
+ - expressionType: SQL
+ label: Video Link
+ sqlExpression: video_link
metrics:
- full_views
- partial_views
@@ -71,7 +75,7 @@ query_context:
row_limit: 10000
server_page_length: 10
show_cell_bars: true
- slice_id: 136
+ slice_id: 13
table_timestamp_format: smart_date
temporal_columns_lookup: {}
time_grain_sqla: P1M
@@ -80,7 +84,9 @@ query_context:
- annotation_layers: []
applied_time_extras: {}
columns:
- - video_name_with_location
+ - expressionType: SQL
+ label: Video Link
+ sqlExpression: video_link
custom_form_data: {}
custom_params: {}
extras:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_6df964.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_6df964.yaml
similarity index 85%
rename from tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_6df964.yaml
rename to tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_6df964.yaml
index dedbbba61..3bd86de20 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_6df964.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_6df964.yaml
@@ -1,9 +1,9 @@
-_file_name: Problem_Results_6df964.yaml
+_file_name: Problem_Attempts_6df964.yaml
cache_timeout: null
certification_details: null
certified_by: null
-dataset_uuid: c0c8b8a3-b18a-4c17-a69b-e6befea0159d
-description: null
+dataset_uuid: b820067f-8f54-48d4-9b61-532e8f9ae6fe
+description: Coursewide averages are based on learners who attempted the problem.
params:
adhoc_filters:
- clause: WHERE
@@ -36,18 +36,20 @@ params:
targetValue: 0
extra_form_data: {}
groupby:
- - problem_link
- - problem_name_with_location
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
- datasourceWarning: false
expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
metrics:
- - correct_attempts
- - incorrect_attempts
- - correct_percent
- - incorrect_percent
+ - avg_correct_attempts_coursewide
+ - correct_attempts_by_learner
+ - avg_incorrect_attempts_coursewide
+ - incorrect_attempts_by_learner
order_by_cols: []
order_desc: false
percent_metrics: []
@@ -89,7 +91,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 34
+ id: 37
type: table
force: false
form_data:
@@ -123,24 +125,25 @@ query_context:
operator: "\u2265"
targetValue: 0
dashboards:
- - 28
- - 29
- datasource: 34__table
+ - 18
+ datasource: 37__table
extra_form_data: {}
force: false
groupby:
- - problem_link
- - problem_name_with_location
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
- datasourceWarning: false
expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
metrics:
- - correct_attempts
- - incorrect_attempts
- - correct_percent
- - incorrect_percent
+ - avg_correct_attempts_coursewide
+ - correct_attempts_by_learner
+ - avg_incorrect_attempts_coursewide
+ - incorrect_attempts_by_learner
order_by_cols: []
order_desc: false
percent_metrics: []
@@ -152,7 +155,7 @@ query_context:
server_pagination: false
show_cell_bars: true
show_totals: false
- slice_id: 92
+ slice_id: 16
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -187,8 +190,10 @@ query_context:
- annotation_layers: []
applied_time_extras: {}
columns:
- - problem_link
- - problem_name_with_location
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
- datasourceWarning: false
expressionType: SQL
label: Graded
@@ -205,10 +210,10 @@ query_context:
op: TEMPORAL_RANGE
val: No filter
metrics:
- - correct_attempts
- - incorrect_attempts
- - correct_percent
- - incorrect_percent
+ - avg_correct_attempts_coursewide
+ - correct_attempts_by_learner
+ - avg_incorrect_attempts_coursewide
+ - incorrect_attempts_by_learner
order_desc: false
orderby:
- - aggregate: AVG
@@ -267,7 +272,7 @@ query_context:
url_params: {}
result_format: json
result_type: full
-slice_name: Problem Results
+slice_name: Problem Attempts
uuid: 6df96404-8c09-4a52-96c8-9a60a92cec29
version: 1.0.0
viz_type: table
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_ba14d2.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_ba14d2.yaml
index e3209537c..dd9dfd233 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_ba14d2.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_ba14d2.yaml
@@ -17,6 +17,7 @@ params:
sqlExpression: null
subject: emission_time
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
Avg Attempts:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_d3b9fa.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_d3b9fa.yaml
index c857ea1b9..fbf4d6fbb 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_d3b9fa.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_d3b9fa.yaml
@@ -2,8 +2,8 @@ _file_name: Problem_Attempts_d3b9fa.yaml
cache_timeout: null
certification_details: null
certified_by: null
-dataset_uuid: 4df7005e-3a7e-4979-a4e3-e70f22d36daa
-description: null
+dataset_uuid: a36a7904-c8b3-43ec-ad91-335fcedb8a27
+description: Coursewide averages are based on learners who attempted the problem.
params:
adhoc_filters:
- clause: WHERE
@@ -12,91 +12,30 @@ params:
operator: TEMPORAL_RANGE
subject: emission_time
all_columns: []
- color_pn: true
- conditional_formatting:
- - colorScheme: '#ACE1C4'
- column: Avg Attempts
- operator: <
- targetValue: 2
- - colorScheme: '#FDE380'
- column: Avg Attempts
- operator: "\u2264 x \u2264"
- targetValueLeft: '2'
- targetValueRight: '4'
- - colorScheme: '#EFA1AA'
- column: Avg Attempts
- operator: '>'
- targetValue: 4
- - colorScheme: '#ACE1C4'
- column: Median of Attempts
- operator: <
- targetValue: 3
- - colorScheme: '#FDE380'
- column: Median of Attempts
- operator: "\u2264 x \u2264"
- targetValueLeft: '3'
- targetValueRight: '5'
- - colorScheme: '#EFA1AA'
- column: Median of Attempts
- operator: '>'
- targetValue: 5
+ color_pn: false
+ conditional_formatting: []
extra_form_data: {}
groupby:
- - problem_link
- - problem_name_with_location
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
- datasourceWarning: false
expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
metrics:
- - aggregate: COUNT_DISTINCT
- column:
- advanced_data_type: null
- certification_details: null
- certified_by: null
- column_name: actor_id
- description: null
- expression: ''
- filterable: true
- groupby: true
- id: 1243
- is_certified: false
- is_dttm: false
- python_date_format: null
- type: String
- type_generic: 1
- verbose_name: Actor ID
- warning_markdown: null
- datasourceWarning: false
- expressionType: SIMPLE
- hasCustomLabel: true
- label: Number of Learners That Attempted
- optionName: metric_1y87egvrs7r_60tzttoxm3f
- sqlExpression: null
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Median of Attempts
- optionName: metric_mvxmpqpzo3d_pk4liyfd228
- sqlExpression: 'quantile(0.5)(attempts) '
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Avg Attempts
- optionName: metric_brfoafrujzf_mf5rmpmbu
- sqlExpression: SUM(attempts)/COUNT(actor_id)
+ - avg_correct_attemps_coursewide
+ - correct_attempts_by_learner
+ - incorrect_attempts_by_learner
order_by_cols: []
order_desc: false
percent_metrics: []
query_mode: aggregate
row_limit: 1000
server_page_length: 10
- show_cell_bars: true
+ show_cell_bars: false
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -129,7 +68,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 100
+ id: 39
type: table
force: false
form_data:
@@ -140,88 +79,27 @@ query_context:
operator: TEMPORAL_RANGE
subject: emission_time
all_columns: []
- color_pn: true
- conditional_formatting:
- - colorScheme: '#ACE1C4'
- column: Avg Attempts
- operator: <
- targetValue: 2
- - colorScheme: '#FDE380'
- column: Avg Attempts
- operator: "\u2264 x \u2264"
- targetValueLeft: '2'
- targetValueRight: '4'
- - colorScheme: '#EFA1AA'
- column: Avg Attempts
- operator: '>'
- targetValue: 4
- - colorScheme: '#ACE1C4'
- column: Median of Attempts
- operator: <
- targetValue: 3
- - colorScheme: '#FDE380'
- column: Median of Attempts
- operator: "\u2264 x \u2264"
- targetValueLeft: '3'
- targetValueRight: '5'
- - colorScheme: '#EFA1AA'
- column: Median of Attempts
- operator: '>'
- targetValue: 5
+ color_pn: false
+ conditional_formatting: []
dashboards:
- - 30
- datasource: 100__table
+ - 19
+ datasource: 39__table
extra_form_data: {}
force: false
groupby:
- - problem_link
- - problem_name_with_location
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
- datasourceWarning: false
expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
metrics:
- - aggregate: COUNT_DISTINCT
- column:
- advanced_data_type: null
- certification_details: null
- certified_by: null
- column_name: actor_id
- description: null
- expression: ''
- filterable: true
- groupby: true
- id: 1243
- is_certified: false
- is_dttm: false
- python_date_format: null
- type: String
- type_generic: 1
- verbose_name: Actor ID
- warning_markdown: null
- datasourceWarning: false
- expressionType: SIMPLE
- hasCustomLabel: true
- label: Number of Learners That Attempted
- optionName: metric_1y87egvrs7r_60tzttoxm3f
- sqlExpression: null
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Median of Attempts
- optionName: metric_mvxmpqpzo3d_pk4liyfd228
- sqlExpression: 'quantile(0.5)(attempts) '
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Avg Attempts
- optionName: metric_brfoafrujzf_mf5rmpmbu
- sqlExpression: SUM(attempts)/COUNT(actor_id)
+ - avg_correct_attemps_coursewide
+ - correct_attempts_by_learner
+ - incorrect_attempts_by_learner
order_by_cols: []
order_desc: false
percent_metrics: []
@@ -230,8 +108,8 @@ query_context:
result_type: full
row_limit: 1000
server_page_length: 10
- show_cell_bars: true
- slice_id: 138
+ show_cell_bars: false
+ slice_id: 34
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -266,8 +144,10 @@ query_context:
- annotation_layers: []
applied_time_extras: {}
columns:
- - problem_link
- - problem_name_with_location
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
- datasourceWarning: false
expressionType: SQL
label: Graded
@@ -284,46 +164,9 @@ query_context:
op: TEMPORAL_RANGE
val: No filter
metrics:
- - aggregate: COUNT_DISTINCT
- column:
- advanced_data_type: null
- certification_details: null
- certified_by: null
- column_name: actor_id
- description: null
- expression: ''
- filterable: true
- groupby: true
- id: 1243
- is_certified: false
- is_dttm: false
- python_date_format: null
- type: String
- type_generic: 1
- verbose_name: Actor ID
- warning_markdown: null
- datasourceWarning: false
- expressionType: SIMPLE
- hasCustomLabel: true
- label: Number of Learners That Attempted
- optionName: metric_1y87egvrs7r_60tzttoxm3f
- sqlExpression: null
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Median of Attempts
- optionName: metric_mvxmpqpzo3d_pk4liyfd228
- sqlExpression: 'quantile(0.5)(attempts) '
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Avg Attempts
- optionName: metric_brfoafrujzf_mf5rmpmbu
- sqlExpression: SUM(attempts)/COUNT(actor_id)
+ - avg_correct_attemps_coursewide
+ - correct_attempts_by_learner
+ - incorrect_attempts_by_learner
order_desc: false
orderby:
- - aggregate: SUM
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Section_1d00bb.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Section_1d00bb.yaml
index 296058037..fa32cecfb 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Section_1d00bb.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Section_1d00bb.yaml
@@ -29,6 +29,7 @@ params:
sqlExpression: null
subject: content_level
all_columns: []
+ annotation_layers: []
color_pn: true
conditional_formatting:
- colorScheme: '#FDE380'
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Subsection_b35166.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Subsection_b35166.yaml
index ccabee7dc..41fbc9c94 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Subsection_b35166.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Subsection_b35166.yaml
@@ -29,6 +29,7 @@ params:
sqlExpression: null
subject: content_level
all_columns: []
+ annotation_layers: []
color_pn: true
conditional_formatting:
- colorScheme: '#FDE380'
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_003e60.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_003e60.yaml
index 41d1e7460..0bcd36ca5 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_003e60.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_003e60.yaml
@@ -2,82 +2,49 @@ _file_name: Problem_Results_003e60.yaml
cache_timeout: null
certification_details: null
certified_by: null
-dataset_uuid: 4df7005e-3a7e-4979-a4e3-e70f22d36daa
-description: null
+dataset_uuid: a36a7904-c8b3-43ec-ad91-335fcedb8a27
+description: Coursewide percentages are based on learners who attempted the problem.
params:
adhoc_filters:
- clause: WHERE
comparator: No filter
+ datasourceWarning: false
expressionType: SIMPLE
+ filterOptionName: filter_tlc6po9ps2_t5bql7epz58
+ isExtra: false
+ isNew: false
operator: TEMPORAL_RANGE
+ sqlExpression: null
subject: emission_time
all_columns: []
- color_pn: true
- conditional_formatting:
- - colorScheme: '#ACE1C4'
- column: '% Correct'
- operator: "\u2265"
- targetValue: 0
- - colorScheme: '#EFA1AA'
- column: '% Incorrect'
- operator: "\u2265"
- targetValue: 0
+ color_pn: false
+ column_config:
+ coursewide_correct_percent:
+ d3NumberFormat: ',.1%'
+ selected_learner_correct_percent:
+ d3NumberFormat: ',.1%'
+ selected_learner_incorrect_percent:
+ d3NumberFormat: ',.1%'
+ conditional_formatting: []
extra_form_data: {}
groupby:
- problem_link
- - problem_name_with_location
- - expressionType: SQL
+ - datasourceWarning: false
+ expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
metrics:
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Correct Attempts
- optionName: metric_rqulghfc2m_gtwrvu4imq
- sqlExpression: SUM(CASE WHEN success THEN attempts ELSE 0 END)
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Incorrect Attempts
- optionName: metric_2pn4wmt4mhw_d3bfmf9hpqi
- sqlExpression: SUM(CASE WHEN NOT success THEN attempts ELSE 0 END)
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: '% Correct'
- optionName: metric_rxhpd0zy3a_l5nc215rcs8
- sqlExpression: |2-
- ROUND(
- (SUM(CASE WHEN success THEN attempts ELSE 0 END)) /
- SUM(attempts), 2
- )*100
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: '% Incorrect'
- optionName: metric_3zuudx7dth3_e3j14ngnjxr
- sqlExpression: |2-
- ROUND(
- (SUM(CASE WHEN NOT success THEN attempts ELSE 0 END)) /
- SUM(attempts), 2
- )*100
+ - coursewide_correct_percent
+ - selected_learner_correct_percent
+ - selected_learner_incorrect_percent
order_by_cols: []
order_desc: false
percent_metrics: []
query_mode: aggregate
row_limit: 1000
server_page_length: 10
- show_cell_bars: true
+ show_cell_bars: false
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -110,80 +77,47 @@ params:
viz_type: table
query_context:
datasource:
- id: 100
+ id: 39
type: table
force: false
form_data:
adhoc_filters:
- clause: WHERE
comparator: No filter
+ datasourceWarning: false
expressionType: SIMPLE
+ filterOptionName: filter_tlc6po9ps2_t5bql7epz58
+ isExtra: false
+ isNew: false
operator: TEMPORAL_RANGE
+ sqlExpression: null
subject: emission_time
all_columns: []
- color_pn: true
- conditional_formatting:
- - colorScheme: '#ACE1C4'
- column: '% Correct'
- operator: "\u2265"
- targetValue: 0
- - colorScheme: '#EFA1AA'
- column: '% Incorrect'
- operator: "\u2265"
- targetValue: 0
+ color_pn: false
+ column_config:
+ coursewide_correct_percent:
+ d3NumberFormat: ',.1%'
+ selected_learner_correct_percent:
+ d3NumberFormat: ',.1%'
+ selected_learner_incorrect_percent:
+ d3NumberFormat: ',.1%'
+ conditional_formatting: []
dashboards:
- - 30
- datasource: 100__table
+ - 19
+ datasource: 39__table
extra_form_data: {}
force: false
groupby:
- problem_link
- - problem_name_with_location
- - expressionType: SQL
+ - datasourceWarning: false
+ expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
metrics:
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Correct Attempts
- optionName: metric_rqulghfc2m_gtwrvu4imq
- sqlExpression: SUM(CASE WHEN success THEN attempts ELSE 0 END)
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Incorrect Attempts
- optionName: metric_2pn4wmt4mhw_d3bfmf9hpqi
- sqlExpression: SUM(CASE WHEN NOT success THEN attempts ELSE 0 END)
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: '% Correct'
- optionName: metric_rxhpd0zy3a_l5nc215rcs8
- sqlExpression: |2-
- ROUND(
- (SUM(CASE WHEN success THEN attempts ELSE 0 END)) /
- SUM(attempts), 2
- )*100
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: '% Incorrect'
- optionName: metric_3zuudx7dth3_e3j14ngnjxr
- sqlExpression: |2-
- ROUND(
- (SUM(CASE WHEN NOT success THEN attempts ELSE 0 END)) /
- SUM(attempts), 2
- )*100
+ - coursewide_correct_percent
+ - selected_learner_correct_percent
+ - selected_learner_incorrect_percent
order_by_cols: []
order_desc: false
percent_metrics: []
@@ -192,8 +126,8 @@ query_context:
result_type: full
row_limit: 1000
server_page_length: 10
- show_cell_bars: true
- slice_id: 188
+ show_cell_bars: false
+ slice_id: 35
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -229,8 +163,8 @@ query_context:
applied_time_extras: {}
columns:
- problem_link
- - problem_name_with_location
- - expressionType: SQL
+ - datasourceWarning: false
+ expressionType: SQL
label: Graded
sqlExpression: |-
{% raw %}{{translate_column_bool('graded')}}{% endraw %}
@@ -245,46 +179,9 @@ query_context:
op: TEMPORAL_RANGE
val: No filter
metrics:
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Correct Attempts
- optionName: metric_rqulghfc2m_gtwrvu4imq
- sqlExpression: SUM(CASE WHEN success THEN attempts ELSE 0 END)
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: Incorrect Attempts
- optionName: metric_2pn4wmt4mhw_d3bfmf9hpqi
- sqlExpression: SUM(CASE WHEN NOT success THEN attempts ELSE 0 END)
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: '% Correct'
- optionName: metric_rxhpd0zy3a_l5nc215rcs8
- sqlExpression: |2-
- ROUND(
- (SUM(CASE WHEN success THEN attempts ELSE 0 END)) /
- SUM(attempts), 2
- )*100
- - aggregate: null
- column: null
- datasourceWarning: false
- expressionType: SQL
- hasCustomLabel: true
- label: '% Incorrect'
- optionName: metric_3zuudx7dth3_e3j14ngnjxr
- sqlExpression: |2-
- ROUND(
- (SUM(CASE WHEN NOT success THEN attempts ELSE 0 END)) /
- SUM(attempts), 2
- )*100
+ - coursewide_correct_percent
+ - selected_learner_correct_percent
+ - selected_learner_incorrect_percent
order_desc: false
orderby:
- - aggregate: AVG
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_3b70ae.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_3b70ae.yaml
new file mode 100644
index 000000000..40d7e8820
--- /dev/null
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_3b70ae.yaml
@@ -0,0 +1,469 @@
+_file_name: Problem_Results_3b70ae.yaml
+cache_timeout: null
+certification_details: null
+certified_by: null
+dataset_uuid: b820067f-8f54-48d4-9b61-532e8f9ae6fe
+description: Coursewide percentages are based on learners who attempted the problem.
+params:
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ datasourceWarning: false
+ expressionType: SIMPLE
+ filterOptionName: filter_yd770pyvxe_mwgme7m4o1
+ isExtra: false
+ isNew: false
+ operator: TEMPORAL_RANGE
+ sqlExpression: null
+ subject: emission_time
+ all_columns: []
+ color_pn: false
+ column_config:
+ Coursewide % Correct:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
+ Selected Learner % Correct:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
+ Selected Learner % Incorrect:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
+ conditional_formatting: []
+ extra_form_data: {}
+ groupby:
+ - expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Graded
+ sqlExpression: |-
+ {% raw %}{{translate_column_bool('graded')}}{% endraw %}
+ metrics:
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: coursewide_percent_correct
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 420
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Coursewide % Correct
+ optionName: metric_a2sco8o7qdr_hrm69b0n2oi
+ sqlExpression: null
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: selected_learner_percent_correct
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 423
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Selected Learner % Correct
+ optionName: metric_ajk80omkp7c_f38xafdup6b
+ sqlExpression: null
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: selected_learner_percent_incorrect
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 424
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Selected Learner % Incorrect
+ optionName: metric_3yevtfz91ok_mymfgpi0qz
+ sqlExpression: null
+ order_by_cols: []
+ order_desc: false
+ percent_metrics: []
+ query_mode: aggregate
+ row_limit: 1000
+ server_page_length: 10
+ server_pagination: false
+ show_cell_bars: false
+ show_totals: false
+ table_timestamp_format: smart_date
+ temporal_columns_lookup:
+ emission_time: true
+ time_grain_sqla: P1M
+ timeseries_limit_metric:
+ aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: course_order
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 1348
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Int32
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: false
+ label: AVG(course_order)
+ optionName: metric_cq2cm641ll8_pcu3pmwa32m
+ sqlExpression: null
+ viz_type: table
+query_context:
+ datasource:
+ id: 37
+ type: table
+ force: false
+ form_data:
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ datasourceWarning: false
+ expressionType: SIMPLE
+ filterOptionName: filter_yd770pyvxe_mwgme7m4o1
+ isExtra: false
+ isNew: false
+ operator: TEMPORAL_RANGE
+ sqlExpression: null
+ subject: emission_time
+ all_columns: []
+ color_pn: false
+ column_config:
+ Coursewide % Correct:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
+ Selected Learner % Correct:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
+ Selected Learner % Incorrect:
+ d3NumberFormat: ',.1%'
+ d3SmallNumberFormat: ',.1%'
+ conditional_formatting: []
+ dashboards:
+ - 18
+ datasource: 37__table
+ extra_form_data: {}
+ force: false
+ groupby:
+ - expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Graded
+ sqlExpression: |-
+ {% raw %}{{translate_column_bool('graded')}}{% endraw %}
+ metrics:
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: coursewide_percent_correct
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 420
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Coursewide % Correct
+ optionName: metric_a2sco8o7qdr_hrm69b0n2oi
+ sqlExpression: null
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: selected_learner_percent_correct
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 423
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Selected Learner % Correct
+ optionName: metric_ajk80omkp7c_f38xafdup6b
+ sqlExpression: null
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: selected_learner_percent_incorrect
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 424
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Selected Learner % Incorrect
+ optionName: metric_3yevtfz91ok_mymfgpi0qz
+ sqlExpression: null
+ order_by_cols: []
+ order_desc: false
+ percent_metrics: []
+ query_mode: aggregate
+ result_format: json
+ result_type: full
+ row_limit: 1000
+ server_page_length: 10
+ server_pagination: false
+ show_cell_bars: false
+ show_totals: false
+ slice_id: 64
+ table_timestamp_format: smart_date
+ temporal_columns_lookup:
+ emission_time: true
+ time_grain_sqla: P1M
+ timeseries_limit_metric:
+ aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: course_order
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 1348
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Int32
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: false
+ label: AVG(course_order)
+ optionName: metric_cq2cm641ll8_pcu3pmwa32m
+ sqlExpression: null
+ viz_type: table
+ queries:
+ - annotation_layers: []
+ applied_time_extras: {}
+ columns:
+ - expressionType: SQL
+ label: Problem Link
+ sqlExpression: problem_link
+ - datasourceWarning: false
+ expressionType: SQL
+ label: Graded
+ sqlExpression: |-
+ {% raw %}{{translate_column_bool('graded')}}{% endraw %}
+ custom_form_data: {}
+ custom_params: {}
+ extras:
+ having: ''
+ time_grain_sqla: P1M
+ where: ''
+ filters:
+ - col: emission_time
+ op: TEMPORAL_RANGE
+ val: No filter
+ metrics:
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: coursewide_percent_correct
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 420
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Coursewide % Correct
+ optionName: metric_a2sco8o7qdr_hrm69b0n2oi
+ sqlExpression: null
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: selected_learner_percent_correct
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 423
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Selected Learner % Correct
+ optionName: metric_ajk80omkp7c_f38xafdup6b
+ sqlExpression: null
+ - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: selected_learner_percent_incorrect
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 424
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: true
+ label: Selected Learner % Incorrect
+ optionName: metric_3yevtfz91ok_mymfgpi0qz
+ sqlExpression: null
+ order_desc: false
+ orderby:
+ - - aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: course_order
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 1348
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Int32
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: false
+ label: AVG(course_order)
+ optionName: metric_cq2cm641ll8_pcu3pmwa32m
+ sqlExpression: null
+ - true
+ post_processing: []
+ row_limit: 1000
+ series_limit: 0
+ series_limit_metric:
+ aggregate: AVG
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: course_order
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 1348
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: Int32
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: false
+ label: AVG(course_order)
+ optionName: metric_cq2cm641ll8_pcu3pmwa32m
+ sqlExpression: null
+ url_params: {}
+ result_format: json
+ result_type: full
+slice_name: Problem Results
+uuid: 3b70aeac-54d3-4aad-86ff-296d2947a7bd
+version: 1.0.0
+viz_type: table
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_474171.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_474171.yaml
index bc38a46f0..1901b9cfd 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_474171.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_474171.yaml
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: visited_on
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
number_of_learners:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_eec3a4.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_eec3a4.yaml
index 08a8e1890..5009f0408 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_eec3a4.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_eec3a4.yaml
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: visited_on
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
Number of Learners:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_2a8d96.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_2a8d96.yaml
index d3392d296..9ca7031b7 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_2a8d96.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_2a8d96.yaml
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: visited_on
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
number_of_learners:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_f60f12.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_f60f12.yaml
index f9054a667..9e2ece514 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_f60f12.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Subsection_Summary_f60f12.yaml
@@ -12,6 +12,7 @@ params:
operator: TEMPORAL_RANGE
subject: visited_on
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
Number of Learners:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_6b7610.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_6b7610.yaml
index fd1a38535..7439206ba 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_6b7610.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_6b7610.yaml
@@ -7,6 +7,7 @@ description: null
params:
adhoc_filters: []
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
rewatched_percent:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_8266ce.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_8266ce.yaml
index 4eb7b872c..36440b80a 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_8266ce.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_8266ce.yaml
@@ -33,7 +33,6 @@ params:
label: Subsection Name
sqlExpression: subsection_with_name
- video_link
- - video_name_with_location
metrics:
- unique_watchers
- total_plays
@@ -76,7 +75,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 88
+ id: 4
type: table
force: false
form_data:
@@ -98,8 +97,8 @@ query_context:
operator: "\u2265"
targetValue: 0
dashboards:
- - 30
- datasource: 88__table
+ - 19
+ datasource: 4__table
extra_form_data: {}
force: false
groupby:
@@ -112,7 +111,6 @@ query_context:
label: Subsection Name
sqlExpression: subsection_with_name
- video_link
- - video_name_with_location
metrics:
- unique_watchers
- total_plays
@@ -125,7 +123,7 @@ query_context:
row_limit: 1000
server_page_length: 10
show_cell_bars: true
- slice_id: 156
+ slice_id: 57
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -169,7 +167,6 @@ query_context:
label: Subsection Name
sqlExpression: subsection_with_name
- video_link
- - video_name_with_location
custom_form_data: {}
custom_params: {}
extras:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_c8c363.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_c8c363.yaml
index 95a3e766d..a76724f58 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_c8c363.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_c8c363.yaml
@@ -28,6 +28,7 @@ params:
`section_with_name` <> '' and `subsection_with_name` <> ''
subject: null
all_columns: []
+ annotation_layers: []
color_pn: true
column_config:
total_plays:
@@ -50,7 +51,6 @@ params:
- section_with_name
- subsection_with_name
- video_link
- - video_name_with_location
metrics:
- unique_watchers
- total_plays
@@ -93,7 +93,7 @@ params:
viz_type: table
query_context:
datasource:
- id: 62
+ id: 30
type: table
force: false
form_data:
@@ -138,15 +138,14 @@ query_context:
operator: "\u2265"
targetValue: 0
dashboards:
- - 28
- datasource: 62__table
+ - 17
+ datasource: 30__table
extra_form_data: {}
force: false
groupby:
- section_with_name
- subsection_with_name
- video_link
- - video_name_with_location
metrics:
- unique_watchers
- total_plays
@@ -159,7 +158,7 @@ query_context:
row_limit: 1000
server_page_length: 10
show_cell_bars: true
- slice_id: 90
+ slice_id: 1
table_timestamp_format: smart_date
temporal_columns_lookup:
emission_time: true
@@ -197,7 +196,6 @@ query_context:
- section_with_name
- subsection_with_name
- video_link
- - video_name_with_location
custom_form_data: {}
custom_params: {}
extras:
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Section_0744f1.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Section_0744f1.yaml
index b4f94b87b..14172d62e 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Section_0744f1.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Section_0744f1.yaml
@@ -29,6 +29,7 @@ params:
sqlExpression: null
subject: content_level
all_columns: []
+ annotation_layers: []
color_pn: true
conditional_formatting:
- colorScheme: '#ACE1C4'
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Subsection_cf5b6e.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Subsection_cf5b6e.yaml
index dd936206d..cebb2228d 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Subsection_cf5b6e.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_per_Subsection_cf5b6e.yaml
@@ -29,6 +29,7 @@ params:
sqlExpression: null
subject: content_level
all_columns: []
+ annotation_layers: []
color_pn: true
conditional_formatting:
- colorScheme: '#ACE1C4'
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/At-Risk_Learners.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/At-Risk_Learners.yaml
index 397dc1074..c351f40e3 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/At-Risk_Learners.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/At-Risk_Learners.yaml
@@ -8,363 +8,363 @@ dashboard_title: At-Risk Learners
description: null
metadata:
chart_configuration:
- '133':
+ '19':
crossFilters:
chartsInScope:
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 133
- '138':
+ id: 19
+ '27':
crossFilters:
chartsInScope:
- - 133
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 138
- '139':
+ id: 27
+ '3':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 139
- '145':
+ id: 3
+ '30':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 145
- '156':
+ id: 30
+ '34':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 156
- '162':
+ id: 34
+ '35':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 162
- '163':
+ id: 35
+ '37':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 163
- '165':
+ id: 37
+ '39':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 165
- '168':
+ id: 39
+ '41':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 168
- '171':
+ id: 41
+ '42':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 171
- '177':
+ id: 42
+ '46':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 177
- '178':
+ id: 46
+ '50':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 178
- '179':
+ id: 50
+ '51':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 54
+ - 57
+ - 62
scope: global
- id: 179
- '183':
+ id: 51
+ '54':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 57
+ - 62
scope: global
- id: 183
- '188':
+ id: 54
+ '57':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 62
scope: global
- id: 188
- '190':
+ id: 57
+ '62':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
scope: global
- id: 190
- '191':
+ id: 62
+ '8':
crossFilters:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
+ - 3
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope: global
- id: 191
+ id: 8
color_scheme: supersetColors
color_scheme_domain:
- '#1FA8C9'
@@ -388,26 +388,27 @@ metadata:
- '#9EE5E5'
- '#D1C6BC'
cross_filters_enabled: true
- expanded_slices: {}
+ default_filters: '{}'
+ expanded_slices: {"30": true}
global_chart_configuration:
chartsInScope:
- - 133
- - 138
- - 139
- - 145
- - 156
- - 162
- - 163
- - 165
- - 168
- - 171
- - 177
- - 178
- - 179
- - 183
- - 188
- - 190
- - 191
+ - 3
+ - 8
+ - 19
+ - 27
+ - 30
+ - 34
+ - 35
+ - 37
+ - 39
+ - 41
+ - 42
+ - 46
+ - 50
+ - 51
+ - 54
+ - 57
+ - 62
scope:
excluded: []
rootPath:
@@ -603,10 +604,10 @@ metadata:
name: Date
scope:
excluded:
- - 178
- - 168
- - 133
- - 139
+ - 37
+ - 3
+ - 42
+ - 41
rootPath:
- TAB-GeKBNaKbHg
- TAB-ez_vuoah8
@@ -621,16 +622,23 @@ metadata:
- {}
type: NATIVE_FILTER
refresh_frequency: 0
- shared_label_colors: {}
+ shared_label_colors:
+ Attempted All Problems: '#A868B7'
+ Attempted At Least One Problem: '#666666'
+ Number of Learners: '#1FA8C9'
+ Total Learners: '#5AC189'
+ Total Views: '#E04355'
+ Viewed All Pages: '#454E7C'
+ Viewed At Least One Page: '#FF7F44'
timed_refresh_immune_slices: []
position:
CHART-LmLX-39lXb:
children: []
id: CHART-LmLX-39lXb
meta:
- chartId: 178
+ chartId: 37
height: 72
- sliceName: Partial and Full Views Per Video (at-risk)
+ sliceName: Partial and Full Video Views
uuid: 2232c302-cd41-406f-a45d-0f674344166b
width: 12
parents:
@@ -646,9 +654,9 @@ position:
children: []
id: CHART-NSSaeQX_nX
meta:
- chartId: 156
+ chartId: 57
height: 50
- sliceName: Video Views by Section/Subsection (at-risk)
+ sliceName: Video Engagement
uuid: 8266ce91-d0b3-4c3b-aa3d-2be4d90e64a8
width: 12
parents:
@@ -664,9 +672,9 @@ position:
children: []
id: CHART-explore-2108-1
meta:
- chartId: 168
+ chartId: 3
height: 62
- sliceName: Problems attempted per section/subsection (at-risk)
+ sliceName: Problem Engagement per Section/Subsection
uuid: 5015477d-d166-4823-868d-c7883d195bab
width: 12
parents:
@@ -682,9 +690,9 @@ position:
children: []
id: CHART-explore-2128-1
meta:
- chartId: 179
+ chartId: 50
height: 50
- sliceName: At-risk learners
+ sliceName: Learners
uuid: 447a194b-dbed-4a82-a899-2df8e01e84b1
width: 12
parents:
@@ -698,9 +706,9 @@ position:
children: []
id: CHART-explore-2148-1
meta:
- chartId: 171
+ chartId: 8
height: 50
- sliceName: Last visit date
+ sliceName: Last Visit Date
uuid: 6c2b1008-96c9-426d-b2fe-68aa1de7b10d
width: 12
parents:
@@ -708,15 +716,15 @@ position:
- GRID_ID
- TABS-7McownEo06
- TAB-s_n47Pk1I
- - ROW-vQrzBOW17
+ - ROW-_1cvZEW57f
type: CHART
CHART-explore-2168-1:
children: []
id: CHART-explore-2168-1
meta:
- chartId: 183
+ chartId: 62
height: 50
- sliceName: At-risk Enrollees per Enrollment Track
+ sliceName: Enrollees by Enrollment Track
uuid: f8beeb8c-b35c-47fc-8370-96b493f9c1b8
width: 6
parents:
@@ -730,9 +738,9 @@ position:
children: []
id: CHART-explore-2188-1
meta:
- chartId: 133
+ chartId: 42
height: 63
- sliceName: Page views per section/subsection (at-risk)
+ sliceName: Page Engagement per Section/Subsection
uuid: 29a5cf7e-41cd-4b60-a63a-c921d6ebd997
width: 12
parents:
@@ -748,9 +756,9 @@ position:
children: []
id: CHART-explore-2208-1
meta:
- chartId: 177
+ chartId: 51
height: 50
- sliceName: Section Summary (at-risk)
+ sliceName: Section Summary
uuid: eec3a432-153f-42bc-8d37-52b200a77acd
width: 5
parents:
@@ -766,9 +774,9 @@ position:
children: []
id: CHART-explore-2209-1
meta:
- chartId: 162
+ chartId: 19
height: 50
- sliceName: Cumulative Interactions (at-risk)
+ sliceName: Cumulative Interactions
uuid: 3a22091f-4686-4a1d-a66d-b36541844b36
width: 7
parents:
@@ -784,9 +792,9 @@ position:
children: []
id: CHART-explore-2210-1
meta:
- chartId: 145
+ chartId: 54
height: 50
- sliceName: Subsection Summary (at-risk)
+ sliceName: Subsection Summary
uuid: f60f12f3-f4f1-41af-8b10-d2cf3cb94f69
width: 5
parents:
@@ -802,9 +810,9 @@ position:
children: []
id: CHART-explore-2211-1
meta:
- chartId: 191
+ chartId: 46
height: 50
- sliceName: Evolution of Engagement (at-risk)
+ sliceName: Page Engagement Over Time
uuid: ffa98e7f-7bed-4435-a1c1-472a46a4d269
width: 7
parents:
@@ -820,11 +828,11 @@ position:
children: []
id: CHART-explore-2664-1
meta:
- chartId: 138
+ chartId: 34
height: 50
- sliceName: Problem Interactions (at-risk)
+ sliceName: Problem Attempts
uuid: d3b9fa1e-f0ab-41e5-9705-27c7c58e620c
- width: 6
+ width: 12
parents:
- ROOT_ID
- GRID_ID
@@ -838,11 +846,11 @@ position:
children: []
id: CHART-explore-2665-1
meta:
- chartId: 188
+ chartId: 35
height: 50
- sliceName: Problem Results (at-risk)
+ sliceName: Problem Results
uuid: 003e60b9-907d-4002-bf2e-7d315225ec29
- width: 6
+ width: 12
parents:
- ROOT_ID
- GRID_ID
@@ -856,9 +864,9 @@ position:
children: []
id: CHART-explore-2707-1
meta:
- chartId: 139
+ chartId: 41
height: 64
- sliceName: Video Views per Section/Subsection (at-risk)
+ sliceName: Video Engagement per Section/Subsection
uuid: 5d0329f4-2a4a-4cd4-8b4e-926568d1bbcc
width: 12
parents:
@@ -874,9 +882,9 @@ position:
children: []
id: CHART-explore-2708-1
meta:
- chartId: 190
+ chartId: 30
height: 50
- sliceName: Watched Video Segments (at-risk)
+ sliceName: Watched Video Segments
uuid: a7947bdb-65a2-49ed-815e-850423bfeacc
width: 12
parents:
@@ -892,9 +900,9 @@ position:
children: []
id: CHART-explore-2785-1
meta:
- chartId: 165
+ chartId: 39
height: 50
- sliceName: At-risk Enrollment Dates
+ sliceName: Enrollment Dates
uuid: ded61855-48ea-4705-9385-690bf7dba53b
width: 6
parents:
@@ -908,7 +916,7 @@ position:
children: []
id: CHART-explore-2805-1
meta:
- chartId: 163
+ chartId: 27
height: 50
sliceName: Distribution of Course Grades
uuid: cd3479d8-3574-4b77-9e1e-2ad176989b4d
@@ -956,7 +964,6 @@ position:
ROW-5pIDk-rQ-:
children:
- CHART-explore-2664-1
- - CHART-explore-2665-1
id: ROW-5pIDk-rQ-
meta:
background: BACKGROUND_TRANSPARENT
@@ -1143,6 +1150,20 @@ position:
- TABS-7McownEo06
- TAB-s_n47Pk1I
type: ROW
+ ROW-xWrCAiCUg:
+ children:
+ - CHART-explore-2665-1
+ id: ROW-xWrCAiCUg
+ meta:
+ background: BACKGROUND_TRANSPARENT
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-7McownEo06
+ - TAB-T3nFxdINB
+ - TABS-OsW2n-dsFI
+ - TAB-ez_vuoah8
+ type: ROW
TAB-1sC34gQvt:
children:
- ROW-duj4-KVlBB
@@ -1221,6 +1242,7 @@ position:
children:
- ROW-fYHQDhzd8
- ROW-5pIDk-rQ-
+ - ROW-xWrCAiCUg
id: TAB-ez_vuoah8
meta:
defaultText: Tab title
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Comparison_Dashboard.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Comparison_Dashboard.yaml
index 416f79c07..72ef65098 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Comparison_Dashboard.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Comparison_Dashboard.yaml
@@ -171,12 +171,11 @@ metadata:
- '#9EE5E5'
- '#D1C6BC'
cross_filters_enabled: true
- default_filters: '{}'
expanded_slices:
- '1504': true
- '1505': true
- '1506': true
- '1507': true
+ '1287': true
+ '1294': true
+ '1301': true
+ '1303': true
global_chart_configuration:
chartsInScope:
- 1467
@@ -350,7 +349,7 @@ position:
children: []
id: CHART-explore-1467-1
meta:
- chartId: 1467
+ chartId: 1282
height: 50
sliceName: Video Engagement
uuid: 5b00f792-233c-4ee6-9411-7df49f4b5061
@@ -365,7 +364,7 @@ position:
children: []
id: CHART-explore-1500-1
meta:
- chartId: 1500
+ chartId: 1298
height: 50
sliceName: Course Info
uuid: b2fff8a7-3ace-4075-9a3f-5fa5b99f81bb
@@ -380,7 +379,7 @@ position:
children: []
id: CHART-explore-1501-1
meta:
- chartId: 1501
+ chartId: 1286
height: 50
sliceName: Course Info
uuid: ccdd7d98-4722-490b-a0b2-077380a7c7eb
@@ -395,7 +394,7 @@ position:
children: []
id: CHART-explore-1502-1
meta:
- chartId: 1502
+ chartId: 1295
height: 50
sliceName: Enrollment Counts
uuid: 7eaf5bc2-0067-424b-a50b-607cf54c086a
@@ -410,7 +409,7 @@ position:
children: []
id: CHART-explore-1503-1
meta:
- chartId: 1503
+ chartId: 1290
height: 50
sliceName: Enrollment Counts
uuid: 8230a366-957d-4667-a2ff-3cbcb2f25f60
@@ -425,7 +424,7 @@ position:
children: []
id: CHART-explore-1504-1
meta:
- chartId: 1504
+ chartId: 1294
height: 50
sliceName: Learner Performance Breakdown
uuid: b73b0a5c-4861-402e-a39c-d73333a4d911
@@ -440,7 +439,7 @@ position:
children: []
id: CHART-explore-1505-1
meta:
- chartId: 1505
+ chartId: 1301
height: 50
sliceName: Learner Performance Breakdown
uuid: d414b144-467b-456b-b899-9cfb3579faba
@@ -455,7 +454,7 @@ position:
children: []
id: CHART-explore-1506-1
meta:
- chartId: 1506
+ chartId: 1287
height: 50
sliceName: Learner Performance
uuid: b518f341-9ed4-4c23-bb88-6c1d497aa260
@@ -470,7 +469,7 @@ position:
children: []
id: CHART-explore-1507-1
meta:
- chartId: 1507
+ chartId: 1303
height: 50
sliceName: Learner Performance
uuid: b0e170ce-26f1-4452-a3c0-49b41fa6e529
@@ -485,7 +484,7 @@ position:
children: []
id: CHART-explore-1508-1
meta:
- chartId: 1508
+ chartId: 1302
height: 50
sliceName: Video Engagement
uuid: 6b7610a7-41d0-4d14-be81-62a5a8f22d62
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Dashboard.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Dashboard.yaml
index f26c9b409..a53d94ad3 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Dashboard.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Dashboard.yaml
@@ -8,358 +8,321 @@ dashboard_title: Course Dashboard
description: null
metadata:
chart_configuration:
- '100':
+ '10':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 100
- '104':
+ id: 10
+ '11':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 104
- '22':
+ id: 11
+ '2':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 22
- '238':
+ id: 2
+ '21':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 238
- '30':
- crossFilters:
- chartsInScope:
- - 5
- - 7
- - 8
- - 22
- - 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
- scope: global
- id: 30
- '41':
+ id: 21
+ '29':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
- 30
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 34
+ - 38
+ - 39
+ - 41
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 41
- '5':
+ id: 29
+ '30':
crossFilters:
chartsInScope:
- - 7
- - 8
- - 22
- - 30
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 5
- '59':
+ id: 30
+ '34':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 38
+ - 39
- 41
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 59
- '62':
+ id: 34
+ '39':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
- 41
- - 59
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 62
- '63':
+ id: 39
+ '41':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
- - 41
- - 59
- - 62
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 34
+ - 38
+ - 39
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 63
- '7':
+ id: 41
+ '42':
crossFilters:
chartsInScope:
- - 5
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 7
- '86':
+ id: 42
+ '53':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 57
+ - 60
+ - 64
scope: global
- id: 86
- '87':
+ id: 53
+ '57':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 60
+ - 64
scope: global
- id: 87
- '90':
+ id: 57
+ '60':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 64
scope: global
- id: 90
- '92':
+ id: 60
+ '64':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
scope: global
- id: 92
- '95':
+ id: 64
+ '9':
crossFilters:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope: global
- id: 95
+ id: 9
color_scheme: supersetColors
color_scheme_domain:
- '#1FA8C9'
@@ -383,57 +346,55 @@ metadata:
- '#9EE5E5'
- '#D1C6BC'
cross_filters_enabled: true
- default_filters: '{}'
- expanded_slices: {}
+ expanded_slices: {"57": true}
global_chart_configuration:
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
scope:
excluded: []
rootPath:
- ROOT_ID
label_colors: {}
native_filter_configuration:
- - cascadeParentIds: []
+ - cascadeParentIds:
+ - NATIVE_FILTER-IfS-Rd0ZS
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
controlValues:
- defaultToFirstItem: true
- enableEmptyFilter: true
+ defaultToFirstItem: false
+ enableEmptyFilter: false
inverseSelection: false
multiSelect: false
searchAllOptions: false
@@ -445,7 +406,6 @@ metadata:
filterType: filter_select
id: NATIVE_FILTER-QrTlO4wBf
name: Organization
- requiredFirst: true
scope:
excluded: []
rootPath:
@@ -465,26 +425,25 @@ metadata:
- cascadeParentIds:
- NATIVE_FILTER-QrTlO4wBf
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
controlValues:
- defaultToFirstItem: true
+ defaultToFirstItem: false
enableEmptyFilter: false
inverseSelection: false
multiSelect: false
@@ -497,7 +456,6 @@ metadata:
filterType: filter_select
id: NATIVE_FILTER-IfS-Rd0ZS
name: Course Name
- requiredFirst: true
scope:
excluded: []
rootPath:
@@ -518,24 +476,23 @@ metadata:
- NATIVE_FILTER-QrTlO4wBf
- NATIVE_FILTER-IfS-Rd0ZS
chartsInScope:
- - 5
- - 7
- - 8
- - 22
+ - 2
+ - 9
+ - 10
+ - 11
+ - 17
+ - 21
+ - 29
- 30
+ - 34
+ - 38
+ - 39
- 41
- - 59
- - 62
- - 63
- - 83
- - 86
- - 87
- - 90
- - 92
- - 95
- - 100
- - 104
- - 238
+ - 42
+ - 53
+ - 57
+ - 60
+ - 64
controlValues:
defaultToFirstItem: false
enableEmptyFilter: false
@@ -602,10 +559,10 @@ metadata:
name: Date
scope:
excluded:
- - 104
- - 7
- - 22
- - 59
+ - 11
+ - 60
+ - 21
+ - 34
rootPath:
- TAB-4ptSkqs5MS
- TAB-_Ey4nPhFr
@@ -642,17 +599,16 @@ metadata:
name: Time Grain
scope:
excluded:
- - 86
- - 92
- - 100
- - 104
- - 7
- - 22
- - 59
- - 90
- - 41
- - 63
- - 87
+ - 29
+ - 57
+ - 11
+ - 60
+ - 21
+ - 34
+ - 53
+ - 9
+ - 39
+ - 2
rootPath:
- TAB-4ptSkqs5MS
- TAB-_Ey4nPhFr
@@ -665,14 +621,23 @@ metadata:
- datasetUuid: 38488934-35ee-5404-9acc-7e67626ddfae
type: NATIVE_FILTER
refresh_frequency: 0
- shared_label_colors: {}
+ shared_label_colors:
+ all_pages_viewed: '#FF7F44'
+ at_leat_one_page_viewed: '#FCC700'
+ attempted_all_problems: '#A38F79'
+ attempted_at_least_one_problem: '#E04355'
+ audit: '#666666'
+ honor: '#1FA8C9'
+ number_of_learners: '#454E7C'
+ verified: '#5AC189'
+ views: '#A868B7'
timed_refresh_immune_slices: []
position:
CHART-XNUtUvjGrL:
children: []
id: CHART-XNUtUvjGrL
meta:
- chartId: 238
+ chartId: 64
height: 50
sliceName: Page Engagement Over Time
uuid: d7bfef35-d35a-405f-ae59-73472845cd59
@@ -690,29 +655,11 @@ position:
children: []
id: CHART-explore-119-1
meta:
- chartId: 86
+ chartId: 29
height: 50
sliceName: Problem Attempts
uuid: ba14d2ea-8c53-4f79-aa1b-434011f3c725
- width: 6
- parents:
- - ROOT_ID
- - GRID_ID
- - TABS-UDkdlBRw4n
- - TAB-_Ey4nPhFr
- - TABS-nk8aeLmc5o
- - TAB-vze5iq6jg
- - ROW-bDr7aPz3K
- type: CHART
- CHART-explore-120-1:
- children: []
- id: CHART-explore-120-1
- meta:
- chartId: 92
- height: 50
- sliceName: Problem Results
- uuid: 6df96404-8c09-4a52-96c8-9a60a92cec29
- width: 6
+ width: 12
parents:
- ROOT_ID
- GRID_ID
@@ -726,9 +673,9 @@ position:
children: []
id: CHART-explore-121-1
meta:
- chartId: 100
+ chartId: 57
height: 54
- sliceName: Watched Video Segments
+ sliceName: Number of Views across Video Duration
uuid: 2985a9db-c338-4008-af52-2930b81ee2e5
width: 12
parents:
@@ -744,7 +691,7 @@ position:
children: []
id: CHART-explore-122-1
meta:
- chartId: 104
+ chartId: 11
height: 53
sliceName: Partial and Full Video Views
uuid: bfffb9fe-07bd-4b2f-b437-522d45f6cd2c
@@ -762,7 +709,7 @@ position:
children: []
id: CHART-explore-123-1
meta:
- chartId: 7
+ chartId: 60
height: 61
sliceName: Page Engagement per Section/Subsection
uuid: bf2d6219-d633-48c1-a9b5-742eac6a4c0a
@@ -780,7 +727,7 @@ position:
children: []
id: CHART-explore-124-1
meta:
- chartId: 95
+ chartId: 42
height: 50
sliceName: Distribution of Current Course Grade
uuid: ea565658-6796-40e8-9d1e-01ffd0778bc9
@@ -797,7 +744,7 @@ position:
children: []
id: CHART-explore-125-1
meta:
- chartId: 22
+ chartId: 21
height: 61
sliceName: Problem Engagement per Section/Subsection
uuid: 8cdcd4aa-1fa2-41dc-b38d-f1112134592e
@@ -815,7 +762,7 @@ position:
children: []
id: CHART-explore-126-1
meta:
- chartId: 59
+ chartId: 34
height: 69
sliceName: Video Engagement per Section/Subsection
uuid: c1f77432-e55f-4473-b7d0-7a1c3976e6a8
@@ -833,7 +780,7 @@ position:
children: []
id: CHART-explore-127-1
meta:
- chartId: 90
+ chartId: 53
height: 39
sliceName: Video Engagement
uuid: c8c363f8-8dbc-4a78-841d-4976f4404884
@@ -851,7 +798,7 @@ position:
children: []
id: CHART-explore-128-1
meta:
- chartId: 5
+ chartId: 41
height: 29
sliceName: Course Information
uuid: fa249dda-78da-4ccc-9ef3-39177e6aae0c
@@ -865,7 +812,7 @@ position:
children: []
id: CHART-explore-129-1
meta:
- chartId: 83
+ chartId: 38
height: 27
sliceName: Learners with Passing Grade
uuid: b40cdabc-b265-48d2-913d-a9dfee0b6ab1
@@ -882,7 +829,7 @@ position:
children: []
id: CHART-explore-185-1
meta:
- chartId: 8
+ chartId: 17
height: 29
sliceName: Current Enrollees
uuid: 00de2f72-b3ed-4994-b231-fd3cf29d758d
@@ -896,7 +843,7 @@ position:
children: []
id: CHART-explore-188-1
meta:
- chartId: 41
+ chartId: 9
height: 51
sliceName: Enrollees per Enrollment Track
uuid: e584199e-0ed6-42bf-afb9-db3b9fe4132b
@@ -929,7 +876,7 @@ position:
children: []
id: CHART-explore-191-1
meta:
- chartId: 63
+ chartId: 39
height: 50
sliceName: Section Summary
uuid: 47417136-acd1-44a1-b41e-644eb2c237c3
@@ -947,7 +894,7 @@ position:
children: []
id: CHART-explore-192-1
meta:
- chartId: 87
+ chartId: 2
height: 50
sliceName: Subsection Summary
uuid: 2a8d96be-687d-4918-98fe-ae9fbd599152
@@ -965,7 +912,7 @@ position:
children: []
id: CHART-explore-195-1
meta:
- chartId: 62
+ chartId: 10
height: 50
sliceName: Cumulative Interactions
uuid: c44e43b5-ba69-4805-8d01-3b04dcbf2cb6
@@ -1156,7 +1103,6 @@ position:
ROW-bDr7aPz3K:
children:
- CHART-explore-119-1
- - CHART-explore-120-1
id: ROW-bDr7aPz3K
meta:
background: BACKGROUND_TRANSPARENT
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Individual_Learner.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Individual_Learner.yaml
index a989281fb..b751f6f8f 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Individual_Learner.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Individual_Learner.yaml
@@ -8,258 +8,291 @@ dashboard_title: Individual Learner
description: null
metadata:
chart_configuration:
- '100':
+ '10':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 100
- '104':
+ id: 10
+ '13':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 104
- '136':
+ id: 13
+ '16':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 136
- '143':
+ id: 16
+ '2':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 143
- '164':
+ id: 2
+ '23':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 164
- '169':
+ id: 23
+ '32':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 169
- '180':
+ id: 32
+ '36':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 180
- '182':
+ id: 36
+ '44':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 182
- '187':
+ id: 44
+ '5':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 192
+ - 2
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 187
- '192':
+ id: 5
+ '52':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 58
+ - 61
+ - 64
scope: global
- id: 192
- '22':
+ id: 52
+ '58':
crossFilters:
chartsInScope:
- - 7
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 61
+ - 64
scope: global
- id: 22
- '59':
+ id: 58
+ '6':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope: global
- id: 59
- '7':
+ id: 6
+ '61':
crossFilters:
chartsInScope:
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 64
scope: global
- id: 7
- '92':
+ id: 61
+ '64':
crossFilters:
chartsInScope:
- - 7
- - 22
- - 59
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
scope: global
- id: 92
+ id: 64
+ '9':
+ crossFilters:
+ chartsInScope:
+ - 2
+ - 5
+ - 6
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
+ scope: global
+ id: 9
color_scheme: supersetColors
color_scheme_domain:
- '#1FA8C9'
@@ -283,23 +316,25 @@ metadata:
- '#9EE5E5'
- '#D1C6BC'
cross_filters_enabled: true
- expanded_slices: {}
+ default_filters: '{}'
+ expanded_slices: {"16": true, "64": true, "9": true}
global_chart_configuration:
chartsInScope:
- - 7
- - 22
- - 59
- - 92
- - 100
- - 104
- - 136
- - 143
- - 164
- - 169
- - 180
- - 182
- - 187
- - 192
+ - 2
+ - 5
+ - 6
+ - 9
+ - 10
+ - 13
+ - 16
+ - 23
+ - 32
+ - 36
+ - 44
+ - 52
+ - 58
+ - 61
+ - 64
scope:
excluded: []
rootPath:
@@ -579,16 +614,18 @@ metadata:
datasetUuid: 64427d2b-790e-450f-84f4-5f00ca9bdc6c
type: NATIVE_FILTER
refresh_frequency: 0
- shared_label_colors: {}
+ shared_label_colors:
+ attempted_all_problems: '#5AC189'
+ attempted_at_least_one_problem: '#1FA8C9'
timed_refresh_immune_slices: []
position:
CHART-3L0xSxskX4:
children: []
id: CHART-3L0xSxskX4
meta:
- chartId: 22
+ chartId: 10
height: 56
- sliceName: Problems attempted per section/subsection
+ sliceName: Problem Engagement per Section/Subsection
uuid: 8cdcd4aa-1fa2-41dc-b38d-f1112134592e
width: 12
parents:
@@ -602,9 +639,9 @@ position:
children: []
id: CHART-4zWYZE6VQm
meta:
- chartId: 7
+ chartId: 23
height: 50
- sliceName: Page views per section/subsection
+ sliceName: Page Engagement per Section/Subsection
uuid: bf2d6219-d633-48c1-a9b5-742eac6a4c0a
width: 12
parents:
@@ -618,7 +655,7 @@ position:
children: []
id: CHART-BmEG_m0R8l
meta:
- chartId: 100
+ chartId: 9
height: 50
sliceName: Watched Video Segments
uuid: 2985a9db-c338-4008-af52-2930b81ee2e5
@@ -634,9 +671,9 @@ position:
children: []
id: CHART-OJrXW113HX
meta:
- chartId: 92
+ chartId: 16
height: 50
- sliceName: Problem Results
+ sliceName: Problem Attempts
uuid: 6df96404-8c09-4a52-96c8-9a60a92cec29
width: 12
parents:
@@ -650,9 +687,9 @@ position:
children: []
id: CHART-explore-191-1
meta:
- chartId: 192
+ chartId: 5
height: 50
- sliceName: Page views per subsection
+ sliceName: Page Engagement per Subsection
uuid: 18f85781-d604-4edf-a3e6-429e16c3040a
width: 6
parents:
@@ -666,9 +703,9 @@ position:
children: []
id: CHART-explore-192-1
meta:
- chartId: 182
+ chartId: 36
height: 50
- sliceName: Page views per section
+ sliceName: Page Engagement per Section
uuid: 834ec7c4-ead8-4dea-b227-1c8be5fbb1d3
width: 6
parents:
@@ -682,9 +719,9 @@ position:
children: []
id: CHART-explore-194-1
meta:
- chartId: 164
+ chartId: 44
height: 50
- sliceName: Problems attempted per section
+ sliceName: Problem Engagement per Section
uuid: 1d00bbc3-f0d5-4c17-b9f3-8cc4d5516950
width: 6
parents:
@@ -698,9 +735,9 @@ position:
children: []
id: CHART-explore-195-1
meta:
- chartId: 143
+ chartId: 6
height: 50
- sliceName: Problems attempted per subsection
+ sliceName: Problem Engagement per Subsection
uuid: b3516698-35fe-4934-862a-7f5fb869d322
width: 6
parents:
@@ -714,9 +751,9 @@ position:
children: []
id: CHART-explore-196-1
meta:
- chartId: 180
+ chartId: 61
height: 50
- sliceName: Video views per section
+ sliceName: Video Engagement per Section
uuid: 0744f1bf-1636-4735-861b-18a6f1e825a2
width: 6
parents:
@@ -730,9 +767,9 @@ position:
children: []
id: CHART-explore-197-1
meta:
- chartId: 187
+ chartId: 58
height: 50
- sliceName: Video views per subsection
+ sliceName: Video Engagement per Subsection
uuid: cf5b6eb7-d22c-4dda-bd4e-ee2401f337cc
width: 6
parents:
@@ -746,9 +783,9 @@ position:
children: []
id: CHART-explore-198-1
meta:
- chartId: 136
+ chartId: 13
height: 50
- sliceName: Partial and full views per video (table)
+ sliceName: Partial and Full Video Views
uuid: 54a1551c-7eb3-43fb-abd1-005816da0769
width: 4
parents:
@@ -758,13 +795,27 @@ position:
- TAB-60D1MfEOi
- ROW-GHcajTlc0_
type: CHART
+ CHART-explore-64-1:
+ children: []
+ id: CHART-explore-64-1
+ meta:
+ chartId: 64
+ height: 50
+ sliceName: Problem Results
+ uuid: 3b70aeac-54d3-4aad-86ff-296d2947a7bd
+ width: 12
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - ROW-u6HEhuTRtK
+ type: CHART
CHART-hZ8cIzkMoC:
children: []
id: CHART-hZ8cIzkMoC
meta:
- chartId: 104
+ chartId: 52
height: 50
- sliceName: Partial and full views per video
+ sliceName: Partial and Full Video Views
uuid: bfffb9fe-07bd-4b2f-b437-522d45f6cd2c
width: 8
parents:
@@ -778,7 +829,7 @@ position:
children: []
id: CHART-nw620qu42a
meta:
- chartId: 169
+ chartId: 32
height: 50
sliceName: Learner Summary
uuid: 6da50964-000e-4342-a931-3881feb02c13
@@ -792,9 +843,9 @@ position:
children: []
id: CHART-ykpHXAV6JN
meta:
- chartId: 59
+ chartId: 2
height: 50
- sliceName: Video views per section/subsection
+ sliceName: Video Engagement per Section/Subsection
uuid: c1f77432-e55f-4473-b7d0-7a1c3976e6a8
width: 12
parents:
@@ -937,6 +988,18 @@ position:
- TABS-z_NjtdPFvn
- TAB-Fq7aRqpYF
type: ROW
+ ROW-r_eBkjfvr:
+ children:
+ - CHART-explore-64-1
+ id: ROW-r_eBkjfvr
+ meta:
+ background: BACKGROUND_TRANSPARENT
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-z_NjtdPFvn
+ - TAB-Fq7aRqpYF
+ type: ROW
ROW-sVF0AhzNN:
children:
- CHART-nw620qu42a
@@ -992,6 +1055,7 @@ position:
- ROW-xE_A6-vwtl
- ROW-puj-bYhiT
- ROW-4SRphw6cO_
+ - ROW-r_eBkjfvr
id: TAB-Fq7aRqpYF
meta:
defaultText: Tab title
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/at_risk_coursewide_avg.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/at_risk_coursewide_avg.yaml
new file mode 100644
index 000000000..32503c5f0
--- /dev/null
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/at_risk_coursewide_avg.yaml
@@ -0,0 +1,402 @@
+_file_name: at_risk_coursewide_avg.yaml
+always_filter_main_dttm: false
+cache_timeout: null
+columns:
+- advanced_data_type: null
+ column_name: incorrect_attempts_by_learner
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Int16)
+ verbose_name: Incorrect Attempts By Learner
+- advanced_data_type: null
+ column_name: correct_attempts_by_learner
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Int16)
+ verbose_name: Correct Attempts By Learner
+- advanced_data_type: null
+ column_name: avg_incorrect_attempts_coursewide
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Float64)
+ verbose_name: Avg Incorrect Attempts Coursewide
+- advanced_data_type: null
+ column_name: avg_correct_attempts_coursewide
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Float64)
+ verbose_name: Avg Correct Attempts Coursewide
+- advanced_data_type: null
+ column_name: interaction_type
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Interaction Type
+- advanced_data_type: null
+ column_name: course_key
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Course Key
+- advanced_data_type: null
+ column_name: org
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Org
+- advanced_data_type: null
+ column_name: emission_time
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: true
+ python_date_format: null
+ type: Nullable(DateTime)
+ verbose_name: Emission Time
+- advanced_data_type: null
+ column_name: attempts
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Int16
+ verbose_name: Attempts
+- advanced_data_type: null
+ column_name: course_order
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Int32
+ verbose_name: Course Order
+- advanced_data_type: null
+ column_name: selected_learner_percent_incorrect
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Selected Learner Percent Incorrect
+- advanced_data_type: null
+ column_name: selected_learner_percent_correct
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Selected Learner Percent Correct
+- advanced_data_type: null
+ column_name: coursewide_percent_correct
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Coursewide Percent Correct
+- advanced_data_type: null
+ column_name: graded
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Bool
+ verbose_name: Graded
+- advanced_data_type: null
+ column_name: success
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Bool
+ verbose_name: Success
+- advanced_data_type: null
+ column_name: problem_name_with_location
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Name With Location
+- advanced_data_type: null
+ column_name: problem_name
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Name
+- advanced_data_type: null
+ column_name: actor_id
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Actor Id
+- advanced_data_type: null
+ column_name: course_name
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Course Name
+- advanced_data_type: null
+ column_name: problem_id
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Id
+- advanced_data_type: null
+ column_name: problem_link
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Link
+- advanced_data_type: null
+ column_name: course_run
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Course Run
+- advanced_data_type: null
+ column_name: username
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Username
+- advanced_data_type: null
+ column_name: email
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Email
+- advanced_data_type: null
+ column_name: name
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Name
+- advanced_data_type: null
+ column_name: responses
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Responses
+database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6
+default_endpoint: null
+description: null
+extra: null
+fetch_values_predicate: null
+filter_select_enabled: true
+main_dttm_col: emission_time
+metrics:
+- currency: null
+ d3format: null
+ description: null
+ expression: SUM(correct_attempts_by_learner)
+ extra:
+ warning_markdown: ''
+ metric_name: correct_attempts_by_learner
+ metric_type: null
+ verbose_name: Correct Attempts by Selected Learner
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: SUM(incorrect_attempts_by_learner)
+ extra:
+ warning_markdown: ''
+ metric_name: incorrect_attempts_by_learner
+ metric_type: null
+ verbose_name: Incorrect Attempts by Selected Learner
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(avg_correct_attempts_coursewide)
+ extra:
+ warning_markdown: ''
+ metric_name: avg_correct_attemps_coursewide
+ metric_type: null
+ verbose_name: Avg Correct Attempts Coursewide
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(selected_learner_percent_correct)
+ extra: {}
+ metric_name: selected_learner_correct_percent
+ metric_type: null
+ verbose_name: Selected Learner % Correct
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(selected_learner_percent_incorrect)
+ extra: {}
+ metric_name: selected_learner_incorrect_percent
+ metric_type: null
+ verbose_name: Selected Learner % Incorrect
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(coursewide_percent_correct)
+ extra:
+ warning_markdown: ''
+ metric_name: coursewide_correct_percent
+ metric_type: null
+ verbose_name: Coursewide % Correct
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: COUNT(*)
+ extra:
+ warning_markdown: ''
+ metric_name: count
+ metric_type: count
+ verbose_name: COUNT(*)
+ warning_text: null
+normalize_columns: false
+offset: 0
+params: null
+schema: null
+sql: |
+ {% filter indent(width=2) %}{% include 'openedx-assets/queries/at_risk_problem_coursewide_avg.sql' %}{% endfilter %}
+table_name: at_risk_coursewide_avg
+template_params: null
+uuid: a36a7904-c8b3-43ec-ad91-335fcedb8a27
+version: 1.0.0
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/course_names.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/course_names.yaml
index 743b9f8d5..61bb13355 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/course_names.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/course_names.yaml
@@ -71,7 +71,9 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ASPECTS_EVENT_SINK_DATABASE}}'
-sql: select * from {{ ASPECTS_EVENT_SINK_DATABASE }}.course_names
+sql: 'select * from {{ ASPECTS_EVENT_SINK_DATABASE }}.course_names
+
+ '
table_name: course_names
template_params: null
uuid: 38488934-35ee-5404-9acc-7e67626ddfae
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/dim_at_risk_learners.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/dim_at_risk_learners.yaml
index 8fabcb595..de84ef8c1 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/dim_at_risk_learners.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/dim_at_risk_learners.yaml
@@ -179,7 +179,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/dim_at_risk_learners.sql' %}{% endfilter %}
table_name: dim_at_risk_learners
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/enrollment_status.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/enrollment_status.yaml
index d8c34b8e6..072f7363e 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/enrollment_status.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/enrollment_status.yaml
@@ -137,7 +137,7 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/enrollment_status.sql' %}{% endfilter %}
table_name: enrollment_status
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_navigation_completion.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_navigation_completion.yaml
index b07b1d065..0b6f022d2 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_navigation_completion.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_navigation_completion.yaml
@@ -225,7 +225,7 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_navigation_completion.sql' %}{% endfilter %}
table_name: fact_at_risk_navigation_completion
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_pageview_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_pageview_engagement.yaml
index c2a9b1a13..40648b312 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_pageview_engagement.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_pageview_engagement.yaml
@@ -154,7 +154,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_pageview_engagement.sql' %}{% endfilter %}
table_name: fact_at_risk_pageview_engagement
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_problem_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_problem_engagement.yaml
index 150a21e19..2e5529214 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_problem_engagement.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_problem_engagement.yaml
@@ -144,7 +144,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_problem_engagement.sql' %}{% endfilter %}
table_name: fact_at_risk_problem_engagement
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_engagement.yaml
index 426ca23c9..f5023d6e5 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_engagement.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_engagement.yaml
@@ -144,7 +144,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_engagement.sql' %}{% endfilter %}
table_name: fact_at_risk_video_engagement
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_plays.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_plays.yaml
index 734b278a4..d194b288c 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_plays.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_plays.yaml
@@ -284,7 +284,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_plays.sql' %}{% endfilter %}
table_name: fact_at_risk_video_plays
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_watches.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_watches.yaml
index 16b191d15..6b71a4c7d 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_watches.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_video_watches.yaml
@@ -147,7 +147,7 @@ columns:
type: String
verbose_name: Organization
- advanced_data_type: null
- column_name: username
+ column_name: email
description: null
expression: null
extra: {}
@@ -157,9 +157,9 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Username
+ verbose_name: Email
- advanced_data_type: null
- column_name: email
+ column_name: name
description: null
expression: null
extra: {}
@@ -169,9 +169,9 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Email
+ verbose_name: Name
- advanced_data_type: null
- column_name: name
+ column_name: username
description: null
expression: null
extra: {}
@@ -181,7 +181,7 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Name
+ verbose_name: Username
database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6
default_endpoint: null
description: null
@@ -224,7 +224,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_watches.sql' %}{% endfilter %}
table_name: fact_at_risk_video_watches
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_watched_video_segments.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_watched_video_segments.yaml
index 168bada16..bca019904 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_watched_video_segments.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_at_risk_watched_video_segments.yaml
@@ -246,7 +246,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_watched_video_segments.sql' %}{% endfilter %}
table_name: fact_at_risk_watched_video_segments
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollment_pii.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollment_pii.yaml
index 5019f3e5a..4a4b98633 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollment_pii.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollment_pii.yaml
@@ -96,7 +96,7 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_enrollment_pii.sql' %}{% endfilter %}
table_name: fact_enrollment_pii
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollments.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollments.yaml
index 81fa8654c..a5e56cbcd 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollments.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_enrollments.yaml
@@ -137,7 +137,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_enrollments.sql' %}{% endfilter %}
table_name: fact_enrollments
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_navigation_completion.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_navigation_completion.yaml
index 93ad44fe5..a4395af60 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_navigation_completion.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_navigation_completion.yaml
@@ -226,7 +226,7 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_navigation_completion.sql' %}{% endfilter %}
table_name: fact_navigation_completion
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_pageview_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_pageview_engagement.yaml
index 68668cd26..c78421710 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_pageview_engagement.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_pageview_engagement.yaml
@@ -176,7 +176,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_page_engagement.sql' %}{% endfilter %}
table_name: fact_pageview_engagement
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_problem_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_problem_engagement.yaml
index 176d5ccec..5ca0b013d 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_problem_engagement.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_problem_engagement.yaml
@@ -176,7 +176,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_problem_engagement.sql' %}{% endfilter %}
table_name: fact_problem_engagement
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status.yaml
index b0367c626..443a9ff24 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status.yaml
@@ -259,7 +259,9 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: select * from {{ DBT_PROFILE_TARGET_DATABASE }}.fact_student_status
+sql: 'select * from {{ DBT_PROFILE_TARGET_DATABASE }}.fact_student_status
+
+ '
table_name: fact_student_status
template_params: null
uuid: 633a1d4e-cd40-482f-a5dc-d5901c2181c2
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status_plus_7_days.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status_plus_7_days.yaml
new file mode 100644
index 000000000..3638c8829
--- /dev/null
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status_plus_7_days.yaml
@@ -0,0 +1,255 @@
+_file_name: fact_student_status_plus_7_days.yaml
+always_filter_main_dttm: false
+cache_timeout: null
+columns:
+- advanced_data_type: null
+ column_name: active_within_last_7_days
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: UInt64
+ verbose_name: Active Within Last 7 Days
+- advanced_data_type: null
+ column_name: course_key
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Course Key
+- advanced_data_type: null
+ column_name: enrollment_mode
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Enrollment Mode
+- advanced_data_type: null
+ column_name: course_grade
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Course Grade
+- advanced_data_type: null
+ column_name: enrolled_at
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: true
+ python_date_format: null
+ type: DateTime
+ verbose_name: Enrolled At
+- advanced_data_type: null
+ column_name: actor_id
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Actor Id
+- advanced_data_type: null
+ column_name: approving_state
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Approving State
+- advanced_data_type: null
+ column_name: grade_bucket
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Grade Bucket
+- advanced_data_type: null
+ column_name: course_name
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Course Name
+- advanced_data_type: null
+ column_name: course_run
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Course Run
+- advanced_data_type: null
+ column_name: enrollment_status
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Enrollment Status
+- advanced_data_type: null
+ column_name: org
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Organization
+- advanced_data_type: null
+ column_name: email
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Email
+- advanced_data_type: null
+ column_name: name
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Name
+- advanced_data_type: null
+ column_name: username
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Username
+database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6
+default_endpoint: null
+description: null
+extra: null
+fetch_values_predicate: null
+filter_select_enabled: true
+main_dttm_col: enrolled_at
+metrics:
+- currency: null
+ d3format: null
+ description: null
+ expression: SUM(active_within_last_7_days)
+ extra:
+ warning_markdown: ''
+ metric_name: active_within
+ metric_type: null
+ verbose_name: Active within Last 7 Days
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: ROUND(AVG(course_grade), 2 ) *100
+ extra: {}
+ metric_name: avg_course_grade
+ metric_type: null
+ verbose_name: Avg Course Grade
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: quantile(0.5)(round(course_grade,2) * 100)
+ extra: {}
+ metric_name: median_course_grade
+ metric_type: null
+ verbose_name: Median Course Grade
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: COUNT(*)
+ extra:
+ warning_markdown: ''
+ metric_name: count
+ metric_type: count
+ verbose_name: COUNT(*)
+ warning_text: null
+normalize_columns: false
+offset: 0
+params: null
+schema: null
+sql: |
+ {% filter indent(width=2) %}{% include 'openedx-assets/queries/active_last_7_days.sql' %}{% endfilter %}
+table_name: fact_student_status_plus_7_days
+template_params: null
+uuid: f25fdc4e-ce79-4f4c-9fc6-3dfe91690493
+version: 1.0.0
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_engagement.yaml
index 5dcfdc019..7947cec7b 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_engagement.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_engagement.yaml
@@ -176,7 +176,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_engagement.sql' %}{% endfilter %}
table_name: fact_video_engagement
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_plays.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_plays.yaml
index 525e9adf8..d201a4553 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_plays.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_plays.yaml
@@ -297,7 +297,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_plays.sql' %}{% endfilter %}
table_name: fact_video_plays
template_params: {}
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_watches.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_watches.yaml
index 4c9ad6e04..3fa01ea46 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_watches.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_watches.yaml
@@ -51,7 +51,7 @@ columns:
type: UInt8
verbose_name: Watched Entire Video
- advanced_data_type: null
- column_name: actor_id
+ column_name: course_key
description: null
expression: ''
extra: {}
@@ -60,10 +60,10 @@ columns:
is_active: true
is_dttm: false
python_date_format: null
- type: String
- verbose_name: Actor ID
+ type: LowCardinality(String)
+ verbose_name: Course Key
- advanced_data_type: null
- column_name: course_key
+ column_name: actor_id
description: null
expression: ''
extra: {}
@@ -73,7 +73,7 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Course Key
+ verbose_name: Actor ID
- advanced_data_type: null
column_name: course_name
description: null
@@ -135,9 +135,9 @@ columns:
type: String
verbose_name: Video Name
- advanced_data_type: null
- column_name: org
+ column_name: video_link
description: null
- expression: ''
+ expression: null
extra: {}
filterable: true
groupby: true
@@ -145,19 +145,19 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Organization
+ verbose_name: Video Link
- advanced_data_type: null
- column_name: username
+ column_name: org
description: null
- expression: null
+ expression: ''
extra: {}
filterable: true
groupby: true
is_active: true
is_dttm: false
python_date_format: null
- type: String
- verbose_name: Username
+ type: LowCardinality(String)
+ verbose_name: Organization
- advanced_data_type: null
column_name: email
description: null
@@ -182,6 +182,18 @@ columns:
python_date_format: null
type: String
verbose_name: Name
+- advanced_data_type: null
+ column_name: username
+ description: null
+ expression: null
+ extra: {}
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Username
database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6
default_endpoint: null
description: null
@@ -244,7 +256,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_watches.sql' %}{% endfilter %}
table_name: fact_video_watches
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_watched_video_segments.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_watched_video_segments.yaml
index c98f9d2a3..20ac1d2e6 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_watched_video_segments.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_watched_video_segments.yaml
@@ -268,7 +268,7 @@ normalize_columns: true
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_watched_video_segments.sql' %}{% endfilter %}
table_name: fact_watched_video_segments
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/int_problem_results.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/int_problem_results.yaml
index 8fcb371e0..2303b6435 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/int_problem_results.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/int_problem_results.yaml
@@ -208,7 +208,7 @@ columns:
type: String
verbose_name: Responses
- advanced_data_type: null
- column_name: username
+ column_name: email
description: null
expression: null
extra: {}
@@ -218,9 +218,9 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Username
+ verbose_name: Email
- advanced_data_type: null
- column_name: email
+ column_name: name
description: null
expression: null
extra: {}
@@ -230,9 +230,9 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Email
+ verbose_name: Name
- advanced_data_type: null
- column_name: name
+ column_name: username
description: null
expression: null
extra: {}
@@ -242,7 +242,7 @@ columns:
is_dttm: false
python_date_format: null
type: String
- verbose_name: Name
+ verbose_name: Username
database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6
default_endpoint: null
description: null
@@ -337,7 +337,7 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/int_problem_results.sql' %}{% endfilter %}
table_name: int_problem_results
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/learner_summary.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/learner_summary.yaml
index 744338798..dcde2cc51 100644
--- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/learner_summary.yaml
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/learner_summary.yaml
@@ -204,7 +204,7 @@ normalize_columns: false
offset: 0
params: null
schema: '{{ DBT_PROFILE_TARGET_DATABASE }}'
-sql: |-
+sql: |
{% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_learner_summary.sql' %}{% endfilter %}
table_name: learner_summary
template_params: null
diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/problem_coursewide_avg.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/problem_coursewide_avg.yaml
new file mode 100644
index 000000000..517f8d064
--- /dev/null
+++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/problem_coursewide_avg.yaml
@@ -0,0 +1,437 @@
+_file_name: problem_coursewide_avg.yaml
+always_filter_main_dttm: false
+cache_timeout: null
+columns:
+- advanced_data_type: null
+ column_name: incorrect_attempts_by_learner
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Int16)
+ verbose_name: Incorrect Attempts By Learner
+- advanced_data_type: null
+ column_name: correct_attempts_by_learner
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Int16)
+ verbose_name: Correct Attempts By Learner
+- advanced_data_type: null
+ column_name: avg_incorrect_attempts_coursewide
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Float64)
+ verbose_name: Avg Incorrect Attempts Coursewide
+- advanced_data_type: null
+ column_name: avg_correct_attempts_coursewide
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Nullable(Float64)
+ verbose_name: Avg Correct Attempts Coursewide
+- advanced_data_type: null
+ column_name: interaction_type
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Interaction Type
+- advanced_data_type: null
+ column_name: course_key
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Course Key
+- advanced_data_type: null
+ column_name: org
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: LowCardinality(String)
+ verbose_name: Org
+- advanced_data_type: null
+ column_name: emission_time
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: true
+ python_date_format: null
+ type: Nullable(DateTime)
+ verbose_name: Emission Time
+- advanced_data_type: null
+ column_name: attempts
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Int16
+ verbose_name: Attempts
+- advanced_data_type: null
+ column_name: course_order
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Int32
+ verbose_name: Course Order
+- advanced_data_type: null
+ column_name: selected_learner_percent_incorrect
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Selected Learner Percent Incorrect
+- advanced_data_type: null
+ column_name: selected_learner_percent_correct
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Selected Learner Percent Correct
+- advanced_data_type: null
+ column_name: coursewide_percent_correct
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Float64
+ verbose_name: Coursewide Percent Correct
+- advanced_data_type: null
+ column_name: graded
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Bool
+ verbose_name: Graded
+- advanced_data_type: null
+ column_name: success
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: Bool
+ verbose_name: Success
+- advanced_data_type: null
+ column_name: problem_name_with_location
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Name With Location
+- advanced_data_type: null
+ column_name: problem_name
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Name
+- advanced_data_type: null
+ column_name: actor_id
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Actor Id
+- advanced_data_type: null
+ column_name: course_name
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Course Name
+- advanced_data_type: null
+ column_name: problem_id
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Id
+- advanced_data_type: null
+ column_name: problem_link
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Problem Link
+- advanced_data_type: null
+ column_name: course_run
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Course Run
+- advanced_data_type: null
+ column_name: username
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Username
+- advanced_data_type: null
+ column_name: email
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Email
+- advanced_data_type: null
+ column_name: name
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Name
+- advanced_data_type: null
+ column_name: responses
+ description: null
+ expression: null
+ extra:
+ warning_markdown: null
+ filterable: true
+ groupby: true
+ is_active: true
+ is_dttm: false
+ python_date_format: null
+ type: String
+ verbose_name: Responses
+database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6
+default_endpoint: null
+description: null
+extra: null
+fetch_values_predicate: null
+filter_select_enabled: true
+main_dttm_col: emission_time
+metrics:
+- currency: null
+ d3format: null
+ description: null
+ expression: SUM(correct_attempts_by_learner)
+ extra:
+ warning_markdown: ''
+ metric_name: correct_attempts_by_learner
+ metric_type: null
+ verbose_name: Correct Attempts by Selected Learner
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: SUM(incorrect_attempts_by_learner)
+ extra:
+ warning_markdown: ''
+ metric_name: incorrect_attempts_by_learner
+ metric_type: null
+ verbose_name: Incorrect Attempts by Selected Learner
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(avg_correct_attempts_coursewide)
+ extra:
+ warning_markdown: ''
+ metric_name: avg_correct_attempts_coursewide
+ metric_type: null
+ verbose_name: Avg Correct Attempts Coursewide
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(avg_incorrect_attempts_coursewide)
+ extra:
+ warning_markdown: ''
+ metric_name: avg_incorrect_attempts_coursewide
+ metric_type: null
+ verbose_name: Avg Incorrect Attempts Coursewide
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(selected_learner_percent_correct)
+ extra: {}
+ metric_name: selected_learner_correct_percent
+ metric_type: null
+ verbose_name: Selected Learner % Correct
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(selected_learner_percent_incorrect)
+ extra: {}
+ metric_name: selected_learner_incorrect_percent
+ metric_type: null
+ verbose_name: Selected Learner % Incorrect
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: AVG(coursewide_percent_correct)
+ extra: {}
+ metric_name: coursewide_correct_percent
+ metric_type: null
+ verbose_name: Coursewide % Correct
+ warning_text: null
+- currency: null
+ d3format: null
+ description: null
+ expression: COUNT(*)
+ extra:
+ warning_markdown: ''
+ metric_name: count
+ metric_type: count
+ verbose_name: COUNT(*)
+ warning_text: null
+normalize_columns: false
+offset: 0
+params: null
+schema: null
+sql: |
+ {% filter indent(width=2) %}{% include 'openedx-assets/queries/problem_coursewide_avg.sql' %}{% endfilter %}
+table_name: problem_coursewide_avg
+template_params: null
+uuid: b820067f-8f54-48d4-9b61-532e8f9ae6fe
+version: 1.0.0
diff --git a/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql b/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql
new file mode 100644
index 000000000..5b6860455
--- /dev/null
+++ b/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql
@@ -0,0 +1,11 @@
+with
+ recent_activity as (
+ select course_key, COUNT(DISTINCT actor_id) as active_last_7_days
+ from {{ ASPECTS_XAPI_DATABASE }}.navigation_events
+ where emission_time >= NOW() - INTERVAL 7 DAY
+ group by course_key
+ )
+
+select fss.*, COALESCE(ra.active_last_7_days, 0) as active_within_last_7_days
+from {{ DBT_PROFILE_TARGET_DATABASE }}.fact_student_status fss
+left join recent_activity ra on fss.course_key = ra.course_key
diff --git a/tutoraspects/templates/openedx-assets/queries/at_risk_problem_coursewide_avg.sql b/tutoraspects/templates/openedx-assets/queries/at_risk_problem_coursewide_avg.sql
new file mode 100644
index 000000000..0bb61a917
--- /dev/null
+++ b/tutoraspects/templates/openedx-assets/queries/at_risk_problem_coursewide_avg.sql
@@ -0,0 +1,131 @@
+-- See int_problem_results.sql for more information
+-- See problem_coursewide_avg.sql for more information
+with
+ successful_responses as (
+ select
+ org, course_key, problem_id, actor_id::String as actor_id, first_success_at
+ from {{ ASPECTS_XAPI_DATABASE }}.responses
+ where
+ isNotNull(first_success_at)
+ {% include 'openedx-assets/queries/common_filters.sql' %}
+ ),
+ unsuccessful_responses as (
+ select
+ org,
+ course_key,
+ problem_id,
+ actor_id::String as actor_id,
+ max(last_attempt_at) as last_attempt_at
+ from {{ ASPECTS_XAPI_DATABASE }}.responses
+ where
+ actor_id not in (select distinct actor_id from successful_responses)
+ {% include 'openedx-assets/queries/common_filters.sql' %}
+ group by org, course_key, problem_id, actor_id
+ ),
+ responses as (
+ select org, course_key, problem_id, actor_id, first_success_at as emission_time
+ from successful_responses
+ union all
+ select org, course_key, problem_id, actor_id, last_attempt_at as emission_time
+ from unsuccessful_responses
+ ),
+ full_responses as (
+ select
+ events.emission_time as emission_time,
+ events.org as org,
+ events.course_key as course_key,
+ events.problem_id as problem_id,
+ events.object_id as object_id,
+ events.actor_id as actor_id,
+ events.responses as responses,
+ events.success as success,
+ events.attempts as attempts,
+ events.interaction_type as interaction_type
+ from {{ ASPECTS_XAPI_DATABASE }}.problem_events events
+ join responses using (org, course_key, problem_id, actor_id, emission_time)
+ ),
+ coursewide_attempts as (
+ select
+ org,
+ course_key,
+ avg(case when success then attempts else null end) as avg_correct_attempts,
+ avg(
+ case when not success then attempts else null end
+ ) as avg_incorrect_attempts,
+ sum(case when success then 1 else 0 end)::float
+ / count(*) as coursewide_percent_correct
+ from full_responses
+ group by org, course_key
+ )
+
+select
+ full_responses.emission_time as emission_time,
+ full_responses.org as org,
+ full_responses.course_key as course_key,
+ blocks.course_name as course_name,
+ blocks.course_run as course_run,
+ full_responses.problem_id as problem_id,
+ blocks.block_name as problem_name,
+ blocks.display_name_with_location as problem_name_with_location,
+ blocks.course_order as course_order,
+ concat(
+ '',
+ blocks.block_name,
+ ''
+ ) as problem_link,
+ full_responses.actor_id as actor_id,
+ full_responses.responses as responses,
+ full_responses.success as success,
+ full_responses.attempts as attempts,
+ full_responses.interaction_type as interaction_type,
+ blocks.graded as graded,
+ users.username as username,
+ users.email as email,
+ users.name as name,
+
+ -- Aggregated course-wide values
+ coursewide_attempts.avg_correct_attempts as avg_correct_attempts_coursewide,
+ coursewide_attempts.avg_incorrect_attempts as avg_incorrect_attempts_coursewide,
+ coursewide_attempts.coursewide_percent_correct as coursewide_percent_correct,
+
+ -- Learner-specific values
+ (
+ case when full_responses.success then full_responses.attempts else null end
+ ) as correct_attempts_by_learner,
+ (
+ case when not full_responses.success then full_responses.attempts else null end
+ ) as incorrect_attempts_by_learner,
+
+ -- Selected Learner % Correct and Incorrect
+ (
+ sum(case when full_responses.success then 1 else 0 end) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ ) / count(*) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ )
+ ) as selected_learner_percent_correct,
+
+ (
+ sum(case when not full_responses.success then 1 else 0 end) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ ) / count(*) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ )
+ ) as selected_learner_percent_incorrect
+
+from full_responses
+join
+ {{ DBT_PROFILE_TARGET_DATABASE }}.dim_course_blocks blocks
+ on (
+ full_responses.course_key = blocks.course_key
+ and full_responses.problem_id = blocks.block_id
+ )
+left outer join
+ {{ ASPECTS_EVENT_SINK_DATABASE }}.user_pii users
+ on full_responses.actor_id = users.external_user_id::String
+join
+ coursewide_attempts
+ on full_responses.org = coursewide_attempts.org
+ and full_responses.course_key = coursewide_attempts.course_key
diff --git a/tutoraspects/templates/openedx-assets/queries/enrollment_status.sql b/tutoraspects/templates/openedx-assets/queries/enrollment_status.sql
index efe745f71..6db19984b 100644
--- a/tutoraspects/templates/openedx-assets/queries/enrollment_status.sql
+++ b/tutoraspects/templates/openedx-assets/queries/enrollment_status.sql
@@ -12,4 +12,3 @@ left join
{{ ASPECTS_EVENT_SINK_DATABASE }}.course_names cn
on fes.org = cn.org
and fes.course_key = cn.course_key
-;
diff --git a/tutoraspects/templates/openedx-assets/queries/fact_video_watches.sql b/tutoraspects/templates/openedx-assets/queries/fact_video_watches.sql
index 90166edc9..74932d80b 100644
--- a/tutoraspects/templates/openedx-assets/queries/fact_video_watches.sql
+++ b/tutoraspects/templates/openedx-assets/queries/fact_video_watches.sql
@@ -12,6 +12,9 @@ select
subsection_with_name,
video_name,
video_name_with_location,
+ concat(
+ '', video_name_with_location, ''
+ ) as video_link,
actor_id,
username,
email,
@@ -42,6 +45,7 @@ group by
video_name,
video_name_with_location,
actor_id,
+ video_id,
video_segment_count,
username,
email,
diff --git a/tutoraspects/templates/openedx-assets/queries/fact_watched_video_segments.sql b/tutoraspects/templates/openedx-assets/queries/fact_watched_video_segments.sql
index 7ee9fc769..a0fbbd416 100644
--- a/tutoraspects/templates/openedx-assets/queries/fact_watched_video_segments.sql
+++ b/tutoraspects/templates/openedx-assets/queries/fact_watched_video_segments.sql
@@ -65,7 +65,8 @@ with
segments.started_at as started_at,
segments.start_position - (segments.start_position % 5) as start_position,
segments.end_position - (segments.end_position % 5) as end_position,
- segments.video_duration as video_duration
+ segments.video_duration as video_duration,
+ segments.video_id as video_id
from segments
join
{{ DBT_PROFILE_TARGET_DATABASE }}.dim_course_blocks_extended blocks
@@ -84,6 +85,7 @@ select
subsection_with_name,
video_name,
video_name_with_location,
+ video_id,
actor_id,
started_at,
arrayJoin(range(start_position, end_position, 5)) as segment_start,
diff --git a/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql b/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql
new file mode 100644
index 000000000..5398ce4b4
--- /dev/null
+++ b/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql
@@ -0,0 +1,127 @@
+-- See int_problem_results.sql for more context
+with
+ successful_responses as (
+ select
+ org, course_key, problem_id, actor_id::String as actor_id, first_success_at
+ from {{ ASPECTS_XAPI_DATABASE }}.responses
+ where
+ isNotNull(first_success_at)
+ {% include 'openedx-assets/queries/common_filters.sql' %}
+ ),
+ unsuccessful_responses as (
+ select
+ org,
+ course_key,
+ problem_id,
+ actor_id::String as actor_id,
+ max(last_attempt_at) as last_attempt_at
+ from {{ ASPECTS_XAPI_DATABASE }}.responses
+ where
+ actor_id not in (select distinct actor_id from successful_responses)
+ {% include 'openedx-assets/queries/common_filters.sql' %}
+ group by org, course_key, problem_id, actor_id
+ ),
+ responses as (
+ select org, course_key, problem_id, actor_id, first_success_at as emission_time
+ from successful_responses
+ union all
+ select org, course_key, problem_id, actor_id, last_attempt_at as emission_time
+ from unsuccessful_responses
+ ),
+ full_responses as (
+ select
+ events.emission_time as emission_time,
+ events.org as org,
+ events.course_key as course_key,
+ events.problem_id as problem_id,
+ events.object_id as object_id,
+ events.actor_id as actor_id,
+ events.responses as responses,
+ events.success as success,
+ events.attempts as attempts,
+ events.interaction_type as interaction_type
+ from {{ ASPECTS_XAPI_DATABASE }}.problem_events events
+ join responses using (org, course_key, problem_id, actor_id, emission_time)
+ ),
+ -- Aggregating course-wide averages and percentages
+ coursewide_attempts as (
+ select
+ org,
+ course_key,
+ avg(case when success then attempts else null end) as avg_correct_attempts,
+ avg(
+ case when not success then attempts else null end
+ ) as avg_incorrect_attempts,
+ sum(case when success then 1 else 0 end)::float
+ / count(*) as coursewide_percent_correct
+ from full_responses
+ group by org, course_key
+ )
+
+select
+ full_responses.emission_time as emission_time,
+ full_responses.org as org,
+ full_responses.course_key as course_key,
+ blocks.course_name as course_name,
+ blocks.course_run as course_run,
+ full_responses.problem_id as problem_id,
+ blocks.block_name as problem_name,
+ blocks.display_name_with_location as problem_name_with_location,
+ blocks.course_order as course_order,
+ concat(
+ '',
+ blocks.block_name,
+ ''
+ ) as problem_link,
+ full_responses.actor_id as actor_id,
+ full_responses.responses as responses,
+ full_responses.success as success,
+ full_responses.attempts as attempts,
+ full_responses.interaction_type as interaction_type,
+ blocks.graded as graded,
+ users.username as username,
+ users.email as email,
+ users.name as name,
+ -- Aggregated values from the coursewide_attempts CTE
+ coursewide_attempts.avg_correct_attempts as avg_correct_attempts_coursewide,
+ coursewide_attempts.avg_incorrect_attempts as avg_incorrect_attempts_coursewide,
+ coursewide_attempts.coursewide_percent_correct as coursewide_percent_correct,
+ -- Learner-specific calculations (correcting the percentage calculations)
+ (
+ case when full_responses.success then full_responses.attempts else null end
+ ) as correct_attempts_by_learner,
+ (
+ case when not full_responses.success then full_responses.attempts else null end
+ ) as incorrect_attempts_by_learner,
+ -- Ensure we calculate percentage based on total attempts per problem (multiplied
+ -- by 100 only once)
+ (
+ sum(case when full_responses.success then 1 else 0 end) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ ) / count(*) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ )
+ ) as selected_learner_percent_correct,
+ (
+ sum(case when not full_responses.success then 1 else 0 end) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ ) / count(*) over (
+ partition by full_responses.actor_id, full_responses.problem_id
+ )
+ ) as selected_learner_percent_incorrect
+from full_responses
+join
+ {{ DBT_PROFILE_TARGET_DATABASE }}.dim_course_blocks blocks
+ on (
+ full_responses.course_key = blocks.course_key
+ and full_responses.problem_id = blocks.block_id
+ )
+left outer join
+ {{ ASPECTS_EVENT_SINK_DATABASE }}.user_pii users
+ on full_responses.actor_id = users.external_user_id::String
+join
+ coursewide_attempts
+ on full_responses.org = coursewide_attempts.org
+ and full_responses.course_key = coursewide_attempts.course_key