From f30779549bdf53d4917f6791a57210e2d5e5ff6f Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 12:03:54 -0500 Subject: [PATCH 01/10] temp: non-breaking changes --- .../assets/charts/Last_Visit_Date_6c2b10.yaml | 74 ++++++ .../assets/charts/Last_visit_date_6c2b10.yaml | 234 ------------------ .../assets/charts/Learner_Summary_6da509.yaml | 31 ++- .../assets/charts/Learners_447a19.yaml | 1 + ...of_Views_across_Video_Duration_2985a9.yaml | 179 ++++++++++++++ ...of_Views_across_Video_Duration_a7947b.yaml | 168 +++++++++++++ .../Page_Engagement_per_Section_834ec7.yaml | 1 + ...Page_Engagement_per_Subsection_18f857.yaml | 1 + .../Partial_and_Full_Video_Views_54a155.yaml | 20 +- ...Problem_Engagement_per_Section_1d00bb.yaml | 1 + ...blem_Engagement_per_Subsection_b35166.yaml | 1 + .../assets/charts/Section_Summary_474171.yaml | 1 + .../assets/charts/Section_Summary_eec3a4.yaml | 1 + .../charts/Subsection_Summary_2a8d96.yaml | 1 + .../charts/Subsection_Summary_f60f12.yaml | 1 + .../charts/Video_Engagement_8266ce.yaml | 11 +- .../charts/Video_Engagement_c8c363.yaml | 11 +- .../Video_Engagement_per_Section_0744f1.yaml | 1 + ...ideo_Engagement_per_Subsection_cf5b6e.yaml | 1 + .../assets/datasets/course_names.yaml | 3 +- .../assets/datasets/dim_at_risk_learners.yaml | 4 +- .../assets/datasets/enrollment_status.yaml | 4 +- .../fact_at_risk_navigation_completion.yaml | 4 +- .../fact_at_risk_pageview_engagement.yaml | 4 +- .../fact_at_risk_problem_engagement.yaml | 4 +- .../fact_at_risk_video_engagement.yaml | 4 +- .../datasets/fact_at_risk_video_plays.yaml | 4 +- .../datasets/fact_at_risk_video_watches.yaml | 16 +- .../fact_at_risk_watched_video_segments.yaml | 4 +- .../assets/datasets/fact_enrollment_pii.yaml | 4 +- .../assets/datasets/fact_enrollments.yaml | 4 +- .../datasets/fact_navigation_completion.yaml | 4 +- .../datasets/fact_pageview_engagement.yaml | 4 +- .../datasets/fact_problem_engagement.yaml | 4 +- .../assets/datasets/fact_student_status.yaml | 3 +- .../datasets/fact_video_engagement.yaml | 4 +- .../assets/datasets/fact_video_plays.yaml | 4 +- .../assets/datasets/fact_video_watches.yaml | 40 +-- .../datasets/fact_watched_video_segments.yaml | 4 +- .../assets/datasets/int_problem_results.yaml | 16 +- .../assets/datasets/learner_summary.yaml | 4 +- 41 files changed, 556 insertions(+), 329 deletions(-) create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_Visit_Date_6c2b10.yaml delete mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_visit_date_6c2b10.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_2985a9.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml 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 new file mode 100644 index 00000000..ca0d2f60 --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_Visit_Date_6c2b10.yaml @@ -0,0 +1,74 @@ +_file_name: Last_Visit_Date_6c2b10.yaml +cache_timeout: null +certification_details: null +certified_by: null +dataset_uuid: 92eadc61-2931-577e-95b7-34adb1a8f515 +description: null +params: + adhoc_filters: [] + annotation_layers: [] + color_scheme: supersetColors + comparison_type: values + extra_form_data: {} + forecastInterval: 0.8 + forecastPeriods: 10 + groupby: [] + legendOrientation: top + legendType: scroll + metrics: + - aggregate: COUNT + column: + advanced_data_type: null + certification_details: null + certified_by: null + column_name: actor_id + description: null + expression: null + filterable: true + groupby: true + id: 13538 + 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 + 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 + y_axis_bounds: + - null + - null + y_axis_format: SMART_NUMBER + y_axis_title_margin: 15 + y_axis_title_position: Left +query_context: null +slice_name: Last Visit Date +uuid: 6c2b1008-96c9-426d-b2fe-68aa1de7b10d +version: 1.0.0 +viz_type: echarts_timeseries_bar 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 deleted file mode 100644 index 234fad0a..00000000 --- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Last_visit_date_6c2b10.yaml +++ /dev/null @@ -1,234 +0,0 @@ -_file_name: Last_Visit_Date_6c2b10.yaml -cache_timeout: null -certification_details: null -certified_by: null -dataset_uuid: 92eadc61-2931-577e-95b7-34adb1a8f515 -description: null -params: - adhoc_filters: [] - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - extra_form_data: {} - forecastInterval: 0.8 - forecastPeriods: 10 - groupby: [] - legendOrientation: top - legendType: scroll - metrics: - - aggregate: COUNT - column: - advanced_data_type: null - certification_details: null - certified_by: null - column_name: actor_id - description: null - expression: null - filterable: true - groupby: true - id: 13538 - 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 - 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 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title_margin: 15 - y_axis_title_position: Left -query_context: - datasource: - id: 94 - type: table - force: false - form_data: - adhoc_filters: [] - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - dashboards: - - 30 - datasource: 94__table - extra_form_data: {} - force: false - forecastInterval: 0.8 - forecastPeriods: 10 - groupby: [] - legendOrientation: top - legendType: scroll - metrics: - - aggregate: COUNT - column: - advanced_data_type: null - certification_details: null - certified_by: null - column_name: actor_id - description: null - expression: null - filterable: true - groupby: true - id: 13538 - 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 - optionName: metric_orthejcnotd_6ealxq45fqk - sqlExpression: null - only_total: true - order_desc: true - orientation: vertical - result_format: json - result_type: full - rich_tooltip: true - row_limit: 10000 - show_empty_columns: true - show_legend: true - slice_id: 171 - 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 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title_margin: 15 - y_axis_title_position: Left - queries: - - annotation_layers: [] - applied_time_extras: {} - columns: - - columnType: BASE_AXIS - expressionType: SQL - label: last_visited - sqlExpression: last_visited - timeGrain: P1D - custom_form_data: {} - custom_params: {} - extras: - having: '' - time_grain_sqla: P1D - where: '' - filters: [] - metrics: - - aggregate: COUNT - column: - advanced_data_type: null - certification_details: null - certified_by: null - column_name: actor_id - description: null - expression: null - filterable: true - groupby: true - id: 13538 - 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 - optionName: metric_orthejcnotd_6ealxq45fqk - sqlExpression: null - order_desc: true - orderby: - - - aggregate: COUNT - column: - advanced_data_type: null - certification_details: null - certified_by: null - column_name: actor_id - description: null - expression: null - filterable: true - groupby: true - id: 13538 - 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 - optionName: metric_orthejcnotd_6ealxq45fqk - sqlExpression: null - - false - post_processing: - - operation: pivot - options: - aggregates: - Number of Learners: - operator: mean - columns: [] - drop_missing_columns: false - index: - - last_visited - - operation: flatten - row_limit: 10000 - series_columns: [] - series_limit: 0 - time_offsets: [] - url_params: {} - result_format: json - result_type: full -slice_name: Last Visit Date -uuid: 6c2b1008-96c9-426d-b2fe-68aa1de7b10d -version: 1.0.0 -viz_type: echarts_timeseries_bar 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 49dc028c..40cc393c 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 8c13dd87..763d5107 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/Number_of_Views_across_Video_Duration_2985a9.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_2985a9.yaml new file mode 100644 index 00000000..85805f4b --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_2985a9.yaml @@ -0,0 +1,179 @@ +_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: 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 + comparator: No filter + datasourceWarning: false + expressionType: SIMPLE + filterOptionName: filter_kpkhcnms3c_m156a9ez5ga + isExtra: false + isNew: false + operator: TEMPORAL_RANGE + sqlExpression: null + subject: started_at + annotation_layers: [] + color_scheme: supersetColors + comparison_type: values + extra_form_data: {} + forecastInterval: 0.8 + forecastPeriods: 10 + groupby: [] + legendOrientation: top + legendType: scroll + metrics: + - total_views + - repeat_views + 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 + stack: Stack + time_grain_sqla: P1M + tooltipTimeFormat: smart_date + truncateXAxis: true + truncate_metric: true + viz_type: echarts_timeseries_bar + xAxisForceCategorical: true + x_axis: segment_start + x_axis_sort_asc: true + x_axis_sort_series: name + x_axis_sort_series_ascending: true + x_axis_time_format: smart_date + x_axis_title: Video Timestamp (in seconds) + x_axis_title_margin: 30 + y_axis_bounds: + - null + - null + y_axis_format: SMART_NUMBER + y_axis_title: Number of Views + y_axis_title_margin: 30 + y_axis_title_position: Left + zoomable: true +query_context: + datasource: + id: 27 + type: table + force: false + form_data: + adhoc_filters: + - clause: WHERE + comparator: No filter + datasourceWarning: false + expressionType: SIMPLE + filterOptionName: filter_kpkhcnms3c_m156a9ez5ga + isExtra: false + isNew: false + operator: TEMPORAL_RANGE + sqlExpression: null + subject: started_at + annotation_layers: [] + color_scheme: supersetColors + comparison_type: values + dashboards: + - 17 + - 18 + datasource: 27__table + extra_form_data: {} + force: false + forecastInterval: 0.8 + forecastPeriods: 10 + groupby: [] + legendOrientation: top + legendType: scroll + metrics: + - total_views + - repeat_views + only_total: true + order_desc: true + orientation: vertical + result_format: json + result_type: full + rich_tooltip: true + row_limit: 10000 + show_empty_columns: true + show_legend: true + slice_id: 9 + sort_series_type: sum + stack: Stack + time_grain_sqla: P1M + tooltipTimeFormat: smart_date + truncateXAxis: true + truncate_metric: true + viz_type: echarts_timeseries_bar + xAxisForceCategorical: true + x_axis: segment_start + x_axis_sort_asc: true + x_axis_sort_series: name + x_axis_sort_series_ascending: true + x_axis_time_format: smart_date + x_axis_title: Video Timestamp (in seconds) + x_axis_title_margin: 30 + y_axis_bounds: + - null + - null + y_axis_format: SMART_NUMBER + y_axis_title: Number of Views + y_axis_title_margin: 30 + y_axis_title_position: Left + zoomable: true + queries: + - annotation_layers: [] + applied_time_extras: {} + columns: + - columnType: BASE_AXIS + expressionType: SQL + label: segment_start + sqlExpression: segment_start + timeGrain: P1M + custom_form_data: {} + custom_params: {} + extras: + having: '' + time_grain_sqla: P1M + where: '' + filters: + - col: started_at + op: TEMPORAL_RANGE + val: No filter + metrics: + - total_views + - repeat_views + order_desc: true + orderby: + - - total_views + - false + post_processing: + - operation: pivot + options: + aggregates: + repeat_views: + operator: mean + total_views: + operator: mean + columns: [] + drop_missing_columns: false + index: + - segment_start + - operation: flatten + row_limit: 10000 + series_columns: [] + series_limit: 0 + time_offsets: [] + url_params: {} + result_format: json + result_type: full +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/Number_of_Views_across_Video_Duration_a7947b.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml new file mode 100644 index 00000000..7f94bf63 --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml @@ -0,0 +1,168 @@ +_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: "Key result 1\tDefinition and Implementation of Hiring Model for Foreign\ + \ Contractors\tBy November 30, 2024, define and implement the hiring model for the\ + \ 16 foreign contractors, ensuring compliance with local regulations and alignment\ + \ with company policies across all relevant countries.\t\t\t\t\t\t\t\t\t\t\t\t\t\ + \t\t\t\t\t\t\t\t\t\t" +params: + adhoc_filters: + - clause: WHERE + comparator: No filter + expressionType: SIMPLE + operator: TEMPORAL_RANGE + subject: started_at + annotation_layers: [] + color_scheme: supersetColors + comparison_type: values + extra_form_data: {} + forecastInterval: 0.8 + forecastPeriods: 10 + groupby: [] + legendOrientation: top + legendType: scroll + metrics: + - unique_viewers + - repeat_views + 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 + truncateYAxis: false + truncate_metric: true + viz_type: echarts_timeseries_bar + xAxisLabelRotation: 0 + x_axis: segment_start + x_axis_sort_asc: true + x_axis_sort_series: name + x_axis_sort_series_ascending: true + x_axis_time_format: smart_date + x_axis_title: Video Timestamp (in seconds) + x_axis_title_margin: 30 + y_axis_bounds: + - null + - null + y_axis_format: SMART_NUMBER + y_axis_title: Number of Views + y_axis_title_margin: 30 + y_axis_title_position: Left +query_context: + datasource: + id: 18 + type: table + force: false + form_data: + adhoc_filters: + - clause: WHERE + comparator: No filter + expressionType: SIMPLE + operator: TEMPORAL_RANGE + subject: started_at + annotation_layers: [] + color_scheme: supersetColors + comparison_type: values + dashboards: + - 19 + datasource: 18__table + extra_form_data: {} + force: false + forecastInterval: 0.8 + forecastPeriods: 10 + groupby: [] + legendOrientation: top + legendType: scroll + metrics: + - unique_viewers + - repeat_views + only_total: true + order_desc: true + orientation: vertical + result_format: json + result_type: full + rich_tooltip: true + row_limit: 10000 + show_empty_columns: true + show_legend: true + slice_id: 30 + sort_series_type: sum + time_grain_sqla: P1D + tooltipTimeFormat: smart_date + truncateXAxis: true + truncateYAxis: false + truncate_metric: true + viz_type: echarts_timeseries_bar + xAxisLabelRotation: 0 + x_axis: segment_start + x_axis_sort_asc: true + x_axis_sort_series: name + x_axis_sort_series_ascending: true + x_axis_time_format: smart_date + x_axis_title: Video Timestamp (in seconds) + x_axis_title_margin: 30 + y_axis_bounds: + - null + - null + y_axis_format: SMART_NUMBER + y_axis_title: Number of Views + y_axis_title_margin: 30 + y_axis_title_position: Left + queries: + - annotation_layers: [] + applied_time_extras: {} + columns: + - columnType: BASE_AXIS + expressionType: SQL + label: segment_start + sqlExpression: segment_start + timeGrain: P1D + custom_form_data: {} + custom_params: {} + extras: + having: '' + time_grain_sqla: P1D + where: '' + filters: + - col: started_at + op: TEMPORAL_RANGE + val: No filter + metrics: + - unique_viewers + - repeat_views + order_desc: true + orderby: + - - unique_viewers + - false + post_processing: + - operation: pivot + options: + aggregates: + repeat_views: + operator: mean + unique_viewers: + operator: mean + columns: [] + drop_missing_columns: false + index: + - segment_start + - operation: flatten + row_limit: 10000 + series_columns: [] + series_limit: 0 + time_offsets: [] + url_params: {} + result_format: json + result_type: full +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 4fc65b00..c3af59ce 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 4bc23f82..d6221a96 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 452c039c..89d7106e 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_Engagement_per_Section_1d00bb.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Engagement_per_Section_1d00bb.yaml index 29605803..fa32cecf 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 ccabee7d..41fbc9c9 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/Section_Summary_474171.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Section_Summary_474171.yaml index bc38a46f..1901b9cf 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 08a8e189..5009f040 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 d3392d29..9ca7031b 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 f9054a66..9e2ece51 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_8266ce.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_8266ce.yaml index 4eb7b872..36440b80 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 95a3e766..f748731d 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 @@ -50,7 +50,6 @@ params: - section_with_name - subsection_with_name - video_link - - video_name_with_location metrics: - unique_watchers - total_plays @@ -93,7 +92,7 @@ params: viz_type: table query_context: datasource: - id: 62 + id: 30 type: table force: false form_data: @@ -138,15 +137,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 +157,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 +195,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 b4f94b87..14172d62 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 dd936206..cebb2228 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/datasets/course_names.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/course_names.yaml index 743b9f8d..f3edab8c 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,8 @@ 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 8fabcb59..55ada1da 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,8 +179,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/dim_at_risk_learners.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/dim_at_risk_learners.sql' %} {% endfilter %} table_name: dim_at_risk_learners template_params: {} uuid: 92eadc61-2931-577e-95b7-34adb1a8f515 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 d8c34b8e..b3cdbdfd 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,8 +137,8 @@ normalize_columns: false offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/enrollment_status.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/enrollment_status.sql' %} {% endfilter %} table_name: enrollment_status template_params: null uuid: a4b350bd-5ec3-4baf-8835-074d1d6e106e 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 b07b1d06..e9934e29 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,8 +225,8 @@ normalize_columns: false offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_navigation_completion.sql' %}{% endfilter %} +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 uuid: 649ad1d3-c0b4-48e1-a02b-e1d1e80c94ac 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 c2a9b1a1..da379564 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,8 +154,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_pageview_engagement.sql' %}{% endfilter %} +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: {} uuid: dd62315a-42af-4dd0-a245-cce419ac3d8f 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 150a21e1..f0f5b945 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,8 +144,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_problem_engagement.sql' %}{% endfilter %} +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: {} uuid: 0f3f86fe-2973-491d-b01a-986ac06096a3 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 426ca23c..746f9d66 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,8 +144,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_engagement.sql' %}{% endfilter %} +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: {} uuid: cf9fe3a6-f7a3-4951-a669-d8c3845f4d25 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 734b278a..ae6678d3 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,8 +284,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_plays.sql' %}{% endfilter %} +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: {} uuid: 7fe436ef-8a60-4a42-a9d9-39e7cf29ffec 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 16b191d1..70364450 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,8 +224,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_watches.sql' %}{% endfilter %} +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 uuid: b422bdfe-0bbb-4191-888d-d0839878fb31 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 168bada1..48efaed2 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,8 +246,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_watched_video_segments.sql' %}{% endfilter %} +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 uuid: c2f0e842-738d-41a0-9ea6-51e32b7fab82 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 5019f3e5..2e2ed916 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,8 +96,8 @@ normalize_columns: false offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_enrollment_pii.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_enrollment_pii.sql' %} {% endfilter %} table_name: fact_enrollment_pii template_params: null uuid: 64427d2b-790e-450f-84f4-5f00ca9bdc6c 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 81fa8654..949484a7 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,8 +137,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_enrollments.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_enrollments.sql' %} {% endfilter %} table_name: fact_enrollments template_params: {} uuid: a234545d-08ff-480d-8361-961c3d15f14f 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 93ad44fe..78f9ece3 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,8 +226,8 @@ normalize_columns: false offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_navigation_completion.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_navigation_completion.sql' %} {% endfilter %} table_name: fact_navigation_completion template_params: null uuid: 1b1cbf0a-1193-4251-ad52-724c2f0190ae 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 68668cd2..eb65d452 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,8 +176,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_page_engagement.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_page_engagement.sql' %} {% endfilter %} table_name: fact_pageview_engagement template_params: {} uuid: 9febd6be-5102-4dbf-86b9-45ebd3cbbc45 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 176d5cce..59cc3818 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,8 +176,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_problem_engagement.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_problem_engagement.sql' %} {% endfilter %} table_name: fact_problem_engagement template_params: {} uuid: 171c88e5-fd4b-4aab-b287-361fa6fa5415 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 b0367c62..3d39fc17 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,8 @@ 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_video_engagement.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_video_engagement.yaml index 5dcfdc01..249995d2 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,8 +176,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_engagement.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_video_engagement.sql' %} {% endfilter %} table_name: fact_video_engagement template_params: {} uuid: 247a55b3-d44e-442e-ba92-71bf7976b192 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 525e9adf..b551a302 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,8 +297,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_plays.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_video_plays.sql' %} {% endfilter %} table_name: fact_video_plays template_params: {} uuid: 6ec360a5-e247-42e7-b301-fa8275fc93f9 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 4c9ad6e0..aa86e614 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 @@ -144,10 +144,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: String + type: LowCardinality(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,19 @@ columns: is_dttm: false python_date_format: null type: String - verbose_name: Name + verbose_name: Username +- advanced_data_type: null + column_name: video_link + description: null + expression: null + extra: {} + filterable: true + groupby: true + is_active: true + is_dttm: false + python_date_format: null + type: String + verbose_name: Video Link database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6 default_endpoint: null description: null @@ -244,8 +256,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_watches.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_video_watches.sql' %} {% endfilter %} table_name: fact_video_watches template_params: null uuid: d0070c9a-5b1c-4e52-867b-79aa46a8cdcf 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 c98f9d2a..2fe5b412 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,8 +268,8 @@ normalize_columns: true offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_watched_video_segments.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_watched_video_segments.sql' %} {% endfilter %} table_name: fact_watched_video_segments template_params: null uuid: c2c391b3-3403-4f05-bc0b-3de53bd366ec 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 8fcb371e..d8b0f7c2 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,8 +337,8 @@ normalize_columns: false offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/int_problem_results.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/int_problem_results.sql' %} {% endfilter %} table_name: int_problem_results template_params: null uuid: c0c8b8a3-b18a-4c17-a69b-e6befea0159d 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 74433879..4437e084 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,8 +204,8 @@ normalize_columns: false offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' -sql: |- - {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_learner_summary.sql' %}{% endfilter %} +sql: | + {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_learner_summary.sql' %} {% endfilter %} table_name: learner_summary template_params: null uuid: da75efef-09ba-4ed0-8b6b-bf11c5c26008 From f3310262429ed14cf75256883124a8fbc5d02cf7 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 12:20:51 -0500 Subject: [PATCH 02/10] feat: import dasboard changes for UI de-clutter --- .../charts/Course_Information_fa249d.yaml | 33 +- .../charts/Problem_Attempts_6df964.yaml | 278 +++++++ .../Problem_Attempts_and_Results_ba14d2.yaml | 314 ++++++++ .../charts/Problem_Attempts_d3b9fa.yaml | 225 +----- .../assets/charts/Problem_Results_003e60.yaml | 205 ++--- .../assets/charts/Problem_Results_3b70ae.yaml | 469 +++++++++++ .../assets/dashboards/At-Risk_Learners.yaml | 752 +++++++++--------- .../assets/dashboards/Course_Dashboard.yaml | 719 ++++++++--------- .../assets/dashboards/Individual_Learner.yaml | 566 +++++++------ .../datasets/at_risk_coursewide_avg.yaml | 549 +++++++++++++ .../assets/datasets/course_names.yaml | 5 +- .../assets/datasets/fact_student_status.yaml | 5 +- .../fact_student_status_plus_7_days.yaml | 266 +++++++ .../datasets/problem_coursewide_avg.yaml | 582 ++++++++++++++ 14 files changed, 3599 insertions(+), 1369 deletions(-) create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_6df964.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_and_Results_ba14d2.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_3b70ae.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/at_risk_coursewide_avg.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status_plus_7_days.yaml create mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/problem_coursewide_avg.yaml 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 1da63f21..8fe7c3e7 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: @@ -22,14 +22,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 +53,7 @@ params: - course_name - course_run metrics: + - active_within - avg_course_grade - median_course_grade order_by_cols: [] @@ -74,7 +70,7 @@ params: viz_type: table query_context: datasource: - id: 54 + id: 38 type: table force: false form_data: @@ -95,14 +91,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 +116,8 @@ query_context: operator: < targetValue: 50 dashboards: - - 28 - datasource: 54__table + - 17 + datasource: 38__table extra_form_data: {} force: false groupby: @@ -135,6 +126,7 @@ query_context: - course_name - course_run metrics: + - active_within - avg_course_grade - median_course_grade order_by_cols: [] @@ -146,7 +138,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 +163,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/Problem_Attempts_6df964.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_6df964.yaml new file mode 100644 index 00000000..3bd86de2 --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_6df964.yaml @@ -0,0 +1,278 @@ +_file_name: Problem_Attempts_6df964.yaml +cache_timeout: null +certification_details: null +certified_by: null +dataset_uuid: b820067f-8f54-48d4-9b61-532e8f9ae6fe +description: Coursewide averages 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: true + column_config: + correct_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + incorrect_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + conditional_formatting: + - colorScheme: '#ACE1C4' + column: correct_percent + operator: "\u2265" + targetValue: 0 + - colorScheme: '#EFA1AA' + column: incorrect_percent + operator: "\u2265" + targetValue: 0 + extra_form_data: {} + groupby: + - datasourceWarning: false + expressionType: SQL + label: Problem Link + sqlExpression: problem_link + - datasourceWarning: false + expressionType: SQL + label: Graded + sqlExpression: |- + {% raw %}{{translate_column_bool('graded')}}{% endraw %} + metrics: + - avg_correct_attempts_coursewide + - correct_attempts_by_learner + - avg_incorrect_attempts_coursewide + - incorrect_attempts_by_learner + order_by_cols: [] + order_desc: false + percent_metrics: [] + query_mode: aggregate + row_limit: 1000 + server_page_length: 10 + server_pagination: false + show_cell_bars: true + 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: true + column_config: + correct_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + incorrect_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + conditional_formatting: + - colorScheme: '#ACE1C4' + column: correct_percent + operator: "\u2265" + targetValue: 0 + - colorScheme: '#EFA1AA' + column: incorrect_percent + operator: "\u2265" + targetValue: 0 + dashboards: + - 18 + datasource: 37__table + extra_form_data: {} + force: false + groupby: + - datasourceWarning: false + expressionType: SQL + label: Problem Link + sqlExpression: problem_link + - datasourceWarning: false + expressionType: SQL + label: Graded + sqlExpression: |- + {% raw %}{{translate_column_bool('graded')}}{% endraw %} + metrics: + - avg_correct_attempts_coursewide + - correct_attempts_by_learner + - avg_incorrect_attempts_coursewide + - incorrect_attempts_by_learner + 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: true + show_totals: false + slice_id: 16 + 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: + - datasourceWarning: false + 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: + - avg_correct_attempts_coursewide + - correct_attempts_by_learner + - avg_incorrect_attempts_coursewide + - incorrect_attempts_by_learner + 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 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_and_Results_ba14d2.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_and_Results_ba14d2.yaml new file mode 100644 index 00000000..557c9a2a --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_and_Results_ba14d2.yaml @@ -0,0 +1,314 @@ +_file_name: Problem_Attempts_and_Results_ba14d2.yaml +cache_timeout: null +certification_details: null +certified_by: null +dataset_uuid: c0c8b8a3-b18a-4c17-a69b-e6befea0159d +description: null +params: + adhoc_filters: + - clause: WHERE + comparator: No filter + datasourceWarning: false + expressionType: SIMPLE + filterOptionName: filter_qqnzi3klvaa_mtbj67olly + isExtra: false + isNew: false + operator: TEMPORAL_RANGE + sqlExpression: null + subject: emission_time + all_columns: [] + color_pn: true + column_config: + correct_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + incorrect_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + conditional_formatting: + - colorScheme: '#ACE1C4' + column: avg_attemps + operator: < + targetValue: 2 + - colorScheme: '#FDE380' + column: avg_attemps + operator: "\u2264 x \u2264" + targetValueLeft: '2' + targetValueRight: '4' + - colorScheme: '#EFA1AA' + column: avg_attemps + operator: '>' + targetValue: 4 + - colorScheme: '#ACE1C4' + column: median_attemps + operator: < + targetValue: 3 + - colorScheme: '#FDE380' + column: median_attemps + operator: "\u2264 x \u2264" + targetValueLeft: '3' + targetValueRight: '5' + - colorScheme: '#EFA1AA' + column: median_attemps + operator: '>' + targetValue: 5 + extra_form_data: {} + groupby: + - problem_link + - datasourceWarning: false + expressionType: SQL + label: Graded + sqlExpression: |- + {% raw %}{{translate_column_bool('graded')}}{% endraw %} + metrics: + - number_of_learners + - median_attemps + - avg_attemps + - correct_attempts + - incorrect_attempts + - correct_percent + - incorrect_percent + order_by_cols: [] + order_desc: false + percent_metrics: [] + query_mode: aggregate + row_limit: 1000 + server_page_length: 10 + show_cell_bars: true + 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 + changed_on: '2024-05-23T00:19:51' + column_name: course_order + created_on: '2024-05-23T00:19:51' + description: null + expression: null + extra: '{}' + filterable: true + groupby: true + id: 1348 + is_active: true + is_dttm: false + python_date_format: null + type: Int32 + type_generic: 0 + uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a + verbose_name: null + datasourceWarning: false + expressionType: SIMPLE + hasCustomLabel: false + label: AVG(course_order) + optionName: metric_fy7mao4qznk_sumf5x11o8i + sqlExpression: null + viz_type: table +query_context: + datasource: + id: 34 + type: table + force: false + form_data: + adhoc_filters: + - clause: WHERE + comparator: No filter + datasourceWarning: false + expressionType: SIMPLE + filterOptionName: filter_qqnzi3klvaa_mtbj67olly + isExtra: false + isNew: false + operator: TEMPORAL_RANGE + sqlExpression: null + subject: emission_time + all_columns: [] + color_pn: true + column_config: + correct_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + incorrect_percent: + d3NumberFormat: ',.1%' + d3SmallNumberFormat: ',.1%' + conditional_formatting: + - colorScheme: '#ACE1C4' + column: avg_attemps + operator: < + targetValue: 2 + - colorScheme: '#FDE380' + column: avg_attemps + operator: "\u2264 x \u2264" + targetValueLeft: '2' + targetValueRight: '4' + - colorScheme: '#EFA1AA' + column: avg_attemps + operator: '>' + targetValue: 4 + - colorScheme: '#ACE1C4' + column: median_attemps + operator: < + targetValue: 3 + - colorScheme: '#FDE380' + column: median_attemps + operator: "\u2264 x \u2264" + targetValueLeft: '3' + targetValueRight: '5' + - colorScheme: '#EFA1AA' + column: median_attemps + operator: '>' + targetValue: 5 + dashboards: + - 17 + datasource: 34__table + extra_form_data: {} + force: false + groupby: + - problem_link + - datasourceWarning: false + expressionType: SQL + label: Graded + sqlExpression: |- + {% raw %}{{translate_column_bool('graded')}}{% endraw %} + metrics: + - number_of_learners + - median_attemps + - avg_attemps + - correct_attempts + - incorrect_attempts + - correct_percent + - incorrect_percent + order_by_cols: [] + order_desc: false + percent_metrics: [] + query_mode: aggregate + result_format: json + result_type: full + row_limit: 1000 + server_page_length: 10 + show_cell_bars: true + slice_id: 7 + 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 + changed_on: '2024-05-23T00:19:51' + column_name: course_order + created_on: '2024-05-23T00:19:51' + description: null + expression: null + extra: '{}' + filterable: true + groupby: true + id: 1348 + is_active: true + is_dttm: false + python_date_format: null + type: Int32 + type_generic: 0 + uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a + verbose_name: null + datasourceWarning: false + expressionType: SIMPLE + hasCustomLabel: false + label: AVG(course_order) + optionName: metric_fy7mao4qznk_sumf5x11o8i + sqlExpression: null + viz_type: table + queries: + - annotation_layers: [] + applied_time_extras: {} + columns: + - 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: + - number_of_learners + - median_attemps + - avg_attemps + - correct_attempts + - incorrect_attempts + - correct_percent + - incorrect_percent + order_desc: false + orderby: + - - aggregate: AVG + column: + advanced_data_type: null + changed_on: '2024-05-23T00:19:51' + column_name: course_order + created_on: '2024-05-23T00:19:51' + description: null + expression: null + extra: '{}' + filterable: true + groupby: true + id: 1348 + is_active: true + is_dttm: false + python_date_format: null + type: Int32 + type_generic: 0 + uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a + verbose_name: null + datasourceWarning: false + expressionType: SIMPLE + hasCustomLabel: false + label: AVG(course_order) + optionName: metric_fy7mao4qznk_sumf5x11o8i + sqlExpression: null + - true + post_processing: [] + row_limit: 1000 + series_limit: 0 + series_limit_metric: + aggregate: AVG + column: + advanced_data_type: null + changed_on: '2024-05-23T00:19:51' + column_name: course_order + created_on: '2024-05-23T00:19:51' + description: null + expression: null + extra: '{}' + filterable: true + groupby: true + id: 1348 + is_active: true + is_dttm: false + python_date_format: null + type: Int32 + type_generic: 0 + uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a + verbose_name: null + datasourceWarning: false + expressionType: SIMPLE + hasCustomLabel: false + label: AVG(course_order) + optionName: metric_fy7mao4qznk_sumf5x11o8i + sqlExpression: null + url_params: {} + result_format: json + result_type: full +slice_name: Problem Attempts and Results +uuid: ba14d2ea-8c53-4f79-aa1b-434011f3c725 +version: 1.0.0 +viz_type: table 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 c857ea1b..a1165f93 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,13 +144,15 @@ 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 sqlExpression: |- - {% raw %}{{translate_column_bool('graded')}}{% endraw %} + {{translate_column_bool('graded')}} custom_form_data: {} custom_params: {} extras: @@ -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_Results_003e60.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_003e60.yaml index 41d1e746..0bcd36ca 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 00000000..40d7e882 --- /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/dashboards/At-Risk_Learners.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/At-Risk_Learners.yaml index 397dc107..a4aa404a 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 + default_filters: '{}' expanded_slices: {} 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_Dashboard.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Dashboard.yaml index f26c9b40..0035669c 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': + '1': crossFilters: chartsInScope: - - 5 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 100 - '104': + id: 1 + '10': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 238 + - 9 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 104 - '22': + id: 10 + '11': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 22 - '238': + id: 11 + '15': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 + - 9 + - 10 + - 11 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 238 - '30': + id: 15 + '18': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 30 - '41': + id: 18 + '2': crossFilters: chartsInScope: - - 5 + - 1 - 7 - - 8 - - 22 - - 30 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 41 - '5': + id: 2 + '20': crossFilters: chartsInScope: + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 5 - '59': + id: 20 + '23': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 59 - '62': + id: 23 + '25': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 62 - '63': + id: 25 + '40': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 43 + - 49 + - 52 + - 56 scope: global - id: 63 - '7': - crossFilters: - chartsInScope: - - 5 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 - scope: global - id: 7 - '86': + id: 40 + '43': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 49 + - 52 + - 56 scope: global - id: 86 - '87': + id: 43 + '49': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 52 + - 56 scope: global - id: 87 - '90': + id: 49 + '52': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 56 scope: global - id: 90 - '92': + id: 52 + '7': crossFilters: chartsInScope: - - 5 - - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 95 - - 100 - - 104 - - 238 + - 1 + - 2 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 92 - '95': + id: 7 + '9': crossFilters: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 100 - - 104 - - 238 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: global - id: 95 + id: 9 color_scheme: supersetColors color_scheme_domain: - '#1FA8C9' @@ -387,53 +350,52 @@ metadata: expanded_slices: {} global_chart_configuration: chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 scope: excluded: [] rootPath: - ROOT_ID label_colors: {} native_filter_configuration: - - cascadeParentIds: [] + - cascadeParentIds: + - NATIVE_FILTER-IfS-Rd0ZS chartsInScope: - - 5 + - 1 + - 2 - 7 - - 8 - - 22 - - 30 - - 41 - - 59 - - 62 - - 63 - - 83 - - 86 - - 87 - - 90 - - 92 - - 95 - - 100 - - 104 - - 238 + - 9 + - 10 + - 11 + - 15 + - 18 + - 20 + - 21 + - 23 + - 25 + - 40 + - 43 + - 49 + - 52 + - 56 controlValues: - defaultToFirstItem: true - enableEmptyFilter: true + defaultToFirstItem: false + enableEmptyFilter: false inverseSelection: false multiSelect: false searchAllOptions: false @@ -445,7 +407,6 @@ metadata: filterType: filter_select id: NATIVE_FILTER-QrTlO4wBf name: Organization - requiredFirst: true scope: excluded: [] rootPath: @@ -602,10 +563,10 @@ metadata: name: Date scope: excluded: - - 104 - - 7 - - 22 - - 59 + - 52 + - 23 + - 10 + - 2 rootPath: - TAB-4ptSkqs5MS - TAB-_Ey4nPhFr @@ -642,17 +603,17 @@ metadata: name: Time Grain scope: excluded: - - 86 - - 92 - - 100 - - 104 - 7 - - 22 - - 59 - - 90 - - 41 - - 63 - - 87 + - 16 + - 9 + - 52 + - 23 + - 10 + - 2 + - 1 + - 40 + - 25 + - 15 rootPath: - TAB-4ptSkqs5MS - TAB-_Ey4nPhFr @@ -665,14 +626,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: 18 height: 50 sliceName: Page Engagement Over Time uuid: d7bfef35-d35a-405f-ae59-73472845cd59 @@ -690,29 +660,11 @@ position: children: [] id: CHART-explore-119-1 meta: - chartId: 86 + chartId: 7 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 +678,9 @@ position: children: [] id: CHART-explore-121-1 meta: - chartId: 100 + chartId: 9 height: 54 - sliceName: Watched Video Segments + sliceName: Number of Views across Video Duration uuid: 2985a9db-c338-4008-af52-2930b81ee2e5 width: 12 parents: @@ -744,7 +696,7 @@ position: children: [] id: CHART-explore-122-1 meta: - chartId: 104 + chartId: 52 height: 53 sliceName: Partial and Full Video Views uuid: bfffb9fe-07bd-4b2f-b437-522d45f6cd2c @@ -762,7 +714,7 @@ position: children: [] id: CHART-explore-123-1 meta: - chartId: 7 + chartId: 23 height: 61 sliceName: Page Engagement per Section/Subsection uuid: bf2d6219-d633-48c1-a9b5-742eac6a4c0a @@ -780,7 +732,7 @@ position: children: [] id: CHART-explore-124-1 meta: - chartId: 95 + chartId: 11 height: 50 sliceName: Distribution of Current Course Grade uuid: ea565658-6796-40e8-9d1e-01ffd0778bc9 @@ -797,7 +749,7 @@ position: children: [] id: CHART-explore-125-1 meta: - chartId: 22 + chartId: 10 height: 61 sliceName: Problem Engagement per Section/Subsection uuid: 8cdcd4aa-1fa2-41dc-b38d-f1112134592e @@ -815,7 +767,7 @@ position: children: [] id: CHART-explore-126-1 meta: - chartId: 59 + chartId: 2 height: 69 sliceName: Video Engagement per Section/Subsection uuid: c1f77432-e55f-4473-b7d0-7a1c3976e6a8 @@ -833,7 +785,7 @@ position: children: [] id: CHART-explore-127-1 meta: - chartId: 90 + chartId: 1 height: 39 sliceName: Video Engagement uuid: c8c363f8-8dbc-4a78-841d-4976f4404884 @@ -851,7 +803,7 @@ position: children: [] id: CHART-explore-128-1 meta: - chartId: 5 + chartId: 49 height: 29 sliceName: Course Information uuid: fa249dda-78da-4ccc-9ef3-39177e6aae0c @@ -865,7 +817,7 @@ position: children: [] id: CHART-explore-129-1 meta: - chartId: 83 + chartId: 56 height: 27 sliceName: Learners with Passing Grade uuid: b40cdabc-b265-48d2-913d-a9dfee0b6ab1 @@ -882,7 +834,7 @@ position: children: [] id: CHART-explore-185-1 meta: - chartId: 8 + chartId: 21 height: 29 sliceName: Current Enrollees uuid: 00de2f72-b3ed-4994-b231-fd3cf29d758d @@ -896,7 +848,7 @@ position: children: [] id: CHART-explore-188-1 meta: - chartId: 41 + chartId: 40 height: 51 sliceName: Enrollees per Enrollment Track uuid: e584199e-0ed6-42bf-afb9-db3b9fe4132b @@ -912,7 +864,7 @@ position: children: [] id: CHART-explore-189-1 meta: - chartId: 30 + chartId: 20 height: 51 sliceName: Cumulative Enrollments by Track uuid: f207c896-030a-462b-b69f-6416230d50b6 @@ -929,7 +881,7 @@ position: children: [] id: CHART-explore-191-1 meta: - chartId: 63 + chartId: 25 height: 50 sliceName: Section Summary uuid: 47417136-acd1-44a1-b41e-644eb2c237c3 @@ -947,7 +899,7 @@ position: children: [] id: CHART-explore-192-1 meta: - chartId: 87 + chartId: 15 height: 50 sliceName: Subsection Summary uuid: 2a8d96be-687d-4918-98fe-ae9fbd599152 @@ -965,7 +917,7 @@ position: children: [] id: CHART-explore-195-1 meta: - chartId: 62 + chartId: 43 height: 50 sliceName: Cumulative Interactions uuid: c44e43b5-ba69-4805-8d01-3b04dcbf2cb6 @@ -1156,7 +1108,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 a989281f..010fa03b 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 + default_filters: '{}' expanded_slices: {} 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 00000000..dd7ee0bc --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/at_risk_coursewide_avg.yaml @@ -0,0 +1,549 @@ +_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: | + with + successful_responses as ( + select + org, course_key, problem_id, actor_id::String as actor_id, first_success_at + from xapi.responses + where + isNotNull(first_success_at) + {% if filter_values("org") != [] %} + and org in {{ filter_values("org") | where_in }} + {% endif %} + {% if filter_values("course_name") != [] %} + and course_key in ( + select course_key + from event_sink.course_names + where course_name in {{ filter_values("course_name") | where_in }} + ) + {% endif %} + ), + unsuccessful_responses as ( + select + org, + course_key, + problem_id, + actor_id::String as actor_id, + max(last_attempt_at) as last_attempt_at + from xapi.responses + where + actor_id not in (select distinct actor_id from successful_responses) + {% if filter_values("org") != [] %} + and org in {{ filter_values("org") | where_in }} + {% endif %} + {% if filter_values("course_name") != [] %} + and course_key in ( + select course_key + from event_sink.course_names + where course_name in {{ filter_values("course_name") | where_in }} + ) + {% endif %} + 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 xapi.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 + reporting.dim_course_blocks blocks + on ( + full_responses.course_key = blocks.course_key + and full_responses.problem_id = blocks.block_id + ) + left outer join + event_sink.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 + ; +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 f3edab8c..61bb1335 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,8 +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/fact_student_status.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status.yaml index 3d39fc17..443a9ff2 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,8 +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 00000000..292e377b --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/fact_student_status_plus_7_days.yaml @@ -0,0 +1,266 @@ +_file_name: fact_student_status_plus_7_days.yaml +always_filter_main_dttm: false +cache_timeout: null +columns: +- 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: 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: 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: 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: 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_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: 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: 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: 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: 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 +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: 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: 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: 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: | + with + recent_activity as ( + select course_key, COUNT(DISTINCT actor_id) as active_last_7_days + from `reporting`.`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 `reporting`.`fact_student_status` fss + left join recent_activity ra on fss.course_key = ra.course_key + ; +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/problem_coursewide_avg.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/problem_coursewide_avg.yaml new file mode 100644 index 00000000..b7c44efb --- /dev/null +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/datasets/problem_coursewide_avg.yaml @@ -0,0 +1,582 @@ +_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: | + with + successful_responses as ( + select + org, course_key, problem_id, actor_id::String as actor_id, first_success_at + from xapi.responses + where + isNotNull(first_success_at) + {% if filter_values("org") != [] %} + and org in {{ filter_values("org") | where_in }} + {% endif %} + + {% if filter_values("course_name") != [] %} + and course_key in ( + select course_key + from event_sink.course_names + where course_name in {{ filter_values("course_name") | where_in }} + ) + {% endif %} + ), + unsuccessful_responses as ( + select + org, + course_key, + problem_id, + actor_id::String as actor_id, + max(last_attempt_at) as last_attempt_at + from xapi.responses + where + actor_id not in (select distinct actor_id from successful_responses) + {% if filter_values("org") != [] %} + and org in {{ filter_values("org") | where_in }} + {% endif %} + + {% if filter_values("course_name") != [] %} + and course_key in ( + select course_key + from event_sink.course_names + where course_name in {{ filter_values("course_name") | where_in }} + ) + {% endif %} + 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 xapi.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 + reporting.dim_course_blocks blocks + on ( + full_responses.course_key = blocks.course_key + and full_responses.problem_id = blocks.block_id + ) + left outer join + event_sink.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 +table_name: problem_coursewide_avg +template_params: null +uuid: b820067f-8f54-48d4-9b61-532e8f9ae6fe +version: 1.0.0 From 36dca8b553c0e272f888d7311b8ed80aaec413ed Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 12:34:39 -0500 Subject: [PATCH 03/10] fix: split datasets and their sql --- .../charts/Problem_Attempts_d3b9fa.yaml | 2 +- .../datasets/at_risk_coursewide_avg.yaml | 149 +----------------- .../fact_student_status_plus_7_days.yaml | 13 +- .../datasets/problem_coursewide_avg.yaml | 147 +---------------- .../queries/active_last_7_days.sql | 11 ++ .../at_risk_problem_coursewide_avg.sql | 131 +++++++++++++++ .../queries/problem_coursewide_avg.sql | 127 +++++++++++++++ 7 files changed, 273 insertions(+), 307 deletions(-) create mode 100644 tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql create mode 100644 tutoraspects/templates/openedx-assets/queries/at_risk_problem_coursewide_avg.sql create mode 100644 tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql 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 a1165f93..fbf4d6fb 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 @@ -152,7 +152,7 @@ query_context: expressionType: SQL label: Graded sqlExpression: |- - {{translate_column_bool('graded')}} + {% raw %}{{translate_column_bool('graded')}}{% endraw %} custom_form_data: {} custom_params: {} extras: 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 index dd7ee0bc..7be8f4cf 100644 --- 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 @@ -395,154 +395,7 @@ offset: 0 params: null schema: null sql: | - with - successful_responses as ( - select - org, course_key, problem_id, actor_id::String as actor_id, first_success_at - from xapi.responses - where - isNotNull(first_success_at) - {% if filter_values("org") != [] %} - and org in {{ filter_values("org") | where_in }} - {% endif %} - {% if filter_values("course_name") != [] %} - and course_key in ( - select course_key - from event_sink.course_names - where course_name in {{ filter_values("course_name") | where_in }} - ) - {% endif %} - ), - unsuccessful_responses as ( - select - org, - course_key, - problem_id, - actor_id::String as actor_id, - max(last_attempt_at) as last_attempt_at - from xapi.responses - where - actor_id not in (select distinct actor_id from successful_responses) - {% if filter_values("org") != [] %} - and org in {{ filter_values("org") | where_in }} - {% endif %} - {% if filter_values("course_name") != [] %} - and course_key in ( - select course_key - from event_sink.course_names - where course_name in {{ filter_values("course_name") | where_in }} - ) - {% endif %} - 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 xapi.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 - reporting.dim_course_blocks blocks - on ( - full_responses.course_key = blocks.course_key - and full_responses.problem_id = blocks.block_id - ) - left outer join - event_sink.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 - ; + {% 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 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 index 292e377b..c420a32d 100644 --- 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 @@ -248,18 +248,7 @@ offset: 0 params: null schema: null sql: | - with - recent_activity as ( - select course_key, COUNT(DISTINCT actor_id) as active_last_7_days - from `reporting`.`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 `reporting`.`fact_student_status` fss - left join recent_activity ra on fss.course_key = ra.course_key - ; + {% 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 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 index b7c44efb..4a3eb99c 100644 --- 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 @@ -430,152 +430,7 @@ offset: 0 params: null schema: null sql: | - with - successful_responses as ( - select - org, course_key, problem_id, actor_id::String as actor_id, first_success_at - from xapi.responses - where - isNotNull(first_success_at) - {% if filter_values("org") != [] %} - and org in {{ filter_values("org") | where_in }} - {% endif %} - - {% if filter_values("course_name") != [] %} - and course_key in ( - select course_key - from event_sink.course_names - where course_name in {{ filter_values("course_name") | where_in }} - ) - {% endif %} - ), - unsuccessful_responses as ( - select - org, - course_key, - problem_id, - actor_id::String as actor_id, - max(last_attempt_at) as last_attempt_at - from xapi.responses - where - actor_id not in (select distinct actor_id from successful_responses) - {% if filter_values("org") != [] %} - and org in {{ filter_values("org") | where_in }} - {% endif %} - - {% if filter_values("course_name") != [] %} - and course_key in ( - select course_key - from event_sink.course_names - where course_name in {{ filter_values("course_name") | where_in }} - ) - {% endif %} - 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 xapi.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 - reporting.dim_course_blocks blocks - on ( - full_responses.course_key = blocks.course_key - and full_responses.problem_id = blocks.block_id - ) - left outer join - event_sink.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 + {% 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 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 00000000..34e98504 --- /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 {{DBT_PROFILE_TARGET_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 00000000..dfaa4089 --- /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/problem_coursewide_avg.sql b/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql new file mode 100644 index 00000000..cb8b11d6 --- /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 \ No newline at end of file From b171222e28640f6e779148aa18c48c54e55eb852 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 12:44:55 -0500 Subject: [PATCH 04/10] fix: remove trailing whitespace for include statements --- .../assets/datasets/at_risk_coursewide_avg.yaml | 2 +- .../assets/datasets/dim_at_risk_learners.yaml | 2 +- .../assets/datasets/enrollment_status.yaml | 2 +- .../datasets/fact_at_risk_navigation_completion.yaml | 2 +- .../datasets/fact_at_risk_pageview_engagement.yaml | 2 +- .../datasets/fact_at_risk_problem_engagement.yaml | 2 +- .../datasets/fact_at_risk_video_engagement.yaml | 2 +- .../assets/datasets/fact_at_risk_video_plays.yaml | 2 +- .../assets/datasets/fact_at_risk_video_watches.yaml | 2 +- .../fact_at_risk_watched_video_segments.yaml | 2 +- .../assets/datasets/fact_enrollment_pii.yaml | 2 +- .../assets/datasets/fact_enrollments.yaml | 2 +- .../assets/datasets/fact_navigation_completion.yaml | 2 +- .../assets/datasets/fact_pageview_engagement.yaml | 2 +- .../assets/datasets/fact_problem_engagement.yaml | 2 +- .../datasets/fact_student_status_plus_7_days.yaml | 2 +- .../assets/datasets/fact_video_engagement.yaml | 2 +- .../assets/datasets/fact_video_plays.yaml | 2 +- .../assets/datasets/fact_video_watches.yaml | 2 +- .../assets/datasets/fact_watched_video_segments.yaml | 2 +- .../assets/datasets/int_problem_results.yaml | 2 +- .../assets/datasets/learner_summary.yaml | 2 +- .../assets/datasets/problem_coursewide_avg.yaml | 2 +- .../openedx-assets/queries/active_last_7_days.sql | 4 ++-- .../queries/at_risk_problem_coursewide_avg.sql | 10 +++++----- .../openedx-assets/queries/enrollment_status.sql | 1 - .../queries/problem_coursewide_avg.sql | 12 ++++++------ 27 files changed, 36 insertions(+), 37 deletions(-) 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 index 7be8f4cf..32503c5f 100644 --- 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 @@ -395,7 +395,7 @@ offset: 0 params: null schema: null sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/at_risk_problem_coursewide_avg.sql' %} {% endfilter %} + {% 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 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 55ada1da..de84ef8c 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 @@ -180,7 +180,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/dim_at_risk_learners.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/dim_at_risk_learners.sql' %}{% endfilter %} table_name: dim_at_risk_learners template_params: {} uuid: 92eadc61-2931-577e-95b7-34adb1a8f515 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 b3cdbdfd..072f7363 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 @@ -138,7 +138,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/enrollment_status.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/enrollment_status.sql' %}{% endfilter %} table_name: enrollment_status template_params: null uuid: a4b350bd-5ec3-4baf-8835-074d1d6e106e 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 e9934e29..0b6f022d 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 @@ -226,7 +226,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_navigation_completion.sql' %} {% endfilter %} + {% 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 uuid: 649ad1d3-c0b4-48e1-a02b-e1d1e80c94ac 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 da379564..40648b31 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 @@ -155,7 +155,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_pageview_engagement.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_pageview_engagement.sql' %}{% endfilter %} table_name: fact_at_risk_pageview_engagement template_params: {} uuid: dd62315a-42af-4dd0-a245-cce419ac3d8f 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 f0f5b945..2e552921 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 @@ -145,7 +145,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_problem_engagement.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_problem_engagement.sql' %}{% endfilter %} table_name: fact_at_risk_problem_engagement template_params: {} uuid: 0f3f86fe-2973-491d-b01a-986ac06096a3 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 746f9d66..f5023d6e 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 @@ -145,7 +145,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_video_engagement.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_engagement.sql' %}{% endfilter %} table_name: fact_at_risk_video_engagement template_params: {} uuid: cf9fe3a6-f7a3-4951-a669-d8c3845f4d25 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 ae6678d3..d194b288 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 @@ -285,7 +285,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_video_plays.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_at_risk_video_plays.sql' %}{% endfilter %} table_name: fact_at_risk_video_plays template_params: {} uuid: 7fe436ef-8a60-4a42-a9d9-39e7cf29ffec 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 70364450..6b71a4c7 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 @@ -225,7 +225,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_video_watches.sql' %} {% endfilter %} + {% 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 uuid: b422bdfe-0bbb-4191-888d-d0839878fb31 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 48efaed2..bca01990 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 @@ -247,7 +247,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_at_risk_watched_video_segments.sql' %} {% endfilter %} + {% 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 uuid: c2f0e842-738d-41a0-9ea6-51e32b7fab82 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 2e2ed916..4a4b9863 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 @@ -97,7 +97,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_enrollment_pii.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_enrollment_pii.sql' %}{% endfilter %} table_name: fact_enrollment_pii template_params: null uuid: 64427d2b-790e-450f-84f4-5f00ca9bdc6c 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 949484a7..a5e56cbc 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 @@ -138,7 +138,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_enrollments.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_enrollments.sql' %}{% endfilter %} table_name: fact_enrollments template_params: {} uuid: a234545d-08ff-480d-8361-961c3d15f14f 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 78f9ece3..a4395af6 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 @@ -227,7 +227,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_navigation_completion.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_navigation_completion.sql' %}{% endfilter %} table_name: fact_navigation_completion template_params: null uuid: 1b1cbf0a-1193-4251-ad52-724c2f0190ae 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 eb65d452..c7842171 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 @@ -177,7 +177,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_page_engagement.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_page_engagement.sql' %}{% endfilter %} table_name: fact_pageview_engagement template_params: {} uuid: 9febd6be-5102-4dbf-86b9-45ebd3cbbc45 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 59cc3818..5ca0b013 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 @@ -177,7 +177,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_problem_engagement.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_problem_engagement.sql' %}{% endfilter %} table_name: fact_problem_engagement template_params: {} uuid: 171c88e5-fd4b-4aab-b287-361fa6fa5415 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 index c420a32d..06fb5f7e 100644 --- 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 @@ -248,7 +248,7 @@ offset: 0 params: null schema: null sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/active_last_7_days.sql' %} {% endfilter %} + {% 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 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 249995d2..7947cec7 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 @@ -177,7 +177,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_video_engagement.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_engagement.sql' %}{% endfilter %} table_name: fact_video_engagement template_params: {} uuid: 247a55b3-d44e-442e-ba92-71bf7976b192 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 b551a302..d201a455 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 @@ -298,7 +298,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_video_plays.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_plays.sql' %}{% endfilter %} table_name: fact_video_plays template_params: {} uuid: 6ec360a5-e247-42e7-b301-fa8275fc93f9 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 aa86e614..8db3a967 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 @@ -257,7 +257,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_video_watches.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_video_watches.sql' %}{% endfilter %} table_name: fact_video_watches template_params: null uuid: d0070c9a-5b1c-4e52-867b-79aa46a8cdcf 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 2fe5b412..20ac1d2e 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 @@ -269,7 +269,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_watched_video_segments.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_watched_video_segments.sql' %}{% endfilter %} table_name: fact_watched_video_segments template_params: null uuid: c2c391b3-3403-4f05-bc0b-3de53bd366ec 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 d8b0f7c2..2303b643 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 @@ -338,7 +338,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/int_problem_results.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/int_problem_results.sql' %}{% endfilter %} table_name: int_problem_results template_params: null uuid: c0c8b8a3-b18a-4c17-a69b-e6befea0159d 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 4437e084..dcde2cc5 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 @@ -205,7 +205,7 @@ offset: 0 params: null schema: '{{ DBT_PROFILE_TARGET_DATABASE }}' sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/fact_learner_summary.sql' %} {% endfilter %} + {% filter indent(width=2) %}{% include 'openedx-assets/queries/fact_learner_summary.sql' %}{% endfilter %} table_name: learner_summary template_params: null uuid: da75efef-09ba-4ed0-8b6b-bf11c5c26008 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 index 4a3eb99c..517f8d06 100644 --- 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 @@ -430,7 +430,7 @@ offset: 0 params: null schema: null sql: | - {% filter indent(width=2) %} {% include 'openedx-assets/queries/problem_coursewide_avg.sql' %} {% endfilter %} + {% 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 diff --git a/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql b/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql index 34e98504..2ffb9a4d 100644 --- a/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql +++ b/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql @@ -1,11 +1,11 @@ with recent_activity as ( select course_key, COUNT(DISTINCT actor_id) as active_last_7_days - from {{DBT_PROFILE_TARGET_DATABASE}}.`navigation_events` + from {{ DBT_PROFILE_TARGET_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 +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 index dfaa4089..0bb61a91 100644 --- a/tutoraspects/templates/openedx-assets/queries/at_risk_problem_coursewide_avg.sql +++ b/tutoraspects/templates/openedx-assets/queries/at_risk_problem_coursewide_avg.sql @@ -4,7 +4,7 @@ with successful_responses as ( select org, course_key, problem_id, actor_id::String as actor_id, first_success_at - from {{ASPECTS_XAPI_DATABASE}}.responses + from {{ ASPECTS_XAPI_DATABASE }}.responses where isNotNull(first_success_at) {% include 'openedx-assets/queries/common_filters.sql' %} @@ -16,7 +16,7 @@ with problem_id, actor_id::String as actor_id, max(last_attempt_at) as last_attempt_at - from {{ASPECTS_XAPI_DATABASE}}.responses + from {{ ASPECTS_XAPI_DATABASE }}.responses where actor_id not in (select distinct actor_id from successful_responses) {% include 'openedx-assets/queries/common_filters.sql' %} @@ -41,7 +41,7 @@ with events.success as success, events.attempts as attempts, events.interaction_type as interaction_type - from {{ASPECTS_XAPI_DATABASE}}.problem_events events + from {{ ASPECTS_XAPI_DATABASE }}.problem_events events join responses using (org, course_key, problem_id, actor_id, emission_time) ), coursewide_attempts as ( @@ -117,13 +117,13 @@ select from full_responses join - {{DBT_PROFILE_TARGET_DATABASE}}.dim_course_blocks blocks + {{ 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 + {{ ASPECTS_EVENT_SINK_DATABASE }}.user_pii users on full_responses.actor_id = users.external_user_id::String join coursewide_attempts diff --git a/tutoraspects/templates/openedx-assets/queries/enrollment_status.sql b/tutoraspects/templates/openedx-assets/queries/enrollment_status.sql index efe745f7..6db19984 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/problem_coursewide_avg.sql b/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql index cb8b11d6..5398ce4b 100644 --- a/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql +++ b/tutoraspects/templates/openedx-assets/queries/problem_coursewide_avg.sql @@ -3,7 +3,7 @@ with successful_responses as ( select org, course_key, problem_id, actor_id::String as actor_id, first_success_at - from {{ASPECTS_XAPI_DATABASE}}.responses + from {{ ASPECTS_XAPI_DATABASE }}.responses where isNotNull(first_success_at) {% include 'openedx-assets/queries/common_filters.sql' %} @@ -15,7 +15,7 @@ with problem_id, actor_id::String as actor_id, max(last_attempt_at) as last_attempt_at - from {{ASPECTS_XAPI_DATABASE}}.responses + from {{ ASPECTS_XAPI_DATABASE }}.responses where actor_id not in (select distinct actor_id from successful_responses) {% include 'openedx-assets/queries/common_filters.sql' %} @@ -40,7 +40,7 @@ with events.success as success, events.attempts as attempts, events.interaction_type as interaction_type - from {{ASPECTS_XAPI_DATABASE}}.problem_events events + 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 @@ -113,15 +113,15 @@ select ) as selected_learner_percent_incorrect from full_responses join - {{DBT_PROFILE_TARGET_DATABASE}}.dim_course_blocks blocks + {{ 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 + {{ 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 \ No newline at end of file + and full_responses.course_key = coursewide_attempts.course_key From 6fea9a1060b15fd844e907cf34a10c781e674391 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 12:45:56 -0500 Subject: [PATCH 05/10] fix: remove trailing whitespace for include statements --- tutoraspects/asset_command_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutoraspects/asset_command_helpers.py b/tutoraspects/asset_command_helpers.py index 2cf1f8b9..77add2da 100644 --- a/tutoraspects/asset_command_helpers.py +++ b/tutoraspects/asset_command_helpers.py @@ -216,7 +216,7 @@ def process(self, content: dict, existing: dict): content["sql"] = format_string( content["sql"], mode=Mode(dialect_name="clickhouse") - ) + ) if "filter indent" not in content["sql"] else content["sql"] class DatabaseAsset(Asset): From 1091f8cc47d00a6282a2426662a6ef9695e17af9 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 12:56:21 -0500 Subject: [PATCH 06/10] fix: update database --- tutoraspects/asset_command_helpers.py | 8 +++++--- .../openedx-assets/queries/active_last_7_days.sql | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tutoraspects/asset_command_helpers.py b/tutoraspects/asset_command_helpers.py index 77add2da..491e170e 100644 --- a/tutoraspects/asset_command_helpers.py +++ b/tutoraspects/asset_command_helpers.py @@ -214,9 +214,11 @@ 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") - ) if "filter indent" not in content["sql"] else content["sql"] + content["sql"] = ( + format_string(content["sql"], mode=Mode(dialect_name="clickhouse")) + if "filter indent" not in content["sql"] + else content["sql"] + ) class DatabaseAsset(Asset): diff --git a/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql b/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql index 2ffb9a4d..5b686045 100644 --- a/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql +++ b/tutoraspects/templates/openedx-assets/queries/active_last_7_days.sql @@ -1,11 +1,11 @@ with recent_activity as ( select course_key, COUNT(DISTINCT actor_id) as active_last_7_days - from {{ DBT_PROFILE_TARGET_DATABASE }}.`navigation_events` + 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 +from {{ DBT_PROFILE_TARGET_DATABASE }}.fact_student_status fss left join recent_activity ra on fss.course_key = ra.course_key From 3032313c82048d90f8a8b57f36c965f12ee1a53e Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 13:06:55 -0500 Subject: [PATCH 07/10] fix: add video_link to fact_video_watches dataset --- .../templates/openedx-assets/queries/fact_video_watches.sql | 4 ++++ .../openedx-assets/queries/fact_watched_video_segments.sql | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tutoraspects/templates/openedx-assets/queries/fact_video_watches.sql b/tutoraspects/templates/openedx-assets/queries/fact_video_watches.sql index 90166edc..74932d80 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 7ee9fc76..a0fbbd41 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, From 7fcb1d548bc6e67cbfa6edd4e1ef7f2c635a414d Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 13:53:03 -0500 Subject: [PATCH 08/10] feat: add course dashboard link to course info chart --- .../assets/charts/Course_Info_b2fff8.yaml | 22 +- .../assets/charts/Course_Info_ccdd7d.yaml | 22 +- .../charts/Course_Information_fa249d.yaml | 1 + .../charts/Enrollment_Counts_7eaf5b.yaml | 1 + .../charts/Enrollment_Counts_8230a3.yaml | 1 + .../charts/Learner_Performance_b0e170.yaml | 1 + .../charts/Learner_Performance_b518f3.yaml | 1 + .../Problem_Attempts_and_Results_ba14d2.yaml | 314 ---------- .../charts/Problem_Attempts_ba14d2.yaml | 1 + .../assets/charts/Problem_Results_6df964.yaml | 273 --------- .../charts/Video_Engagement_6b7610.yaml | 1 + .../charts/Video_Engagement_c8c363.yaml | 1 + .../charts/Watched_Video_Segments_2985a9.yaml | 177 ------ .../charts/Watched_Video_Segments_a7947b.yaml | 164 ----- .../Course_Comparison_Dashboard.yaml | 29 +- .../assets/dashboards/Course_Dashboard.yaml | 575 +++++++++--------- .../fact_student_status_plus_7_days.yaml | 100 +-- .../assets/datasets/fact_video_watches.yaml | 24 +- 18 files changed, 401 insertions(+), 1307 deletions(-) delete mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_and_Results_ba14d2.yaml delete mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_6df964.yaml delete mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_2985a9.yaml delete mode 100644 tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_a7947b.yaml 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 9829dfb4..64fd0209 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 98d55008..7cb702cf 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 8fe7c3e7..2203351a 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 @@ -12,6 +12,7 @@ params: operator: TEMPORAL_RANGE subject: enrolled_at all_columns: [] + annotation_layers: [] color_pn: true column_config: Avg Course Grade: 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 10a5b8dc..012fd94d 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 97ab78eb..11e2b3e3 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/Learner_Performance_b0e170.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Learner_Performance_b0e170.yaml index 5b7ae82b..13ebbdd0 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 cdb62bff..9a5815f9 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/Problem_Attempts_and_Results_ba14d2.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_and_Results_ba14d2.yaml deleted file mode 100644 index 557c9a2a..00000000 --- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Attempts_and_Results_ba14d2.yaml +++ /dev/null @@ -1,314 +0,0 @@ -_file_name: Problem_Attempts_and_Results_ba14d2.yaml -cache_timeout: null -certification_details: null -certified_by: null -dataset_uuid: c0c8b8a3-b18a-4c17-a69b-e6befea0159d -description: null -params: - adhoc_filters: - - clause: WHERE - comparator: No filter - datasourceWarning: false - expressionType: SIMPLE - filterOptionName: filter_qqnzi3klvaa_mtbj67olly - isExtra: false - isNew: false - operator: TEMPORAL_RANGE - sqlExpression: null - subject: emission_time - all_columns: [] - color_pn: true - column_config: - correct_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - incorrect_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - conditional_formatting: - - colorScheme: '#ACE1C4' - column: avg_attemps - operator: < - targetValue: 2 - - colorScheme: '#FDE380' - column: avg_attemps - operator: "\u2264 x \u2264" - targetValueLeft: '2' - targetValueRight: '4' - - colorScheme: '#EFA1AA' - column: avg_attemps - operator: '>' - targetValue: 4 - - colorScheme: '#ACE1C4' - column: median_attemps - operator: < - targetValue: 3 - - colorScheme: '#FDE380' - column: median_attemps - operator: "\u2264 x \u2264" - targetValueLeft: '3' - targetValueRight: '5' - - colorScheme: '#EFA1AA' - column: median_attemps - operator: '>' - targetValue: 5 - extra_form_data: {} - groupby: - - problem_link - - datasourceWarning: false - expressionType: SQL - label: Graded - sqlExpression: |- - {% raw %}{{translate_column_bool('graded')}}{% endraw %} - metrics: - - number_of_learners - - median_attemps - - avg_attemps - - correct_attempts - - incorrect_attempts - - correct_percent - - incorrect_percent - order_by_cols: [] - order_desc: false - percent_metrics: [] - query_mode: aggregate - row_limit: 1000 - server_page_length: 10 - show_cell_bars: true - 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 - changed_on: '2024-05-23T00:19:51' - column_name: course_order - created_on: '2024-05-23T00:19:51' - description: null - expression: null - extra: '{}' - filterable: true - groupby: true - id: 1348 - is_active: true - is_dttm: false - python_date_format: null - type: Int32 - type_generic: 0 - uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a - verbose_name: null - datasourceWarning: false - expressionType: SIMPLE - hasCustomLabel: false - label: AVG(course_order) - optionName: metric_fy7mao4qznk_sumf5x11o8i - sqlExpression: null - viz_type: table -query_context: - datasource: - id: 34 - type: table - force: false - form_data: - adhoc_filters: - - clause: WHERE - comparator: No filter - datasourceWarning: false - expressionType: SIMPLE - filterOptionName: filter_qqnzi3klvaa_mtbj67olly - isExtra: false - isNew: false - operator: TEMPORAL_RANGE - sqlExpression: null - subject: emission_time - all_columns: [] - color_pn: true - column_config: - correct_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - incorrect_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - conditional_formatting: - - colorScheme: '#ACE1C4' - column: avg_attemps - operator: < - targetValue: 2 - - colorScheme: '#FDE380' - column: avg_attemps - operator: "\u2264 x \u2264" - targetValueLeft: '2' - targetValueRight: '4' - - colorScheme: '#EFA1AA' - column: avg_attemps - operator: '>' - targetValue: 4 - - colorScheme: '#ACE1C4' - column: median_attemps - operator: < - targetValue: 3 - - colorScheme: '#FDE380' - column: median_attemps - operator: "\u2264 x \u2264" - targetValueLeft: '3' - targetValueRight: '5' - - colorScheme: '#EFA1AA' - column: median_attemps - operator: '>' - targetValue: 5 - dashboards: - - 17 - datasource: 34__table - extra_form_data: {} - force: false - groupby: - - problem_link - - datasourceWarning: false - expressionType: SQL - label: Graded - sqlExpression: |- - {% raw %}{{translate_column_bool('graded')}}{% endraw %} - metrics: - - number_of_learners - - median_attemps - - avg_attemps - - correct_attempts - - incorrect_attempts - - correct_percent - - incorrect_percent - order_by_cols: [] - order_desc: false - percent_metrics: [] - query_mode: aggregate - result_format: json - result_type: full - row_limit: 1000 - server_page_length: 10 - show_cell_bars: true - slice_id: 7 - 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 - changed_on: '2024-05-23T00:19:51' - column_name: course_order - created_on: '2024-05-23T00:19:51' - description: null - expression: null - extra: '{}' - filterable: true - groupby: true - id: 1348 - is_active: true - is_dttm: false - python_date_format: null - type: Int32 - type_generic: 0 - uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a - verbose_name: null - datasourceWarning: false - expressionType: SIMPLE - hasCustomLabel: false - label: AVG(course_order) - optionName: metric_fy7mao4qznk_sumf5x11o8i - sqlExpression: null - viz_type: table - queries: - - annotation_layers: [] - applied_time_extras: {} - columns: - - 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: - - number_of_learners - - median_attemps - - avg_attemps - - correct_attempts - - incorrect_attempts - - correct_percent - - incorrect_percent - order_desc: false - orderby: - - - aggregate: AVG - column: - advanced_data_type: null - changed_on: '2024-05-23T00:19:51' - column_name: course_order - created_on: '2024-05-23T00:19:51' - description: null - expression: null - extra: '{}' - filterable: true - groupby: true - id: 1348 - is_active: true - is_dttm: false - python_date_format: null - type: Int32 - type_generic: 0 - uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a - verbose_name: null - datasourceWarning: false - expressionType: SIMPLE - hasCustomLabel: false - label: AVG(course_order) - optionName: metric_fy7mao4qznk_sumf5x11o8i - sqlExpression: null - - true - post_processing: [] - row_limit: 1000 - series_limit: 0 - series_limit_metric: - aggregate: AVG - column: - advanced_data_type: null - changed_on: '2024-05-23T00:19:51' - column_name: course_order - created_on: '2024-05-23T00:19:51' - description: null - expression: null - extra: '{}' - filterable: true - groupby: true - id: 1348 - is_active: true - is_dttm: false - python_date_format: null - type: Int32 - type_generic: 0 - uuid: d09b858c-5a09-47a2-b290-84d1fce37c7a - verbose_name: null - datasourceWarning: false - expressionType: SIMPLE - hasCustomLabel: false - label: AVG(course_order) - optionName: metric_fy7mao4qznk_sumf5x11o8i - sqlExpression: null - url_params: {} - result_format: json - result_type: full -slice_name: Problem Attempts and Results -uuid: ba14d2ea-8c53-4f79-aa1b-434011f3c725 -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 e3209537..dd9dfd23 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_Results_6df964.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_6df964.yaml deleted file mode 100644 index dedbbba6..00000000 --- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Problem_Results_6df964.yaml +++ /dev/null @@ -1,273 +0,0 @@ -_file_name: Problem_Results_6df964.yaml -cache_timeout: null -certification_details: null -certified_by: null -dataset_uuid: c0c8b8a3-b18a-4c17-a69b-e6befea0159d -description: null -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: true - column_config: - correct_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - incorrect_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - conditional_formatting: - - colorScheme: '#ACE1C4' - column: correct_percent - operator: "\u2265" - targetValue: 0 - - colorScheme: '#EFA1AA' - column: incorrect_percent - operator: "\u2265" - targetValue: 0 - extra_form_data: {} - groupby: - - problem_link - - problem_name_with_location - - datasourceWarning: false - expressionType: SQL - label: Graded - sqlExpression: |- - {% raw %}{{translate_column_bool('graded')}}{% endraw %} - metrics: - - correct_attempts - - incorrect_attempts - - correct_percent - - incorrect_percent - order_by_cols: [] - order_desc: false - percent_metrics: [] - query_mode: aggregate - row_limit: 1000 - server_page_length: 10 - server_pagination: false - show_cell_bars: true - 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: 34 - 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: true - column_config: - correct_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - incorrect_percent: - d3NumberFormat: ',.1%' - d3SmallNumberFormat: ',.1%' - conditional_formatting: - - colorScheme: '#ACE1C4' - column: correct_percent - operator: "\u2265" - targetValue: 0 - - colorScheme: '#EFA1AA' - column: incorrect_percent - operator: "\u2265" - targetValue: 0 - dashboards: - - 28 - - 29 - datasource: 34__table - extra_form_data: {} - force: false - groupby: - - problem_link - - problem_name_with_location - - datasourceWarning: false - expressionType: SQL - label: Graded - sqlExpression: |- - {% raw %}{{translate_column_bool('graded')}}{% endraw %} - metrics: - - correct_attempts - - incorrect_attempts - - correct_percent - - incorrect_percent - 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: true - show_totals: false - slice_id: 92 - 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: - - problem_link - - problem_name_with_location - - 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: - - correct_attempts - - incorrect_attempts - - correct_percent - - incorrect_percent - 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: 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/Video_Engagement_6b7610.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_6b7610.yaml index fd1a3853..7439206b 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_c8c363.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Video_Engagement_c8c363.yaml index f748731d..a76724f5 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: 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/Watched_Video_Segments_2985a9.yaml deleted file mode 100644 index 553cd3d3..00000000 --- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_2985a9.yaml +++ /dev/null @@ -1,177 +0,0 @@ -_file_name: Watched_Video_Segments_2985a9.yaml -cache_timeout: null -certification_details: null -certified_by: null -dataset_uuid: c2c391b3-3403-4f05-bc0b-3de53bd366ec -description: null -params: - adhoc_filters: - - clause: WHERE - comparator: No filter - datasourceWarning: false - expressionType: SIMPLE - filterOptionName: filter_kpkhcnms3c_m156a9ez5ga - isExtra: false - isNew: false - operator: TEMPORAL_RANGE - sqlExpression: null - subject: started_at - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - extra_form_data: {} - forecastInterval: 0.8 - forecastPeriods: 10 - groupby: [] - legendOrientation: top - legendType: scroll - metrics: - - total_views - - repeat_views - 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 - stack: Stack - time_grain_sqla: P1M - tooltipTimeFormat: smart_date - truncateXAxis: true - truncate_metric: true - viz_type: echarts_timeseries_bar - xAxisForceCategorical: true - x_axis: segment_start - x_axis_sort_asc: true - x_axis_sort_series: name - x_axis_sort_series_ascending: true - x_axis_time_format: smart_date - x_axis_title: Video Timestamp (in seconds) - x_axis_title_margin: 30 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title: Number of Views - y_axis_title_margin: 30 - y_axis_title_position: Left - zoomable: true -query_context: - datasource: - id: 5 - type: table - force: false - form_data: - adhoc_filters: - - clause: WHERE - comparator: No filter - datasourceWarning: false - expressionType: SIMPLE - filterOptionName: filter_kpkhcnms3c_m156a9ez5ga - isExtra: false - isNew: false - operator: TEMPORAL_RANGE - sqlExpression: null - subject: started_at - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - dashboards: - - 28 - - 29 - datasource: 5__table - extra_form_data: {} - force: false - forecastInterval: 0.8 - forecastPeriods: 10 - groupby: [] - legendOrientation: top - legendType: scroll - metrics: - - total_views - - repeat_views - only_total: true - order_desc: true - orientation: vertical - result_format: json - result_type: full - rich_tooltip: true - row_limit: 10000 - show_empty_columns: true - show_legend: true - slice_id: 100 - sort_series_type: sum - stack: Stack - time_grain_sqla: P1M - tooltipTimeFormat: smart_date - truncateXAxis: true - truncate_metric: true - viz_type: echarts_timeseries_bar - xAxisForceCategorical: true - x_axis: segment_start - x_axis_sort_asc: true - x_axis_sort_series: name - x_axis_sort_series_ascending: true - x_axis_time_format: smart_date - x_axis_title: Video Timestamp (in seconds) - x_axis_title_margin: 30 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title: Number of Views - y_axis_title_margin: 30 - y_axis_title_position: Left - zoomable: true - queries: - - annotation_layers: [] - applied_time_extras: {} - columns: - - columnType: BASE_AXIS - expressionType: SQL - label: segment_start - sqlExpression: segment_start - timeGrain: P1M - custom_form_data: {} - custom_params: {} - extras: - having: '' - time_grain_sqla: P1M - where: '' - filters: - - col: started_at - op: TEMPORAL_RANGE - val: No filter - metrics: - - total_views - - repeat_views - order_desc: true - orderby: - - - total_views - - false - post_processing: - - operation: pivot - options: - aggregates: - repeat_views: - operator: mean - total_views: - operator: mean - columns: [] - drop_missing_columns: false - index: - - segment_start - - operation: flatten - row_limit: 10000 - series_columns: [] - series_limit: 0 - time_offsets: [] - url_params: {} - result_format: json - result_type: full -slice_name: Watched Video Segments -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/Watched_Video_Segments_a7947b.yaml deleted file mode 100644 index 41f680a3..00000000 --- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Watched_Video_Segments_a7947b.yaml +++ /dev/null @@ -1,164 +0,0 @@ -_file_name: Watched_Video_Segments_a7947b.yaml -cache_timeout: null -certification_details: null -certified_by: null -dataset_uuid: c2f0e842-738d-41a0-9ea6-51e32b7fab82 -description: null -params: - adhoc_filters: - - clause: WHERE - comparator: No filter - expressionType: SIMPLE - operator: TEMPORAL_RANGE - subject: started_at - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - extra_form_data: {} - forecastInterval: 0.8 - forecastPeriods: 10 - groupby: [] - legendOrientation: top - legendType: scroll - metrics: - - unique_viewers - - repeat_views - 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 - truncateYAxis: false - truncate_metric: true - viz_type: echarts_timeseries_bar - xAxisLabelRotation: 0 - x_axis: segment_start - x_axis_sort_asc: true - x_axis_sort_series: name - x_axis_sort_series_ascending: true - x_axis_time_format: smart_date - x_axis_title: Video Timestamp (in seconds) - x_axis_title_margin: 30 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title: Number of Views - y_axis_title_margin: 30 - y_axis_title_position: Left -query_context: - datasource: - id: 107 - type: table - force: false - form_data: - adhoc_filters: - - clause: WHERE - comparator: No filter - expressionType: SIMPLE - operator: TEMPORAL_RANGE - subject: started_at - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - dashboards: - - 30 - datasource: 107__table - extra_form_data: {} - force: false - forecastInterval: 0.8 - forecastPeriods: 10 - groupby: [] - legendOrientation: top - legendType: scroll - metrics: - - unique_viewers - - repeat_views - only_total: true - order_desc: true - orientation: vertical - result_format: json - result_type: full - rich_tooltip: true - row_limit: 10000 - show_empty_columns: true - show_legend: true - slice_id: 190 - sort_series_type: sum - time_grain_sqla: P1D - tooltipTimeFormat: smart_date - truncateXAxis: true - truncateYAxis: false - truncate_metric: true - viz_type: echarts_timeseries_bar - xAxisLabelRotation: 0 - x_axis: segment_start - x_axis_sort_asc: true - x_axis_sort_series: name - x_axis_sort_series_ascending: true - x_axis_time_format: smart_date - x_axis_title: Video Timestamp (in seconds) - x_axis_title_margin: 30 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title: Number of Views - y_axis_title_margin: 30 - y_axis_title_position: Left - queries: - - annotation_layers: [] - applied_time_extras: {} - columns: - - columnType: BASE_AXIS - expressionType: SQL - label: segment_start - sqlExpression: segment_start - timeGrain: P1D - custom_form_data: {} - custom_params: {} - extras: - having: '' - time_grain_sqla: P1D - where: '' - filters: - - col: started_at - op: TEMPORAL_RANGE - val: No filter - metrics: - - unique_viewers - - repeat_views - order_desc: true - orderby: - - - unique_viewers - - false - post_processing: - - operation: pivot - options: - aggregates: - repeat_views: - operator: mean - unique_viewers: - operator: mean - columns: [] - drop_missing_columns: false - index: - - segment_start - - operation: flatten - row_limit: 10000 - series_columns: [] - series_limit: 0 - time_offsets: [] - url_params: {} - result_format: json - result_type: full -slice_name: Watched Video Segments -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/dashboards/Course_Comparison_Dashboard.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/dashboards/Course_Comparison_Dashboard.yaml index 416f79c0..72ef6509 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 0035669c..f15e6aa5 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,319 +8,319 @@ dashboard_title: Course Dashboard description: null metadata: chart_configuration: - '1': + '10': crossFilters: chartsInScope: - 2 - - 7 - 9 - - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 1 - '10': + id: 10 + '11': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - - 11 - - 15 - - 18 - - 20 + - 10 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 10 - '11': + id: 11 + '2': crossFilters: chartsInScope: - - 1 - - 2 - - 7 - 9 - 10 - - 15 - - 18 - - 20 + - 11 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 11 - '15': + id: 2 + '21': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 18 - - 20 - - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 17 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 15 - '18': + id: 21 + '29': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 18 - '2': + id: 29 + '30': crossFilters: chartsInScope: - - 1 - - 7 + - 2 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 2 - '20': + id: 30 + '34': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 20 - '23': + id: 34 + '39': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 23 - '25': + id: 39 + '41': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global - id: 25 - '40': + id: 41 + '42': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 53 + - 57 + - 60 + - 64 scope: global - id: 40 - '43': + id: 42 + '53': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 57 + - 60 + - 64 scope: global - id: 43 - '49': + id: 53 + '57': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 60 + - 64 scope: global - id: 49 - '52': + id: 57 + '60': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 64 scope: global - id: 52 - '7': + id: 60 + '64': crossFilters: chartsInScope: - - 1 - 2 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 scope: global - id: 7 + id: 64 '9': crossFilters: chartsInScope: - - 1 - 2 - - 7 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: global id: 9 color_scheme: supersetColors @@ -346,27 +346,26 @@ metadata: - '#9EE5E5' - '#D1C6BC' cross_filters_enabled: true - default_filters: '{}' expanded_slices: {} global_chart_configuration: chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 scope: excluded: [] rootPath: @@ -376,23 +375,23 @@ metadata: - cascadeParentIds: - NATIVE_FILTER-IfS-Rd0ZS chartsInScope: - - 1 - 2 - - 7 - 9 - 10 - 11 - - 15 - - 18 - - 20 + - 17 - 21 - - 23 - - 25 - - 40 - - 43 - - 49 - - 52 - - 56 + - 29 + - 30 + - 34 + - 38 + - 39 + - 41 + - 42 + - 53 + - 57 + - 60 + - 64 controlValues: defaultToFirstItem: false enableEmptyFilter: false @@ -426,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 @@ -458,7 +456,6 @@ metadata: filterType: filter_select id: NATIVE_FILTER-IfS-Rd0ZS name: Course Name - requiredFirst: true scope: excluded: [] rootPath: @@ -479,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 @@ -563,10 +559,10 @@ metadata: name: Date scope: excluded: - - 52 - - 23 - - 10 - - 2 + - 11 + - 60 + - 21 + - 34 rootPath: - TAB-4ptSkqs5MS - TAB-_Ey4nPhFr @@ -603,17 +599,16 @@ metadata: name: Time Grain scope: excluded: - - 7 - - 16 + - 29 + - 57 + - 11 + - 60 + - 21 + - 34 + - 53 - 9 - - 52 - - 23 - - 10 + - 39 - 2 - - 1 - - 40 - - 25 - - 15 rootPath: - TAB-4ptSkqs5MS - TAB-_Ey4nPhFr @@ -642,7 +637,7 @@ position: children: [] id: CHART-XNUtUvjGrL meta: - chartId: 18 + chartId: 64 height: 50 sliceName: Page Engagement Over Time uuid: d7bfef35-d35a-405f-ae59-73472845cd59 @@ -660,7 +655,7 @@ position: children: [] id: CHART-explore-119-1 meta: - chartId: 7 + chartId: 29 height: 50 sliceName: Problem Attempts uuid: ba14d2ea-8c53-4f79-aa1b-434011f3c725 @@ -678,7 +673,7 @@ position: children: [] id: CHART-explore-121-1 meta: - chartId: 9 + chartId: 57 height: 54 sliceName: Number of Views across Video Duration uuid: 2985a9db-c338-4008-af52-2930b81ee2e5 @@ -696,7 +691,7 @@ position: children: [] id: CHART-explore-122-1 meta: - chartId: 52 + chartId: 11 height: 53 sliceName: Partial and Full Video Views uuid: bfffb9fe-07bd-4b2f-b437-522d45f6cd2c @@ -714,7 +709,7 @@ position: children: [] id: CHART-explore-123-1 meta: - chartId: 23 + chartId: 60 height: 61 sliceName: Page Engagement per Section/Subsection uuid: bf2d6219-d633-48c1-a9b5-742eac6a4c0a @@ -732,7 +727,7 @@ position: children: [] id: CHART-explore-124-1 meta: - chartId: 11 + chartId: 42 height: 50 sliceName: Distribution of Current Course Grade uuid: ea565658-6796-40e8-9d1e-01ffd0778bc9 @@ -749,7 +744,7 @@ position: children: [] id: CHART-explore-125-1 meta: - chartId: 10 + chartId: 21 height: 61 sliceName: Problem Engagement per Section/Subsection uuid: 8cdcd4aa-1fa2-41dc-b38d-f1112134592e @@ -767,7 +762,7 @@ position: children: [] id: CHART-explore-126-1 meta: - chartId: 2 + chartId: 34 height: 69 sliceName: Video Engagement per Section/Subsection uuid: c1f77432-e55f-4473-b7d0-7a1c3976e6a8 @@ -785,7 +780,7 @@ position: children: [] id: CHART-explore-127-1 meta: - chartId: 1 + chartId: 53 height: 39 sliceName: Video Engagement uuid: c8c363f8-8dbc-4a78-841d-4976f4404884 @@ -803,7 +798,7 @@ position: children: [] id: CHART-explore-128-1 meta: - chartId: 49 + chartId: 41 height: 29 sliceName: Course Information uuid: fa249dda-78da-4ccc-9ef3-39177e6aae0c @@ -817,7 +812,7 @@ position: children: [] id: CHART-explore-129-1 meta: - chartId: 56 + chartId: 38 height: 27 sliceName: Learners with Passing Grade uuid: b40cdabc-b265-48d2-913d-a9dfee0b6ab1 @@ -834,7 +829,7 @@ position: children: [] id: CHART-explore-185-1 meta: - chartId: 21 + chartId: 17 height: 29 sliceName: Current Enrollees uuid: 00de2f72-b3ed-4994-b231-fd3cf29d758d @@ -848,7 +843,7 @@ position: children: [] id: CHART-explore-188-1 meta: - chartId: 40 + chartId: 9 height: 51 sliceName: Enrollees per Enrollment Track uuid: e584199e-0ed6-42bf-afb9-db3b9fe4132b @@ -864,7 +859,7 @@ position: children: [] id: CHART-explore-189-1 meta: - chartId: 20 + chartId: 30 height: 51 sliceName: Cumulative Enrollments by Track uuid: f207c896-030a-462b-b69f-6416230d50b6 @@ -881,7 +876,7 @@ position: children: [] id: CHART-explore-191-1 meta: - chartId: 25 + chartId: 39 height: 50 sliceName: Section Summary uuid: 47417136-acd1-44a1-b41e-644eb2c237c3 @@ -899,7 +894,7 @@ position: children: [] id: CHART-explore-192-1 meta: - chartId: 15 + chartId: 2 height: 50 sliceName: Subsection Summary uuid: 2a8d96be-687d-4918-98fe-ae9fbd599152 @@ -917,7 +912,7 @@ position: children: [] id: CHART-explore-195-1 meta: - chartId: 43 + chartId: 10 height: 50 sliceName: Cumulative Interactions uuid: c44e43b5-ba69-4805-8d01-3b04dcbf2cb6 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 index 06fb5f7e..3638c882 100644 --- 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 @@ -3,7 +3,7 @@ always_filter_main_dttm: false cache_timeout: null columns: - advanced_data_type: null - column_name: course_key + column_name: active_within_last_7_days description: null expression: null extra: @@ -13,10 +13,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: LowCardinality(String) - verbose_name: Course Key + type: UInt64 + verbose_name: Active Within Last 7 Days - advanced_data_type: null - column_name: course_name + column_name: course_key description: null expression: null extra: @@ -26,10 +26,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: String - verbose_name: Course Name + type: LowCardinality(String) + verbose_name: Course Key - advanced_data_type: null - column_name: course_run + column_name: enrollment_mode description: null expression: null extra: @@ -39,10 +39,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: String - verbose_name: Course Run + type: LowCardinality(String) + verbose_name: Enrollment Mode - advanced_data_type: null - column_name: org + column_name: course_grade description: null expression: null extra: @@ -52,10 +52,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: LowCardinality(String) - verbose_name: Organization + type: Float64 + verbose_name: Course Grade - advanced_data_type: null - column_name: enrollment_mode + column_name: enrolled_at description: null expression: null extra: @@ -63,12 +63,12 @@ columns: filterable: true groupby: true is_active: true - is_dttm: false + is_dttm: true python_date_format: null - type: LowCardinality(String) - verbose_name: Enrollment Mode + type: DateTime + verbose_name: Enrolled At - advanced_data_type: null - column_name: active_within_last_7_days + column_name: actor_id description: null expression: null extra: @@ -78,10 +78,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: UInt64 - verbose_name: Active Within Last 7 Days + type: String + verbose_name: Actor Id - advanced_data_type: null - column_name: course_grade + column_name: approving_state description: null expression: null extra: @@ -91,10 +91,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: Float64 - verbose_name: Course Grade + type: String + verbose_name: Approving State - advanced_data_type: null - column_name: enrolled_at + column_name: grade_bucket description: null expression: null extra: @@ -102,12 +102,12 @@ columns: filterable: true groupby: true is_active: true - is_dttm: true + is_dttm: false python_date_format: null - type: DateTime - verbose_name: Enrolled At + type: String + verbose_name: Grade Bucket - advanced_data_type: null - column_name: approving_state + column_name: course_name description: null expression: null extra: @@ -118,9 +118,9 @@ columns: is_dttm: false python_date_format: null type: String - verbose_name: Approving State + verbose_name: Course Name - advanced_data_type: null - column_name: grade_bucket + column_name: course_run description: null expression: null extra: @@ -131,9 +131,9 @@ columns: is_dttm: false python_date_format: null type: String - verbose_name: Grade Bucket + verbose_name: Course Run - advanced_data_type: null - column_name: actor_id + column_name: enrollment_status description: null expression: null extra: @@ -144,9 +144,9 @@ columns: is_dttm: false python_date_format: null type: String - verbose_name: Actor Id + verbose_name: Enrollment Status - advanced_data_type: null - column_name: enrollment_status + column_name: org description: null expression: null extra: @@ -156,10 +156,10 @@ columns: is_active: true is_dttm: false python_date_format: null - type: String - verbose_name: Enrollment Status + type: LowCardinality(String) + verbose_name: Organization - advanced_data_type: null - column_name: username + column_name: email description: null expression: null extra: @@ -170,9 +170,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: @@ -183,9 +183,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: @@ -196,7 +196,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 @@ -205,15 +205,6 @@ fetch_values_predicate: null filter_select_enabled: true main_dttm_col: enrolled_at metrics: -- 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 @@ -224,6 +215,15 @@ metrics: 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 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 8db3a967..3fa01ea4 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 @@ -134,6 +134,18 @@ columns: python_date_format: null type: String verbose_name: Video Name +- advanced_data_type: null + column_name: video_link + description: null + expression: null + extra: {} + filterable: true + groupby: true + is_active: true + is_dttm: false + python_date_format: null + type: String + verbose_name: Video Link - advanced_data_type: null column_name: org description: null @@ -182,18 +194,6 @@ columns: python_date_format: null type: String verbose_name: Username -- advanced_data_type: null - column_name: video_link - description: null - expression: null - extra: {} - filterable: true - groupby: true - is_active: true - is_dttm: false - python_date_format: null - type: String - verbose_name: Video Link database_uuid: 21174b6c-4d40-4958-8161-d6c3cf5e77b6 default_endpoint: null description: null From a3da2d555a1c22c36abeee52f2f4a6cc468453a4 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 14:08:10 -0500 Subject: [PATCH 09/10] fix: add missing query context for last_visit dataset --- .../assets/charts/Last_Visit_Date_6c2b10.yaml | 160 +++++++++++++++++- 1 file changed, 151 insertions(+), 9 deletions(-) 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 index ca0d2f60..53d04bf8 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 @@ -67,7 +59,157 @@ params: y_axis_format: SMART_NUMBER y_axis_title_margin: 15 y_axis_title_position: Left -query_context: null +query_context: + datasource: + id: 33 + type: table + force: false + form_data: + adhoc_filters: [] + annotation_layers: [] + color_scheme: supersetColors + dashboards: + - 364 + datasource: 33__table + extra_form_data: {} + force: false + groupby: [] + legendOrientation: top + legendType: scroll + metrics: + - aggregate: COUNT + column: + advanced_data_type: null + certification_details: null + certified_by: null + column_name: actor_id + description: null + expression: null + filterable: true + groupby: true + id: 13538 + 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 + optionName: metric_orthejcnotd_6ealxq45fqk + sqlExpression: null + only_total: true + orientation: vertical + result_format: json + result_type: full + rich_tooltip: true + row_limit: 10000 + show_empty_columns: true + show_legend: true + slice_id: 52 + sort_series_type: sum + tooltipTimeFormat: smart_date + truncateXAxis: true + truncate_metric: true + viz_type: echarts_timeseries_bar + xAxisLabelRotation: 45 + x_axis: last_visited + x_axis_time_format: '%Y-%m-%d' + x_axis_title: Date Visited + x_axis_title_margin: 100 + y_axis_bounds: + - null + - null + y_axis_format: SMART_NUMBER + y_axis_title_margin: 15 + y_axis_title_position: Left + queries: + - annotation_layers: [] + applied_time_extras: {} + columns: + - columnType: BASE_AXIS + expressionType: SQL + label: last_visited + sqlExpression: last_visited + custom_form_data: {} + custom_params: {} + extras: + having: '' + where: '' + filters: [] + metrics: + - aggregate: COUNT + column: + advanced_data_type: null + certification_details: null + certified_by: null + column_name: actor_id + description: null + expression: null + filterable: true + groupby: true + id: 13538 + 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 + optionName: metric_orthejcnotd_6ealxq45fqk + sqlExpression: null + order_desc: true + orderby: + - - aggregate: COUNT + column: + advanced_data_type: null + certification_details: null + certified_by: null + column_name: actor_id + description: null + expression: null + filterable: true + groupby: true + id: 13538 + 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 + optionName: metric_orthejcnotd_6ealxq45fqk + sqlExpression: null + - false + post_processing: + - operation: pivot + options: + aggregates: + Number of Learners: + operator: mean + columns: [] + drop_missing_columns: false + index: + - last_visited + - operation: flatten + row_limit: 10000 + series_columns: [] + series_limit: 0 + time_offsets: [] + url_params: {} + result_format: json + result_type: full slice_name: Last Visit Date uuid: 6c2b1008-96c9-426d-b2fe-68aa1de7b10d version: 1.0.0 From 72656583c9417fe25e36a9ea1c404541717c0207 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 20 Sep 2024 16:18:38 -0500 Subject: [PATCH 10/10] fix: open chart descriptions --- .../Number_of_Views_across_Video_Duration_a7947b.yaml | 8 +++----- .../assets/dashboards/At-Risk_Learners.yaml | 2 +- .../assets/dashboards/Course_Dashboard.yaml | 2 +- .../assets/dashboards/Individual_Learner.yaml | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml index 7f94bf63..0f670888 100644 --- a/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml +++ b/tutoraspects/templates/aspects/build/aspects-superset/openedx-assets/assets/charts/Number_of_Views_across_Video_Duration_a7947b.yaml @@ -3,11 +3,9 @@ cache_timeout: null certification_details: null certified_by: null dataset_uuid: c2f0e842-738d-41a0-9ea6-51e32b7fab82 -description: "Key result 1\tDefinition and Implementation of Hiring Model for Foreign\ - \ Contractors\tBy November 30, 2024, define and implement the hiring model for the\ - \ 16 foreign contractors, ensuring compliance with local regulations and alignment\ - \ with company policies across all relevant countries.\t\t\t\t\t\t\t\t\t\t\t\t\t\ - \t\t\t\t\t\t\t\t\t\t" +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 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 a4aa404a..c351f40e 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 @@ -389,7 +389,7 @@ metadata: - '#D1C6BC' cross_filters_enabled: true default_filters: '{}' - expanded_slices: {} + expanded_slices: {"30": true} global_chart_configuration: chartsInScope: - 3 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 f15e6aa5..a53d94ad 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 @@ -346,7 +346,7 @@ metadata: - '#9EE5E5' - '#D1C6BC' cross_filters_enabled: true - expanded_slices: {} + expanded_slices: {"57": true} global_chart_configuration: chartsInScope: - 2 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 010fa03b..b751f6f8 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 @@ -317,7 +317,7 @@ metadata: - '#D1C6BC' cross_filters_enabled: true default_filters: '{}' - expanded_slices: {} + expanded_slices: {"16": true, "64": true, "9": true} global_chart_configuration: chartsInScope: - 2