diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 0554dfab31..824d7c9ee4 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -20,6 +20,7 @@ from flask import escape, Markup from flask_appbuilder import Model from flask_appbuilder.models.decorators import renders from flask_babel import lazy_gettext as _ +import pandas from pydruid.client import PyDruid from pydruid.utils.aggregators import count from pydruid.utils.dimensions import MapLookupExtraction, RegexExtraction @@ -1346,7 +1347,10 @@ class DruidDatasource(Model, BaseDatasource): df = client.export_pandas() if df is None or df.size == 0: - raise Exception(_('No data was returned.')) + return QueryResult( + df=pandas.DataFrame([]), + query=query_str, + duration=datetime.now() - qry_start_dttm) df = self.homogenize_types(df, query_obj.get('groupby', [])) df.columns = [ diff --git a/superset/models/core.py b/superset/models/core.py index 05db09f650..50f657c8e3 100644 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -794,9 +794,14 @@ class Database(Model, AuditMixinNullable, ImportMixin): self.db_engine_spec.execute(cursor, sqls[-1]) + if cursor.description is not None: + columns = [col_desc[0] for col_desc in cursor.description] + else: + columns = [] + df = pd.DataFrame.from_records( data=list(cursor.fetchall()), - columns=[col_desc[0] for col_desc in cursor.description], + columns=columns, coerce_float=True, ) diff --git a/superset/viz.py b/superset/viz.py index b0a71d5a9d..c295e5a88a 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -179,7 +179,6 @@ class BaseViz(object): return None self.error_msg = '' - self.results = None timestamp_format = None if self.datasource.type == 'table':