Skip to content

Commit

Permalink
[table viz] allow showing time granularity in table (#2284)
Browse files Browse the repository at this point in the history
The time granularity currently does not show up in table viz. Now
defining a granularity will add an extra ISO-formatted time column in
the table. The column will be added for both grouped by and not grouped
by.
  • Loading branch information
mistercrunch committed Feb 27, 2017
1 parent efffa92 commit 9dd7778
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions superset/viz.py
Original file line number Diff line number Diff line change
Expand Up @@ -363,24 +363,34 @@ class TableViz(BaseViz):
credits = 'a <a href="https://github.com/airbnb/superset">Superset</a> original'
is_timeseries = False

def should_be_timeseries(self):
fd = self.form_data
# TODO handle datasource-type-specific code in datasource
return (
(fd.get('granularity') and fd.get('granularity') != 'all') or
(fd.get('granularity_sqla') and fd.get('time_grain_sqla'))
)

def query_obj(self):
d = super(TableViz, self).query_obj()
fd = self.form_data

if fd.get('all_columns') and (fd.get('groupby') or fd.get('metrics')):
raise Exception(
"Choose either fields to [Group By] and [Metrics] or "
"[Columns], not both")

if fd.get('all_columns'):
d['columns'] = fd.get('all_columns')
d['groupby'] = []
order_by_cols = fd.get('order_by_cols') or []
d['orderby'] = [json.loads(t) for t in order_by_cols]

d['is_timeseries'] = self.should_be_timeseries()
return d

def get_data(self, df):
if (
self.form_data.get("granularity") == "all" and
DTTM_ALIAS in df):
if not self.should_be_timeseries() and DTTM_ALIAS in df:
del df[DTTM_ALIAS]

return dict(
Expand Down

0 comments on commit 9dd7778

Please sign in to comment.