From 05be86611785fef2904992e4e7d31dce23f1c51b Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Wed, 13 Mar 2019 13:22:28 -0700 Subject: [PATCH] [db-engine-spec] Aligning Hive/Presto partition logic (#7007) --- superset/db_engine_specs.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py index 64bffe75bc38..c738c9f3ab4b 100644 --- a/superset/db_engine_specs.py +++ b/superset/db_engine_specs.py @@ -986,16 +986,16 @@ def where_latest_partition( except Exception: # table is not partitioned return False - for c in columns: - if c.get('name') == col_name: - return qry.where(Column(col_name) == value) + if value is not None: + for c in columns: + if c.get('name') == col_name: + return qry.where(Column(col_name) == value) return False @classmethod def _latest_partition_from_df(cls, df): - recs = df.to_records(index=False) - if recs: - return recs[0][0] + if not df.empty: + return df.to_records(index=False)[0][0] @classmethod def latest_partition(cls, table_name, schema, database, show_first=False): @@ -1012,7 +1012,7 @@ def latest_partition(cls, table_name, schema, database, show_first=False): :type show_first: bool >>> latest_partition('foo_table') - '2018-01-01' + ('ds', '2018-01-01') """ indexes = database.get_indexes(table_name, schema) if len(indexes[0]['column_names']) < 1: @@ -1330,9 +1330,10 @@ def where_latest_partition( except Exception: # table is not partitioned return False - for c in columns: - if c.get('name') == col_name: - return qry.where(Column(col_name) == value) + if value is not None: + for c in columns: + if c.get('name') == col_name: + return qry.where(Column(col_name) == value) return False @classmethod @@ -1343,7 +1344,8 @@ def latest_sub_partition(cls, table_name, schema, database, **kwargs): @classmethod def _latest_partition_from_df(cls, df): """Hive partitions look like ds={partition name}""" - return df.ix[:, 0].max().split('=')[1] + if not df.empty: + return df.ix[:, 0].max().split('=')[1] @classmethod def _partition_query(