From a52b9ee8fffb123d98e111c26ca82714deae49de Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Tue, 7 Apr 2020 19:37:03 +0200 Subject: [PATCH] Handle empty dataframes in TableViz (#9480) TableViz fails to display empty dataframes returning an error like: "None of [Index(['project', 'count'], dtype='object')] are in the [columns]" The behavior has been observed while testing 0.36.0rc3 with Druid datasources. issue: #9468 --- superset/viz.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/superset/viz.py b/superset/viz.py index 5a9a6ac2bde02..f17f234f4bfe8 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -625,17 +625,18 @@ def get_data(self, df: pd.DataFrame) -> VizData: self.form_data.get("percent_metrics") or [] ) - df = pd.concat( - [ - df[non_percent_metric_columns], - ( - df[percent_metric_columns] - .div(df[percent_metric_columns].sum()) - .add_prefix("%") - ), - ], - axis=1, - ) + if not df.empty: + df = pd.concat( + [ + df[non_percent_metric_columns], + ( + df[percent_metric_columns] + .div(df[percent_metric_columns].sum()) + .add_prefix("%") + ), + ], + axis=1, + ) data = self.handle_js_int_overflow( dict(records=df.to_dict(orient="records"), columns=list(df.columns))