diff --git a/superset/assets/src/explore/controls.jsx b/superset/assets/src/explore/controls.jsx index ddf0775974..50fe3bfa07 100644 --- a/superset/assets/src/explore/controls.jsx +++ b/superset/assets/src/explore/controls.jsx @@ -832,22 +832,23 @@ export const controls = { 'column in the table. Also note that the ' + 'filter below is applied against this column or ' + 'expression'), - default: (c) => { - if (c.options && c.options.length > 0) { - return c.options[0].column_name; - } - return null; - }, + default: control => control.default, clearable: false, optionRenderer: c => , valueRenderer: c => , valueKey: 'column_name', mapStateToProps: (state) => { - const newState = {}; + const props = {}; if (state.datasource) { - newState.options = state.datasource.columns.filter(c => c.is_dttm); + props.options = state.datasource.columns.filter(c => c.is_dttm); + props.default = null; + if (state.datasource.main_dttm_col) { + props.default = state.datasource.main_dttm_col; + } else if (props.options && props.options.length > 0) { + props.default = props.options[0].column_name; + } } - return newState; + return props; }, }, diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index e6549260d0..61483cc349 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -410,6 +410,7 @@ class SqlaTable(Model, BaseDatasource): grains = [(g.duration, g.name) for g in grains] d['granularity_sqla'] = utils.choicify(self.dttm_cols) d['time_grain_sqla'] = grains + d['main_dttm_col'] = self.main_dttm_col return d def values_for_column(self, column_name, limit=10000):