From 458b3569155b4e3d53a77ab7ecfb301ae1ddbee2 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Tue, 14 Aug 2018 13:01:28 -0700 Subject: [PATCH] [bugfix] TIMESTAMP not detected as date (#5629) * [bugfix] TIMESTAMP not detected as date * minor tweak (cherry picked from commit 4c2be71e838dfde511d486104160d37642f4b3d8) --- superset/dataframe.py | 8 ++++++-- tests/dataframe_test.py | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/superset/dataframe.py b/superset/dataframe.py index 2fecad9264147..447aa683df5c8 100644 --- a/superset/dataframe.py +++ b/superset/dataframe.py @@ -134,8 +134,12 @@ def datetime_conversion_rate(cls, data_series): @classmethod def is_date(cls, dtype): - if dtype.name: - return dtype.name.startswith('datetime') + if dtype and dtype.name: + return any([ + dtype.name.lower().startswith(s) + for s in ['date', 'time'] + ]) + return False @classmethod def is_dimension(cls, dtype, column_name): diff --git a/tests/dataframe_test.py b/tests/dataframe_test.py index a773f08c4e376..c5ea504345b78 100644 --- a/tests/dataframe_test.py +++ b/tests/dataframe_test.py @@ -4,6 +4,8 @@ from __future__ import print_function from __future__ import unicode_literals +import numpy as np + from superset.dataframe import dedup, SupersetDataFrame from superset.db_engine_specs import BaseEngineSpec from .base_tests import SupersetTestCase @@ -118,6 +120,13 @@ def test_get_columns_type_inference(self): ], ) + def test_is_date(self): + f = SupersetDataFrame.is_date + self.assertEquals(f(np.dtype('M')), True) + + self.assertEquals(f(None), False) + self.assertEquals(f(np.dtype(np.int32)), False) + def test_dedup_with_data(self): data = [ ('a', 1),