diff --git a/superset/dataframe.py b/superset/dataframe.py index f3b9f3e1be4..66034bb9e2c 100644 --- a/superset/dataframe.py +++ b/superset/dataframe.py @@ -14,6 +14,8 @@ from datetime import datetime, date from past.builtins import basestring import pandas as pd +from pandas.core.dtypes.dtypes import ExtensionDtype + import numpy as np @@ -52,6 +54,8 @@ class SupersetDataFrame(object): @classmethod def db_type(cls, dtype): """Given a numpy dtype, Returns a generic database type""" + if isinstance(dtype, ExtensionDtype): + return cls.type_map.get(dtype.kind) return cls.type_map.get(dtype.char) @classmethod @@ -87,8 +91,10 @@ class SupersetDataFrame(object): # consider checking for key substring too. if cls.is_id(column_name): return 'count_distinct' - if np.issubdtype(dtype, np.number): + if (issubclass(dtype.type, np.generic) and + np.issubdtype(dtype, np.number)): return 'sum' + return None @property def columns(self):