You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2021/09/14 20:11:03 UTC
[GitHub] [superset] ktmud commented on a change in pull request #16660: [WIP] feat: add support for generic series limit
ktmud commented on a change in pull request #16660:
URL: https://github.com/apache/superset/pull/16660#discussion_r708589140
##########
File path: superset/common/query_object.py
##########
@@ -74,63 +77,68 @@ class QueryObject: # pylint: disable=too-many-instance-attributes
annotation_layers: List[Dict[str, Any]]
applied_time_extras: Dict[str, str]
apply_fetch_values_predicate: bool
- granularity: Optional[str]
+ columns: List[str]
+ datasource: Optional[BaseDatasource]
+ extras: Dict[str, Any]
+ filter: List[QueryObjectFilterClause]
from_dttm: Optional[datetime]
- to_dttm: Optional[datetime]
+ granularity: Optional[str]
inner_from_dttm: Optional[datetime]
inner_to_dttm: Optional[datetime]
+ is_rowcount: bool
is_timeseries: bool
- time_shift: Optional[timedelta]
- groupby: List[str]
- metrics: Optional[List[Metric]]
- row_limit: int
- row_offset: int
- filter: List[QueryObjectFilterClause]
- timeseries_limit: int
- timeseries_limit_metric: Optional[Metric]
order_desc: bool
- extras: Dict[str, Any]
- columns: List[str]
orderby: List[OrderBy]
- post_processing: List[Dict[str, Any]]
- datasource: Optional[BaseDatasource]
+ metrics: Optional[List[Metric]]
result_type: Optional[ChartDataResultType]
- is_rowcount: bool
+ row_limit: int
+ row_offset: int
+ series_columns: List[str]
+ series_limit: int
+ series_limit_metric: Optional[Metric]
time_offsets: List[str]
+ time_shift: Optional[timedelta]
+ to_dttm: Optional[datetime]
+ post_processing: List[Dict[str, Any]]
def __init__( # pylint: disable=too-many-arguments,too-many-locals
self,
- datasource: Optional[DatasourceDict] = None,
- result_type: Optional[ChartDataResultType] = None,
annotation_layers: Optional[List[Dict[str, Any]]] = None,
applied_time_extras: Optional[Dict[str, str]] = None,
apply_fetch_values_predicate: bool = False,
- granularity: Optional[str] = None,
- metrics: Optional[List[Metric]] = None,
- groupby: Optional[List[str]] = None,
+ columns: Optional[List[str]] = None,
+ datasource: Optional[DatasourceDict] = None,
+ extras: Optional[Dict[str, Any]] = None,
filters: Optional[List[QueryObjectFilterClause]] = None,
- time_range: Optional[str] = None,
- time_shift: Optional[str] = None,
+ granularity: Optional[str] = None,
+ is_rowcount: bool = False,
is_timeseries: Optional[bool] = None,
- timeseries_limit: int = 0,
- row_limit: Optional[int] = None,
- row_offset: Optional[int] = None,
- timeseries_limit_metric: Optional[Metric] = None,
+ metrics: Optional[List[Metric]] = None,
order_desc: bool = True,
- extras: Optional[Dict[str, Any]] = None,
- columns: Optional[List[str]] = None,
orderby: Optional[List[OrderBy]] = None,
post_processing: Optional[List[Optional[Dict[str, Any]]]] = None,
- is_rowcount: bool = False,
+ result_type: Optional[ChartDataResultType] = None,
+ row_limit: Optional[int] = None,
+ row_offset: Optional[int] = None,
+ series_columns: Optional[List[str]] = None,
+ series_limit: int = 0,
+ series_limit_metric: Optional[Metric] = None,
+ time_range: Optional[str] = None,
+ time_shift: Optional[str] = None,
**kwargs: Any,
):
columns = columns or []
- groupby = groupby or []
extras = extras or {}
annotation_layers = annotation_layers or []
self.time_offsets = kwargs.get("time_offsets", [])
self.inner_from_dttm = kwargs.get("inner_from_dttm")
self.inner_to_dttm = kwargs.get("inner_to_dttm")
+ if series_columns:
+ self.series_columns = series_columns
+ elif is_timeseries and metrics:
+ self.series_columns = columns
+ else:
+ self.series_columns = []
Review comment:
```python
self.series_columns = series_columns or (columns if is_timeseries and metrics else [])
```
Would this be more Pythonic?
I'm also wondering whether we should have another layer of parameter consolidation before `QueryObject` so to handle all the special overrides & fallbacks for legacy/deprecated parameters (e.g. `timeseries_limit` vs `series_limit`, `columns` vs `groupby`, `sortby` vs `orderby`). By isolating parameter consolidation in the Flask view handler layer, we reduce the number of parameters for `QueryObject` itself and simply all downstream functions, which may help cleaning up deprecated code faster---all without affecting backward compatibility.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org