You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2024/01/26 21:30:19 UTC
(superset) branch tech-debt-dashboard created (now 29a66007e6)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a change to branch tech-debt-dashboard
in repository https://gitbox.apache.org/repos/asf/superset.git
at 29a66007e6 the main ingredients
This branch includes the following new commits:
new 29a66007e6 the main ingredients
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(superset) 01/01: the main ingredients
Posted by ru...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch tech-debt-dashboard
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 29a66007e613b31a8235b48b10dc6bf53f84e34e
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Fri Jan 26 14:30:11 2024 -0700
the main ingredients
---
.../examples/configs/charts/10_Worst_Files_76.yaml | 43 ++
.../configs/charts/Backlog_-_ESLint_75.yaml | 53 +++
.../configs/charts/Debt_Timeline_by_Rule_74.yaml | 83 ++++
.../charts/Low_Hanging_Fruit_by_File_80.yaml | 69 ++++
.../charts/Low_Hanging_Fruit_by_Rule_79.yaml | 69 ++++
.../charts/Ten_Worst_Violations_ESLint_77.yaml | 43 ++
.../configs/charts/Total_Rule_Violations_78.yaml | 62 +++
.../dashboards/Superset_Technical_Debt_9.yaml | 448 +++++++++++++++++++++
.../examples/Superset_Tech_Debt_-_Aggregated.yaml | 90 +++++
.../examples/Superset_Tech_Debt_-_ESLint.yaml | 114 ++++++
10 files changed, 1074 insertions(+)
diff --git a/superset/examples/configs/charts/10_Worst_Files_76.yaml b/superset/examples/configs/charts/10_Worst_Files_76.yaml
new file mode 100644
index 0000000000..c8741f9b54
--- /dev/null
+++ b/superset/examples/configs/charts/10_Worst_Files_76.yaml
@@ -0,0 +1,43 @@
+slice_name: 10 Worst Files
+description: null
+certified_by: null
+certification_details: null
+viz_type: pie
+params:
+ datasource: 22__table
+ viz_type: pie
+ slice_id: 76
+ groupby:
+ - File
+ metric: count
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ expressionType: SIMPLE
+ operator: TEMPORAL_RANGE
+ subject: Timestamp
+ row_limit: 10
+ sort_by_metric: true
+ color_scheme: supersetColors
+ show_labels_threshold: 5
+ show_legend: true
+ legendType: scroll
+ legendOrientation: top
+ label_type: key
+ number_format: SMART_NUMBER
+ date_format: smart_date
+ show_labels: true
+ labels_outside: true
+ outerRadius: 70
+ donut: true
+ innerRadius: 30
+ extra_form_data: {}
+ dashboards:
+ - 9
+query_context: '{"datasource":{"id":22,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"having":"","where":""},"applied_time_extras":{},"columns":["File"],"metrics":["count"],"orderby":[["count",false]],"annotation_layers":[],"row_limit":10,"series_limit":0,"order_desc":true,"url_params":{},"custom_params":{},"custom_form_data":{}}],"form_data":{"datasource":"22__table","viz_type":"pie","slice_id":76,"groupby":["File"],"metric":"count","adhoc_filters":[{"clause":"WHERE","comparator":"No
+ filter","expressionType":"SIMPLE","operator":"TEMPORAL_RANGE","subject":"Timestamp"}],"row_limit":10,"sort_by_metric":true,"color_scheme":"supersetColors","show_labels_threshold":5,"show_legend":true,"legendType":"scroll","legendOrientation":"top","label_type":"key","number_format":"SMART_NUMBER","date_format":"smart_date","show_labels":true,"labels_outside":true,"outerRadius":70,"donut":true,"innerRadius":30,"extra_form_data":{},"dashboards":[9],"force":false,"result_format":"json","r [...]
+cache_timeout: null
+uuid: e34a4358-0681-43b1-839e-82f1399b97ce
+version: 1.0.0
+dataset_uuid: 12fa12ec-9d44-4eb8-8222-9f495849ad82
diff --git a/superset/examples/configs/charts/Backlog_-_ESLint_75.yaml b/superset/examples/configs/charts/Backlog_-_ESLint_75.yaml
new file mode 100644
index 0000000000..6b5fc2524f
--- /dev/null
+++ b/superset/examples/configs/charts/Backlog_-_ESLint_75.yaml
@@ -0,0 +1,53 @@
+slice_name: Backlog - ESLint
+description: null
+certified_by: null
+certification_details: null
+viz_type: table
+params:
+ datasource: 22__table
+ viz_type: table
+ slice_id: 75
+ query_mode: raw
+ groupby: []
+ time_grain_sqla: P1D
+ temporal_columns_lookup:
+ Timestamp: true
+ all_columns:
+ - Rule
+ - Rule Description
+ - File
+ - Line
+ - Column
+ - ESLint Message
+ percent_metrics: []
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ expressionType: SIMPLE
+ operator: TEMPORAL_RANGE
+ subject: Timestamp
+ order_by_cols: []
+ row_limit: 1000
+ server_page_length: 10
+ order_desc: true
+ table_timestamp_format: smart_date
+ show_cell_bars: false
+ color_pn: true
+ allow_rearrange_columns: false
+ column_config:
+ File:
+ truncateLongCells: true
+ columnWidth: 160
+ conditional_formatting: []
+ extra_form_data: {}
+ dashboards:
+ - 9
+query_context: '{"datasource":{"id":22,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"time_grain_sqla":"P1D","having":"","where":""},"applied_time_extras":{},"columns":["Rule","Rule
+ Description","File","Line","Column","ESLint Message"],"orderby":[],"annotation_layers":[],"row_limit":1000,"series_limit":0,"order_desc":true,"url_params":{},"custom_params":{},"custom_form_data":{},"post_processing":[]}],"form_data":{"datasource":"22__table","viz_type":"table","slice_id":75,"query_mode":"raw","groupby":[],"time_grain_sqla":"P1D","temporal_columns_lookup":{"Timestamp":true},"all_columns":["Rule","Rule
+ Description","File","Line","Column","ESLint Message"],"percent_metrics":[],"adhoc_filters":[{"clause":"WHERE","comparator":"No
+ filter","expressionType":"SIMPLE","operator":"TEMPORAL_RANGE","subject":"Timestamp"}],"order_by_cols":[],"row_limit":1000,"server_page_length":10,"order_desc":true,"table_timestamp_format":"smart_date","show_cell_bars":false,"color_pn":true,"allow_rearrange_columns":false,"column_config":{"File":{"truncateLongCells":true,"columnWidth":160}},"conditional_formatting":[],"extra_form_data":{},"dashboards":[9],"force":false,"result_format":"json","result_type":"full","include_time":false}," [...]
+cache_timeout: null
+uuid: 68cf3d84-afe6-496e-8960-401fe27d0c58
+version: 1.0.0
+dataset_uuid: 12fa12ec-9d44-4eb8-8222-9f495849ad82
diff --git a/superset/examples/configs/charts/Debt_Timeline_by_Rule_74.yaml b/superset/examples/configs/charts/Debt_Timeline_by_Rule_74.yaml
new file mode 100644
index 0000000000..0956e6dca2
--- /dev/null
+++ b/superset/examples/configs/charts/Debt_Timeline_by_Rule_74.yaml
@@ -0,0 +1,83 @@
+slice_name: Debt Timeline (by Rule)
+description: null
+certified_by: null
+certification_details: null
+viz_type: echarts_timeseries_line
+params:
+ datasource: 21__table
+ viz_type: echarts_timeseries_line
+ x_axis: Timestamp
+ x_axis_sort_asc: true
+ x_axis_sort_series: name
+ x_axis_sort_series_ascending: true
+ metrics:
+ - expressionType: SIMPLE
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: Count
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 736
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: INT
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ aggregate: SUM
+ sqlExpression: null
+ datasourceWarning: false
+ hasCustomLabel: false
+ label: SUM(Count)
+ optionName: metric_vcw1vg4u1l_fusr72nuyki
+ groupby:
+ - Process
+ - Rule
+ adhoc_filters:
+ - clause: WHERE
+ subject: Timestamp
+ operator: TEMPORAL_RANGE
+ comparator: No filter
+ expressionType: SIMPLE
+ order_desc: true
+ row_limit: 1000
+ truncate_metric: true
+ show_empty_columns: true
+ comparison_type: values
+ annotation_layers: []
+ forecastPeriods: 10
+ forecastInterval: 0.8
+ x_axis_title_margin: 15
+ y_axis_title_margin: 15
+ y_axis_title_position: Left
+ sort_series_type: sum
+ color_scheme: supersetColors
+ seriesType: line
+ only_total: true
+ opacity: 0.2
+ markerSize: 6
+ show_legend: true
+ legendType: scroll
+ legendOrientation: top
+ x_axis_time_format: smart_date
+ rich_tooltip: true
+ tooltipTimeFormat: smart_date
+ y_axis_format: SMART_NUMBER
+ truncateXAxis: true
+ y_axis_bounds:
+ - null
+ - null
+ extra_form_data: {}
+ dashboards: []
+query_context: '{"datasource":{"id":21,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"having":"","where":""},"applied_time_extras":{},"columns":[{"columnType":"BASE_AXIS","sqlExpression":"Timestamp","label":"Timestamp","expressionType":"SQL"},"Process","Rule"],"metrics":[{"expressionType":"SIMPLE","column":{"advanced_data_type":null,"certification_details":null,"certified_by":null,"column_name":"Count","description":null,"expression":null,"filterable":true,"groupby":true,"id":736,"is_certified":false,"is_dttm":false,"python_date_format":null,"type": [...]
+ filter","expressionType":"SIMPLE"}],"order_desc":true,"row_limit":1000,"truncate_metric":true,"show_empty_columns":true,"comparison_type":"values","annotation_layers":[],"forecastPeriods":10,"forecastInterval":0.8,"x_axis_title_margin":15,"y_axis_title_margin":15,"y_axis_title_position":"Left","sort_series_type":"sum","color_scheme":"supersetColors","seriesType":"line","only_total":true,"opacity":0.2,"markerSize":6,"show_legend":true,"legendType":"scroll","legendOrientation":"top","x_a [...]
+cache_timeout: null
+uuid: 93f3714b-8401-415e-9d4c-2c8806dfc02f
+version: 1.0.0
+dataset_uuid: a3b0a980-a1b4-4463-89fd-91e6d3347313
diff --git a/superset/examples/configs/charts/Low_Hanging_Fruit_by_File_80.yaml b/superset/examples/configs/charts/Low_Hanging_Fruit_by_File_80.yaml
new file mode 100644
index 0000000000..5dd4786db8
--- /dev/null
+++ b/superset/examples/configs/charts/Low_Hanging_Fruit_by_File_80.yaml
@@ -0,0 +1,69 @@
+slice_name: Low Hanging Fruit by File
+description: null
+certified_by: null
+certification_details: null
+viz_type: table
+params:
+ datasource: 22__table
+ viz_type: table
+ slice_id: 79
+ query_mode: aggregate
+ groupby:
+ - File
+ temporal_columns_lookup:
+ Timestamp: true
+ metrics:
+ - aggregate: COUNT
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: ESLint Message
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 745
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: STRING
+ type_generic: 1
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: false
+ label: COUNT(ESLint Message)
+ optionName: metric_n27rlniqi4h_23ktjxr2plb
+ sqlExpression: null
+ all_columns: []
+ percent_metrics: []
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ expressionType: SIMPLE
+ operator: TEMPORAL_RANGE
+ subject: Timestamp
+ timeseries_limit_metric: count
+ order_by_cols: []
+ row_limit: 50
+ server_page_length: 10
+ order_desc: false
+ table_timestamp_format: smart_date
+ show_cell_bars: true
+ color_pn: true
+ extra_form_data: {}
+ dashboards:
+ - 9
+query_context: '{"datasource":{"id":22,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"having":"","where":""},"applied_time_extras":{},"columns":["File"],"metrics":[{"aggregate":"COUNT","column":{"advanced_data_type":null,"certification_details":null,"certified_by":null,"column_name":"ESLint
+ Message","description":null,"expression":null,"filterable":true,"groupby":true,"id":745,"is_certified":false,"is_dttm":false,"python_date_format":null,"type":"STRING","type_generic":1,"verbose_name":null,"warning_markdown":null},"datasourceWarning":false,"expressionType":"SIMPLE","hasCustomLabel":false,"label":"COUNT(ESLint
+ Message)","optionName":"metric_n27rlniqi4h_23ktjxr2plb","sqlExpression":null}],"orderby":[["count",true]],"annotation_layers":[],"row_limit":50,"series_limit":0,"series_limit_metric":"count","order_desc":false,"url_params":{},"custom_params":{},"custom_form_data":{},"post_processing":[]}],"form_data":{"datasource":"22__table","viz_type":"table","slice_id":79,"query_mode":"aggregate","groupby":["File"],"temporal_columns_lookup":{"Timestamp":true},"metrics":[{"aggregate":"COUNT","column" [...]
+ Message","description":null,"expression":null,"filterable":true,"groupby":true,"id":745,"is_certified":false,"is_dttm":false,"python_date_format":null,"type":"STRING","type_generic":1,"verbose_name":null,"warning_markdown":null},"datasourceWarning":false,"expressionType":"SIMPLE","hasCustomLabel":false,"label":"COUNT(ESLint
+ Message)","optionName":"metric_n27rlniqi4h_23ktjxr2plb","sqlExpression":null}],"all_columns":[],"percent_metrics":[],"adhoc_filters":[{"clause":"WHERE","comparator":"No
+ filter","expressionType":"SIMPLE","operator":"TEMPORAL_RANGE","subject":"Timestamp"}],"timeseries_limit_metric":"count","order_by_cols":[],"row_limit":50,"server_page_length":10,"order_desc":false,"table_timestamp_format":"smart_date","show_cell_bars":true,"color_pn":true,"extra_form_data":{},"dashboards":[9],"force":false,"result_format":"json","result_type":"full"},"result_format":"json","result_type":"full"}'
+cache_timeout: null
+uuid: 63a1ac01-9daf-4064-a455-ef9f5b64933f
+version: 1.0.0
+dataset_uuid: 12fa12ec-9d44-4eb8-8222-9f495849ad82
diff --git a/superset/examples/configs/charts/Low_Hanging_Fruit_by_Rule_79.yaml b/superset/examples/configs/charts/Low_Hanging_Fruit_by_Rule_79.yaml
new file mode 100644
index 0000000000..36e7e4c913
--- /dev/null
+++ b/superset/examples/configs/charts/Low_Hanging_Fruit_by_Rule_79.yaml
@@ -0,0 +1,69 @@
+slice_name: Low Hanging Fruit by Rule
+description: null
+certified_by: null
+certification_details: null
+viz_type: table
+params:
+ datasource: 22__table
+ viz_type: table
+ slice_id: 79
+ query_mode: aggregate
+ groupby:
+ - Rule
+ temporal_columns_lookup:
+ Timestamp: true
+ metrics:
+ - aggregate: COUNT
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: ESLint Message
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 745
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: STRING
+ type_generic: 1
+ verbose_name: null
+ warning_markdown: null
+ datasourceWarning: false
+ expressionType: SIMPLE
+ hasCustomLabel: false
+ label: COUNT(ESLint Message)
+ optionName: metric_n27rlniqi4h_23ktjxr2plb
+ sqlExpression: null
+ all_columns: []
+ percent_metrics: []
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ expressionType: SIMPLE
+ operator: TEMPORAL_RANGE
+ subject: Timestamp
+ timeseries_limit_metric: count
+ order_by_cols: []
+ row_limit: 50
+ server_page_length: 10
+ order_desc: false
+ table_timestamp_format: smart_date
+ show_cell_bars: true
+ color_pn: true
+ extra_form_data: {}
+ dashboards:
+ - 9
+query_context: '{"datasource":{"id":22,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"having":"","where":""},"applied_time_extras":{},"columns":["Rule"],"metrics":[{"aggregate":"COUNT","column":{"advanced_data_type":null,"certification_details":null,"certified_by":null,"column_name":"ESLint
+ Message","description":null,"expression":null,"filterable":true,"groupby":true,"id":745,"is_certified":false,"is_dttm":false,"python_date_format":null,"type":"STRING","type_generic":1,"verbose_name":null,"warning_markdown":null},"datasourceWarning":false,"expressionType":"SIMPLE","hasCustomLabel":false,"label":"COUNT(ESLint
+ Message)","optionName":"metric_n27rlniqi4h_23ktjxr2plb","sqlExpression":null}],"orderby":[["count",true]],"annotation_layers":[],"row_limit":50,"series_limit":0,"series_limit_metric":"count","order_desc":false,"url_params":{},"custom_params":{},"custom_form_data":{},"post_processing":[]}],"form_data":{"datasource":"22__table","viz_type":"table","slice_id":79,"query_mode":"aggregate","groupby":["Rule"],"temporal_columns_lookup":{"Timestamp":true},"metrics":[{"aggregate":"COUNT","column" [...]
+ Message","description":null,"expression":null,"filterable":true,"groupby":true,"id":745,"is_certified":false,"is_dttm":false,"python_date_format":null,"type":"STRING","type_generic":1,"verbose_name":null,"warning_markdown":null},"datasourceWarning":false,"expressionType":"SIMPLE","hasCustomLabel":false,"label":"COUNT(ESLint
+ Message)","optionName":"metric_n27rlniqi4h_23ktjxr2plb","sqlExpression":null}],"all_columns":[],"percent_metrics":[],"adhoc_filters":[{"clause":"WHERE","comparator":"No
+ filter","expressionType":"SIMPLE","operator":"TEMPORAL_RANGE","subject":"Timestamp"}],"timeseries_limit_metric":"count","order_by_cols":[],"row_limit":50,"server_page_length":10,"order_desc":false,"table_timestamp_format":"smart_date","show_cell_bars":true,"color_pn":true,"extra_form_data":{},"dashboards":[9],"force":false,"result_format":"json","result_type":"full"},"result_format":"json","result_type":"full"}'
+cache_timeout: null
+uuid: 477b5aa7-6d40-4e52-908e-e899c45935af
+version: 1.0.0
+dataset_uuid: 12fa12ec-9d44-4eb8-8222-9f495849ad82
diff --git a/superset/examples/configs/charts/Ten_Worst_Violations_ESLint_77.yaml b/superset/examples/configs/charts/Ten_Worst_Violations_ESLint_77.yaml
new file mode 100644
index 0000000000..a9e7e27461
--- /dev/null
+++ b/superset/examples/configs/charts/Ten_Worst_Violations_ESLint_77.yaml
@@ -0,0 +1,43 @@
+slice_name: Ten Worst Violations (ESLint)
+description: null
+certified_by: null
+certification_details: null
+viz_type: pie
+params:
+ datasource: 22__table
+ viz_type: pie
+ slice_id: 77
+ groupby:
+ - Rule
+ metric: count
+ adhoc_filters:
+ - clause: WHERE
+ comparator: No filter
+ expressionType: SIMPLE
+ operator: TEMPORAL_RANGE
+ subject: Timestamp
+ row_limit: 10
+ sort_by_metric: true
+ color_scheme: supersetColors
+ show_labels_threshold: 5
+ show_legend: true
+ legendType: scroll
+ legendOrientation: top
+ label_type: key
+ number_format: SMART_NUMBER
+ date_format: smart_date
+ show_labels: true
+ labels_outside: true
+ outerRadius: 70
+ donut: true
+ innerRadius: 30
+ extra_form_data: {}
+ dashboards:
+ - 9
+query_context: '{"datasource":{"id":22,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"having":"","where":""},"applied_time_extras":{},"columns":["Rule"],"metrics":["count"],"orderby":[["count",false]],"annotation_layers":[],"row_limit":10,"series_limit":0,"order_desc":true,"url_params":{},"custom_params":{},"custom_form_data":{}}],"form_data":{"datasource":"22__table","viz_type":"pie","slice_id":77,"groupby":["Rule"],"metric":"count","adhoc_filters":[{"clause":"WHERE","comparator":"No
+ filter","expressionType":"SIMPLE","operator":"TEMPORAL_RANGE","subject":"Timestamp"}],"row_limit":10,"sort_by_metric":true,"color_scheme":"supersetColors","show_labels_threshold":5,"show_legend":true,"legendType":"scroll","legendOrientation":"top","label_type":"key","number_format":"SMART_NUMBER","date_format":"smart_date","show_labels":true,"labels_outside":true,"outerRadius":70,"donut":true,"innerRadius":30,"extra_form_data":{},"dashboards":[9],"force":false,"result_format":"json","r [...]
+cache_timeout: null
+uuid: 785c3bc9-fc76-446f-b725-2905071c5601
+version: 1.0.0
+dataset_uuid: 12fa12ec-9d44-4eb8-8222-9f495849ad82
diff --git a/superset/examples/configs/charts/Total_Rule_Violations_78.yaml b/superset/examples/configs/charts/Total_Rule_Violations_78.yaml
new file mode 100644
index 0000000000..1f567c7fef
--- /dev/null
+++ b/superset/examples/configs/charts/Total_Rule_Violations_78.yaml
@@ -0,0 +1,62 @@
+slice_name: Total Rule Violations
+description: null
+certified_by: null
+certification_details: null
+viz_type: big_number
+params:
+ datasource: 21__table
+ viz_type: big_number
+ x_axis: Timestamp
+ metric:
+ expressionType: SIMPLE
+ column:
+ advanced_data_type: null
+ certification_details: null
+ certified_by: null
+ column_name: Count
+ description: null
+ expression: null
+ filterable: true
+ groupby: true
+ id: 736
+ is_certified: false
+ is_dttm: false
+ python_date_format: null
+ type: INT
+ type_generic: 0
+ verbose_name: null
+ warning_markdown: null
+ aggregate: SUM
+ sqlExpression: null
+ datasourceWarning: false
+ hasCustomLabel: false
+ label: SUM(Count)
+ optionName: metric_5o21t35wtbi_brhh0i312c
+ adhoc_filters:
+ - clause: WHERE
+ subject: Timestamp
+ operator: TEMPORAL_RANGE
+ comparator: No filter
+ expressionType: SIMPLE
+ show_trend_line: true
+ start_y_axis_at_zero: true
+ color_picker:
+ r: 0
+ g: 122
+ b: 135
+ a: 1
+ header_font_size: 0.4
+ subheader_font_size: 0.15
+ y_axis_format: SMART_NUMBER
+ time_format: smart_date
+ rolling_type: None
+ extra_form_data: {}
+ dashboards:
+ - 8
+query_context: '{"datasource":{"id":21,"type":"table"},"force":false,"queries":[{"filters":[{"col":"Timestamp","op":"TEMPORAL_RANGE","val":"No
+ filter"}],"extras":{"having":"","where":""},"applied_time_extras":{},"columns":[{"columnType":"BASE_AXIS","sqlExpression":"Timestamp","label":"Timestamp","expressionType":"SQL"}],"metrics":[{"expressionType":"SIMPLE","column":{"advanced_data_type":null,"certification_details":null,"certified_by":null,"column_name":"Count","description":null,"expression":null,"filterable":true,"groupby":true,"id":736,"is_certified":false,"is_dttm":false,"python_date_format":null,"type":"INT","type_gener [...]
+ filter","expressionType":"SIMPLE"}],"show_trend_line":true,"start_y_axis_at_zero":true,"color_picker":{"r":0,"g":122,"b":135,"a":1},"header_font_size":0.4,"subheader_font_size":0.15,"y_axis_format":"SMART_NUMBER","time_format":"smart_date","rolling_type":"None","extra_form_data":{},"dashboards":[8],"force":false,"result_format":"json","result_type":"full"},"result_format":"json","result_type":"full"}'
+cache_timeout: null
+uuid: 2a260abd-8ada-49f1-af51-e9b956f1826c
+version: 1.0.0
+dataset_uuid: a3b0a980-a1b4-4463-89fd-91e6d3347313
diff --git a/superset/examples/configs/dashboards/Superset_Technical_Debt_9.yaml b/superset/examples/configs/dashboards/Superset_Technical_Debt_9.yaml
new file mode 100644
index 0000000000..ef2d809b0e
--- /dev/null
+++ b/superset/examples/configs/dashboards/Superset_Technical_Debt_9.yaml
@@ -0,0 +1,448 @@
+dashboard_title: Superset Technical Debt
+description: null
+css: ''
+slug: null
+certified_by: ''
+certification_details: ''
+published: false
+uuid: 84cfc008-c88b-4982-8731-90b4aad2824b
+position:
+ CHART-2hoATK8Zsx:
+ children: []
+ id: CHART-2hoATK8Zsx
+ meta:
+ chartId: 77
+ height: 50
+ sliceName: Ten Worst Violations (ESLint)
+ uuid: 785c3bc9-fc76-446f-b725-2905071c5601
+ width: 3
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-5EgQDONu1A
+ - TAB-6MZrK7E3jw
+ - ROW-ceGPqkcuF0
+ type: CHART
+ CHART-8DBtgQCnUB:
+ children: []
+ id: CHART-8DBtgQCnUB
+ meta:
+ chartId: 74
+ height: 50
+ sliceName: Debt Timeline (by Rule)
+ uuid: 93f3714b-8401-415e-9d4c-2c8806dfc02f
+ width: 8
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - ROW-9MsZ7cYIcO
+ type: CHART
+ CHART-WlJ6qakWX-:
+ children: []
+ id: CHART-WlJ6qakWX-
+ meta:
+ chartId: 78
+ height: 50
+ sliceName: Total Rule Violations
+ uuid: 2a260abd-8ada-49f1-af51-e9b956f1826c
+ width: 4
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - ROW-9MsZ7cYIcO
+ type: CHART
+ CHART-explore-79-1:
+ children: []
+ id: CHART-explore-79-1
+ meta:
+ chartId: 79
+ height: 50
+ sliceName: Low Hanging Fruit by Rule
+ uuid: 477b5aa7-6d40-4e52-908e-e899c45935af
+ width: 3
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - ROW-zjzjUMtIHv
+ type: CHART
+ CHART-explore-80-1:
+ children: []
+ id: CHART-explore-80-1
+ meta:
+ chartId: 80
+ height: 50
+ sliceName: Low Hanging Fruit by File
+ uuid: 63a1ac01-9daf-4064-a455-ef9f5b64933f
+ width: 3
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - ROW-zjzjUMtIHv
+ type: CHART
+ CHART-hVo1r3LAvM:
+ children: []
+ id: CHART-hVo1r3LAvM
+ meta:
+ chartId: 75
+ height: 50
+ sliceName: Backlog - ESLint
+ uuid: 68cf3d84-afe6-496e-8960-401fe27d0c58
+ width: 12
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-5EgQDONu1A
+ - TAB-6MZrK7E3jw
+ - ROW-ceGPqkcuF0
+ type: CHART
+ CHART-ne2sYhM_IB:
+ children: []
+ id: CHART-ne2sYhM_IB
+ meta:
+ chartId: 76
+ height: 50
+ sliceName: 10 Worst Files
+ uuid: e34a4358-0681-43b1-839e-82f1399b97ce
+ width: 3
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-5EgQDONu1A
+ - TAB-6MZrK7E3jw
+ - ROW-ceGPqkcuF0
+ type: CHART
+ DASHBOARD_VERSION_KEY: v2
+ GRID_ID:
+ children:
+ - ROW-9MsZ7cYIcO
+ - TABS-5EgQDONu1A
+ id: GRID_ID
+ parents:
+ - ROOT_ID
+ type: GRID
+ HEADER_ID:
+ id: HEADER_ID
+ meta:
+ text: Superset Technical Debt
+ type: HEADER
+ ROOT_ID:
+ children:
+ - GRID_ID
+ id: ROOT_ID
+ type: ROOT
+ ROW-9MsZ7cYIcO:
+ children:
+ - CHART-WlJ6qakWX-
+ - CHART-8DBtgQCnUB
+ id: ROW-9MsZ7cYIcO
+ meta:
+ background: BACKGROUND_TRANSPARENT
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ type: ROW
+ ROW-9m7gUYjSq:
+ children:
+ - CHART-2hoATK8Zsx
+ - CHART-explore-79-1
+ - CHART-ne2sYhM_IB
+ - CHART-explore-80-1
+ id: ROW-9m7gUYjSq
+ meta:
+ background: BACKGROUND_TRANSPARENT
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-5EgQDONu1A
+ - TAB-6MZrK7E3jw
+ type: ROW
+ ROW-ceGPqkcuF0:
+ children:
+ - CHART-hVo1r3LAvM
+ id: ROW-ceGPqkcuF0
+ meta:
+ background: BACKGROUND_TRANSPARENT
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-5EgQDONu1A
+ - TAB-6MZrK7E3jw
+ type: ROW
+ TAB-6MZrK7E3jw:
+ children:
+ - ROW-9m7gUYjSq
+ - ROW-ceGPqkcuF0
+ id: TAB-6MZrK7E3jw
+ meta:
+ defaultText: Tab title
+ placeholder: Tab title
+ text: ESLint
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ - TABS-5EgQDONu1A
+ type: TAB
+ TABS-5EgQDONu1A:
+ children:
+ - TAB-6MZrK7E3jw
+ id: TABS-5EgQDONu1A
+ meta: {}
+ parents:
+ - ROOT_ID
+ - GRID_ID
+ type: TABS
+metadata:
+ chart_configuration:
+ '74':
+ id: 74
+ crossFilters:
+ scope: global
+ chartsInScope:
+ - 75
+ - 76
+ - 77
+ - 78
+ - 79
+ - 80
+ '75':
+ id: 75
+ crossFilters:
+ scope: global
+ chartsInScope:
+ - 74
+ - 76
+ - 77
+ - 78
+ - 79
+ - 80
+ '76':
+ id: 76
+ crossFilters:
+ scope: global
+ chartsInScope:
+ - 74
+ - 75
+ - 77
+ - 78
+ - 79
+ - 80
+ '77':
+ id: 77
+ crossFilters:
+ scope: global
+ chartsInScope:
+ - 74
+ - 75
+ - 76
+ - 78
+ - 79
+ - 80
+ '79':
+ id: 79
+ crossFilters:
+ scope: global
+ chartsInScope:
+ - 74
+ - 75
+ - 76
+ - 77
+ - 78
+ - 80
+ '80':
+ id: 80
+ crossFilters:
+ scope: global
+ chartsInScope:
+ - 74
+ - 75
+ - 76
+ - 77
+ - 78
+ - 79
+ global_chart_configuration:
+ scope:
+ rootPath:
+ - ROOT_ID
+ excluded: []
+ chartsInScope:
+ - 74
+ - 75
+ - 76
+ - 77
+ - 78
+ - 79
+ - 80
+ color_scheme: ''
+ refresh_frequency: 0
+ shared_label_colors:
+ react/forbid-component-props: '#FF7F44'
+ react/jsx-filename-extension: '#FCC700'
+ react-prefer-function-component/react-prefer-function-component: '#3CCCCB'
+ no-restricted-imports: '#8FD3E4'
+ import/prefer-default-export: '#ACE1C4'
+ '@typescript-eslint/no-unused-vars': '#B2B2B2'
+ '@typescript-eslint/no-explicit-any': '#FDE380'
+ react-hooks/exhaustive-deps: '#9EE5E5'
+ jsx-a11y/no-static-element-interactions: '#E04355'
+ import/extensions: '#A1A6BD'
+ ESLint, react/forbid-component-props: '#A868B7'
+ ESLint, react/jsx-filename-extension: '#FEC0A1'
+ ESLint, react-prefer-function-component/react-prefer-function-component: '#D3B3DA'
+ ESLint, no-restricted-imports: '#A38F79'
+ ESLint, import/prefer-default-export: '#EFA1AA'
+ ESLint, @typescript-eslint/no-unused-vars: '#D1C6BC'
+ ESLint, @typescript-eslint/no-explicit-any: '#FCC700'
+ ESLint, react-hooks/exhaustive-deps: '#A868B7'
+ ESLint, import/extensions: '#3CCCCB'
+ ESLint, jsx-a11y/no-static-element-interactions: '#A38F79'
+ ESLint, jest/no-disabled-tests: '#8FD3E4'
+ ESLint, @typescript-eslint/no-unsafe-return: '#A1A6BD'
+ ESLint, import/no-extraneous-dependencies: '#ACE1C4'
+ ESLint, no-undef: '#FEC0A1'
+ ESLint, @typescript-eslint/consistent-type-assertions: '#B2B2B2'
+ ESLint, jest-dom/prefer-to-have-attribute: '#EFA1AA'
+ ESLint, jest-dom/prefer-to-have-style: '#FDE380'
+ ESLint, jest-dom/prefer-to-have-text-content: '#D3B3DA'
+ ESLint, jsx-a11y/anchor-is-valid: '#9EE5E5'
+ ESLint, jsx-a11y/label-has-associated-control: '#D1C6BC'
+ ESLint, react-hooks/rules-of-hooks: '#1FA8C9'
+ ESLint, theme-colors/no-literal-colors: '#454E7C'
+ ESLint, @typescript-eslint/no-empty-interface: '#5AC189'
+ ESLint, @typescript-eslint/no-use-before-define: '#FF7F44'
+ ESLint, @typescript-eslint/no-var-requires: '#666666'
+ ESLint, import/no-mutable-exports: '#E04355'
+ ESLint, import/no-unresolved: '#FCC700'
+ ESLint, jest/no-standalone-expect: '#A868B7'
+ ESLint, jsx-a11y/click-events-have-key-events: '#3CCCCB'
+ ESLint, jsx-a11y/interactive-supports-focus: '#A38F79'
+ /Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/SqlEditor/index.jsx: '#1FA8C9'
+ ? /Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx
+ : '#454E7C'
+ /Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/TableElement/index.tsx: '#5AC189'
+ /Users/evan/GitHub/superset/superset-frontend/src/explore/components/PropertiesModal/index.tsx: '#FF7F44'
+ /Users/evan/GitHub/superset/superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/TTestTable.jsx: '#666666'
+ /Users/evan/GitHub/superset/superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx: '#E04355'
+ /Users/evan/GitHub/superset/superset-frontend/packages/superset-ui-core/test/dimension/svg/updateTextNode.test.ts: '#FCC700'
+ ? /Users/evan/GitHub/superset/superset-frontend/src/views/CRUD/data/database/DatabaseModal/DatabaseConnectionForm/TableCatalog.tsx
+ : '#A868B7'
+ /Users/evan/GitHub/superset/superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx: '#3CCCCB'
+ /Users/evan/GitHub/superset/superset-frontend/src/explore/components/ExploreViewContainer/index.jsx: '#A38F79'
+ color_scheme_domain: []
+ expanded_slices: {}
+ label_colors: {}
+ timed_refresh_immune_slices: []
+ cross_filters_enabled: true
+ default_filters: '{}'
+ native_filter_configuration:
+ - id: NATIVE_FILTER-jT104f_o8
+ controlValues:
+ enableEmptyFilter: false
+ defaultToFirstItem: false
+ multiSelect: true
+ searchAllOptions: false
+ inverseSelection: false
+ name: Process (Collection)
+ filterType: filter_select
+ targets:
+ - column:
+ name: Process
+ datasetUuid: a3b0a980-a1b4-4463-89fd-91e6d3347313
+ defaultDataMask:
+ extraFormData: {}
+ filterState: {}
+ ownState: {}
+ cascadeParentIds: []
+ scope:
+ rootPath:
+ - ROOT_ID
+ excluded: []
+ type: NATIVE_FILTER
+ description: ''
+ chartsInScope:
+ - 74
+ - 75
+ - 76
+ - 77
+ - 78
+ tabsInScope:
+ - TAB-6MZrK7E3jw
+ - id: NATIVE_FILTER-N062W3pFM
+ controlValues:
+ enableEmptyFilter: false
+ defaultToFirstItem: false
+ multiSelect: true
+ searchAllOptions: false
+ inverseSelection: false
+ name: Rule
+ filterType: filter_select
+ targets:
+ - column:
+ name: Rule
+ datasetUuid: a3b0a980-a1b4-4463-89fd-91e6d3347313
+ defaultDataMask:
+ extraFormData: {}
+ filterState: {}
+ ownState: {}
+ cascadeParentIds: []
+ scope:
+ rootPath:
+ - ROOT_ID
+ excluded: []
+ type: NATIVE_FILTER
+ description: ''
+ chartsInScope:
+ - 74
+ - 78
+ tabsInScope: []
+ - id: NATIVE_FILTER-UFZRu-GyK
+ controlValues:
+ enableEmptyFilter: false
+ name: Time Range
+ filterType: filter_time
+ targets:
+ - {}
+ defaultDataMask:
+ extraFormData: {}
+ filterState: {}
+ ownState: {}
+ cascadeParentIds: []
+ scope:
+ rootPath:
+ - ROOT_ID
+ excluded: []
+ type: NATIVE_FILTER
+ description: ''
+ chartsInScope:
+ - 74
+ - 78
+ tabsInScope: []
+ - id: NATIVE_FILTER-O1kzYk_ca
+ controlValues:
+ enableEmptyFilter: false
+ name: Violation Count
+ filterType: filter_range
+ targets:
+ - column:
+ name: Count
+ datasetUuid: a3b0a980-a1b4-4463-89fd-91e6d3347313
+ defaultDataMask:
+ extraFormData: {}
+ filterState: {}
+ ownState: {}
+ cascadeParentIds: []
+ scope:
+ rootPath:
+ - ROOT_ID
+ excluded:
+ - 75
+ - 76
+ - 77
+ type: NATIVE_FILTER
+ description: ''
+ chartsInScope:
+ - 74
+ - 78
+ - 79
+ - 80
+ tabsInScope: []
+version: 1.0.0
diff --git a/superset/examples/configs/datasets/examples/Superset_Tech_Debt_-_Aggregated.yaml b/superset/examples/configs/datasets/examples/Superset_Tech_Debt_-_Aggregated.yaml
new file mode 100644
index 0000000000..e516ccb0ef
--- /dev/null
+++ b/superset/examples/configs/datasets/examples/Superset_Tech_Debt_-_Aggregated.yaml
@@ -0,0 +1,90 @@
+table_name: Superset Tech Debt - Aggregated
+main_dttm_col: Timestamp
+description: null
+default_endpoint: null
+offset: 0
+cache_timeout: null
+schema: main
+sql: SELECT * FROM "https://docs.google.com/spreadsheets/d/1oABNnzxJYzwUrHjr_c9wfYEq9dFL1ScVof9LlaAdxvo/"
+params: null
+template_params: null
+filter_select_enabled: true
+fetch_values_predicate: null
+extra: null
+normalize_columns: false
+always_filter_main_dttm: false
+uuid: a3b0a980-a1b4-4463-89fd-91e6d3347313
+metrics:
+- metric_name: count
+ verbose_name: COUNT(*)
+ metric_type: count
+ expression: COUNT(*)
+ description: null
+ d3format: null
+ currency: null
+ extra:
+ warning_markdown: ''
+ warning_text: null
+columns:
+- column_name: Timestamp
+ verbose_name: null
+ is_dttm: true
+ is_active: true
+ type: DATETIME
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Count
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: INT
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Description
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Process
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Rule
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+version: 1.0.0
+database_uuid: c46a7af6-bbb1-485b-9c01-9e833d60ce12
diff --git a/superset/examples/configs/datasets/examples/Superset_Tech_Debt_-_ESLint.yaml b/superset/examples/configs/datasets/examples/Superset_Tech_Debt_-_ESLint.yaml
new file mode 100644
index 0000000000..9e0641ecb3
--- /dev/null
+++ b/superset/examples/configs/datasets/examples/Superset_Tech_Debt_-_ESLint.yaml
@@ -0,0 +1,114 @@
+table_name: Superset Tech Debt - ESLint
+main_dttm_col: Timestamp
+description: null
+default_endpoint: null
+offset: 0
+cache_timeout: null
+schema: main
+sql: SELECT * FROM "https://docs.google.com/spreadsheets/d/1oABNnzxJYzwUrHjr_c9wfYEq9dFL1ScVof9LlaAdxvo/edit#gid=1042232483"
+params: null
+template_params: null
+filter_select_enabled: true
+fetch_values_predicate: null
+extra: null
+normalize_columns: false
+always_filter_main_dttm: false
+uuid: 12fa12ec-9d44-4eb8-8222-9f495849ad82
+metrics:
+- metric_name: count
+ verbose_name: COUNT(*)
+ metric_type: count
+ expression: COUNT(*)
+ description: null
+ d3format: null
+ currency: null
+ extra:
+ warning_markdown: ''
+ warning_text: null
+columns:
+- column_name: Rule Description
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: ESLint Message
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Timestamp
+ verbose_name: null
+ is_dttm: true
+ is_active: true
+ type: DATETIME
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Column
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: INT
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: File
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Rule
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: STRING
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+- column_name: Line
+ verbose_name: null
+ is_dttm: false
+ is_active: true
+ type: INT
+ advanced_data_type: null
+ groupby: true
+ filterable: true
+ expression: null
+ description: null
+ python_date_format: null
+ extra: {}
+version: 1.0.0
+database_uuid: c46a7af6-bbb1-485b-9c01-9e833d60ce12