Skip to content

Commit

Permalink
fix: Revert default series sort-by metric and enforce non-xor with se…
Browse files Browse the repository at this point in the history
…ries limit (#17236)

Co-authored-by: John Bodley <john.bodley@airbnb.com>
  • Loading branch information
john-bodley and john-bodley committed Nov 3, 2021
1 parent 36f489e commit 1c12167
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 15 deletions.
26 changes: 19 additions & 7 deletions superset-frontend/src/explore/controls.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ export const D3_FORMAT_OPTIONS = [

const ROW_LIMIT_OPTIONS = [10, 50, 100, 250, 500, 1000, 5000, 10000, 50000];

const SERIES_LIMITS = [0, 5, 10, 25, 50, 100, 500];
const SERIES_LIMITS = [5, 10, 25, 50, 100, 500];

export const D3_FORMAT_DOCS =
'D3 format syntax: https://github.com/d3/d3-format';
Expand Down Expand Up @@ -123,7 +123,10 @@ const groupByControl = {
label: t('Group by'),
default: [],
includeTime: false,
description: t('One or many controls to group by'),
description: t(
'One or many columns to group by. High cardinality groupings should include a sort by metric ' +
'and series limit to limit the number of fetched and rendered series.',
),
optionRenderer: c => <StyledColumnOption column={c} showType />,
valueKey: 'column_name',
filterOption: ({ data: opt }, text) =>
Expand Down Expand Up @@ -358,6 +361,10 @@ export const controls = {
validators: [legacyValidateInteger],
default: 10000,
choices: formatSelectOptions(ROW_LIMIT_OPTIONS),
description: t(
'Limits the number of rows that get displayed. Should be used in conjunction with a sort ' +
'by metric.',
),
},

limit: {
Expand All @@ -366,11 +373,13 @@ export const controls = {
label: t('Series limit'),
validators: [legacyValidateInteger],
choices: formatSelectOptions(SERIES_LIMITS),
clearable: true,
description: t(
'Limits the number of time series that get displayed. A sub query ' +
'(or an extra phase where sub queries are not supported) is applied to limit ' +
'the number of time series that get fetched and displayed. This feature is useful ' +
'when grouping by high cardinality dimension(s).',
'Limits the number of series that get displayed. Should be used in conjunction with a sort ' +
'by metric. A joined subquery (or an extra phase where subqueries are not supported) is ' +
'applied to limit the number of series that get fetched and rendered. This feature is ' +
'useful when grouping by high cardinality column(s) though does increase the query ' +
'complexity and cost.',
),
},

Expand All @@ -379,7 +388,10 @@ export const controls = {
label: t('Sort by'),
default: null,
clearable: true,
description: t('Metric used to define the top series'),
description: t(
'Metric used to define the top series. Should be used in conjunction with the series or ' +
'row limit',
),
mapStateToProps: state => ({
columns: state.datasource ? state.datasource.columns : [],
savedMetrics: state.datasource ? state.datasource.metrics : [],
Expand Down
5 changes: 0 additions & 5 deletions superset/utils/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1317,11 +1317,6 @@ def get_metric_names(metrics: Sequence[Metric]) -> List[str]:
return [metric for metric in map(get_metric_name, metrics) if metric]


def get_first_metric_name(metrics: Sequence[Metric]) -> Optional[str]:
metric_labels = get_metric_names(metrics)
return metric_labels[0] if metric_labels else None


def ensure_path_exists(path: str) -> None:
try:
os.makedirs(path)
Expand Down
4 changes: 1 addition & 3 deletions superset/viz.py
Original file line number Diff line number Diff line change
Expand Up @@ -1251,9 +1251,7 @@ class NVD3TimeSeriesViz(NVD3Viz):

def query_obj(self) -> QueryObjectDict:
query_obj = super().query_obj()
sort_by = self.form_data.get(
"timeseries_limit_metric"
) or utils.get_first_metric_name(query_obj.get("metrics") or [])
sort_by = self.form_data.get("timeseries_limit_metric")
is_asc = not self.form_data.get("order_desc")
if sort_by:
sort_by_label = utils.get_metric_name(sort_by)
Expand Down

0 comments on commit 1c12167

Please sign in to comment.