You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2019/03/13 20:22:39 UTC
[incubator-superset] branch master updated: [db-engine-spec]
Aligning Hive/Presto partition logic (#7007)
This is an automated email from the ASF dual-hosted git repository.
johnbodley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 05be866 [db-engine-spec] Aligning Hive/Presto partition logic (#7007)
05be866 is described below
commit 05be86611785fef2904992e4e7d31dce23f1c51b
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Wed Mar 13 13:22:28 2019 -0700
[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 64bffe7..c738c9f 100644
--- a/superset/db_engine_specs.py
+++ b/superset/db_engine_specs.py
@@ -986,16 +986,16 @@ class PrestoEngineSpec(BaseEngineSpec):
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 @@ class PrestoEngineSpec(BaseEngineSpec):
: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 @@ class HiveEngineSpec(PrestoEngineSpec):
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 @@ class HiveEngineSpec(PrestoEngineSpec):
@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(