mirror of
https://github.com/apache/superset.git
synced 2026-04-29 13:04:22 +00:00
Compare commits
2 Commits
embedded-e
...
titan-filt
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72f4a52c97 | ||
|
|
c85229d9b4 |
@@ -18,6 +18,10 @@ from collections import defaultdict
|
||||
from textwrap import dedent
|
||||
from typing import Any
|
||||
|
||||
from flask import current_app
|
||||
|
||||
from superset import db
|
||||
from superset.connectors.sqla.models import SqlaTable
|
||||
from superset.models.dashboard import Dashboard
|
||||
from superset.models.slice import Slice
|
||||
from superset.utils import json
|
||||
@@ -79,6 +83,11 @@ def convert_filter_scopes_to_native_filters( # pylint: disable=invalid-name,too
|
||||
key = str(filter_box.id)
|
||||
params = json.loads(filter_box.params or "{}")
|
||||
|
||||
parameter_configs = {
|
||||
f"__parameter_{parameter_config['key']}": parameter_config
|
||||
for parameter_config in params.get("parameter_configs", [])
|
||||
}
|
||||
|
||||
for field, filter_scope in filter_scope_by_key_and_field[key].items():
|
||||
default = default_filters.get(key, {}).get(field)
|
||||
short_id = f"{shortid()}"[:9]
|
||||
@@ -157,6 +166,111 @@ def convert_filter_scopes_to_native_filters( # pylint: disable=invalid-name,too
|
||||
"extraFormData": {"time_range": default},
|
||||
"filterState": {"value": default},
|
||||
}
|
||||
elif field == "__group_by" and params.get("group_by_filters"):
|
||||
datasource = db.session.query(SqlaTable).get(filter_box.datasource_id)
|
||||
datasource_columns = [
|
||||
column.column_name for column in datasource.columns
|
||||
]
|
||||
fltr.update(
|
||||
{
|
||||
"filterType": "filter_groupby",
|
||||
"name": f"{filter_box.datasource_name} group by",
|
||||
"description": "",
|
||||
"targets": [
|
||||
{
|
||||
"datasetId": filter_box.datasource_id,
|
||||
"column": {"name": datasource_columns},
|
||||
}
|
||||
],
|
||||
"controlValues": {
|
||||
"enableEmptyFilter": False,
|
||||
"multiSelect": True,
|
||||
},
|
||||
"defaultDataMask": {
|
||||
"extraFormData": {},
|
||||
"filterState": {},
|
||||
"ownState": {},
|
||||
},
|
||||
}
|
||||
)
|
||||
elif field == "__exp_t_c" and params.get("exp_t_c_selectors"):
|
||||
ab_test_col = (
|
||||
current_app.config["TABLE_DEF"]
|
||||
.get(filter_box.datasource_name, {})
|
||||
.get("ab_test_column")
|
||||
)
|
||||
fltr.extend(
|
||||
{
|
||||
"filterType": filter_type,
|
||||
"name": "Experiment Treatment",
|
||||
"description": "",
|
||||
"targets": [
|
||||
{
|
||||
"datasetId": filter_box.datasource_id,
|
||||
"column": {"name": ab_test_col},
|
||||
}
|
||||
],
|
||||
"adhoc_filters": params.get("adhoc_filters", []),
|
||||
"time_range": params.get("time_range"),
|
||||
"granularity_sqla": params.get("granularity_sqla"),
|
||||
"controlValues": {"enableEmptyFilter": False},
|
||||
"defaultDataMask": {
|
||||
"extraFormData": {},
|
||||
"filterState": {},
|
||||
"ownState": {},
|
||||
},
|
||||
}
|
||||
for filter_type in ["filter_exp_c_select", "filter_exp_t_select"]
|
||||
)
|
||||
elif field in parameter_configs:
|
||||
parameter_config = parameter_configs[field]
|
||||
default_values = [
|
||||
value.strip()
|
||||
for value in parameter_config["defaultValue"].split(";")
|
||||
]
|
||||
fltr.update(
|
||||
{
|
||||
"filterType": "filter_parameter",
|
||||
"name": (
|
||||
filter_box.datasource_name
|
||||
+ " parameter "
|
||||
+ parameter_config["parameter"]
|
||||
),
|
||||
"description": "",
|
||||
"targets": [{"datasetId": filter_box.datasource_id}],
|
||||
"defaultDataMask": {
|
||||
"extraFormData": {
|
||||
"filters": [
|
||||
{
|
||||
"col": (
|
||||
"__parameter_"
|
||||
+ parameter_config["dataType"]
|
||||
+ "_"
|
||||
+ parameter_config["parameter"]
|
||||
),
|
||||
"OP": "IN",
|
||||
"val": default_values,
|
||||
},
|
||||
],
|
||||
},
|
||||
"filterState": {
|
||||
"validateMessage": False,
|
||||
"validateStatus": False,
|
||||
"label": ", ".join(default_values),
|
||||
"value": default_values,
|
||||
},
|
||||
},
|
||||
"time_range": params.get("time_range"),
|
||||
"granularity_sqla": params.get("granularity_sqla"),
|
||||
"controlValues": {
|
||||
"parameterDataType": parameter_config["dataType"],
|
||||
"parameter": parameter_config["parameter"],
|
||||
"enableEmptyFilter": parameter_config["clearable"],
|
||||
"multiSelect": parameter_config["multiple"],
|
||||
"searchAllOptions": parameter_config["searchAllOptions"],
|
||||
},
|
||||
},
|
||||
)
|
||||
else:
|
||||
for config in params.get("filter_configs") or []:
|
||||
if config["column"] == field:
|
||||
|
||||
@@ -63,6 +63,16 @@ def convert_filter_scopes( # noqa: C901
|
||||
add_filter_scope(filter_fields, "__time_col", filter_id)
|
||||
if slice_params.get("show_sqla_time_granularity"):
|
||||
add_filter_scope(filter_fields, "__time_grain", filter_id)
|
||||
if slice_params.get("group_by_filters"):
|
||||
add_filter_scope(filter_fields, "__group_by", filter_id)
|
||||
if slice_params.get("exp_t_c_selectors"):
|
||||
add_filter_scope(filter_fields, "__exp_t_c", filter_id)
|
||||
for parameter_config in slice_params.get("parameter_configs", []):
|
||||
add_filter_scope(
|
||||
filter_fields,
|
||||
f"__parameter_{parameter_config['key']}",
|
||||
filter_id,
|
||||
)
|
||||
for config in configs:
|
||||
add_filter_scope(filter_fields, config.get("column"), filter_id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user