From b58cfbcb9124d6c43dfd9b748f777b07b101aa5f Mon Sep 17 00:00:00 2001 From: Rogan Date: Sat, 29 Jul 2017 05:16:38 +0800 Subject: [PATCH] add combine config for metrics in pivot table (#3086) * add combine config for metrics in pivot table * change method to stack/unstack * update backendSync --- superset/assets/backendSync.json | 6 ++++++ superset/assets/javascripts/explore/stores/controls.jsx | 8 ++++++++ superset/assets/javascripts/explore/stores/visTypes.js | 2 +- superset/viz.py | 3 +++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/superset/assets/backendSync.json b/superset/assets/backendSync.json index 1d8ba55fa7..71e7130328 100644 --- a/superset/assets/backendSync.json +++ b/superset/assets/backendSync.json @@ -750,6 +750,12 @@ "default": false, "description": "Sort bars by x labels." }, + "combine_metric": { + "type": "CheckboxControl", + "label": "Combine Metrics", + "default": false, + "description": "Display metrics side by side within each column, as opposed to each column being displayed side by side for each metric." + }, "show_controls": { "type": "CheckboxControl", "label": "Extra Controls", diff --git a/superset/assets/javascripts/explore/stores/controls.jsx b/superset/assets/javascripts/explore/stores/controls.jsx index 03d1fbddd5..3d4151bcfa 100644 --- a/superset/assets/javascripts/explore/stores/controls.jsx +++ b/superset/assets/javascripts/explore/stores/controls.jsx @@ -249,6 +249,14 @@ export const controls = { description: 'Sort bars by x labels.', }, + combine_metric: { + type: 'CheckboxControl', + label: 'Combine Metrics', + default: false, + description: 'Display metrics side by side within each column, as ' + + 'opposed to each column being displayed side by side for each metric.', + }, + show_controls: { type: 'CheckboxControl', label: 'Extra Controls', diff --git a/superset/assets/javascripts/explore/stores/visTypes.js b/superset/assets/javascripts/explore/stores/visTypes.js index 7291286a1f..4dd2700c5e 100644 --- a/superset/assets/javascripts/explore/stores/visTypes.js +++ b/superset/assets/javascripts/explore/stores/visTypes.js @@ -337,7 +337,7 @@ export const visTypes = { controlSetRows: [ ['groupby', 'columns'], ['metrics', 'pandas_aggfunc'], - ['number_format', 'pivot_margins'], + ['number_format', 'combine_metric', 'pivot_margins'], ], }, ], diff --git a/superset/viz.py b/superset/viz.py index 19ff165e26..de1f635ec5 100755 --- a/superset/viz.py +++ b/superset/viz.py @@ -402,6 +402,9 @@ class PivotTableViz(BaseViz): aggfunc=self.form_data.get('pandas_aggfunc'), margins=self.form_data.get('pivot_margins'), ) + # Display metrics side by side with each column + if self.form_data.get('combine_metric'): + df = df.stack(0).unstack() return dict( columns=list(df.columns), html=df.to_html(