mirror of
https://github.com/apache/superset.git
synced 2026-04-19 08:04:53 +00:00
fix: Temporal filter conversion in viz migrations (#33224)
This commit is contained in:
committed by
GitHub
parent
17d7b72f3b
commit
6db3a4d9d2
@@ -26,6 +26,7 @@ from superset import conf
|
||||
from superset.constants import TimeGrain
|
||||
from superset.migrations.shared.utils import paginated_update, try_load_json
|
||||
from superset.utils import json
|
||||
from superset.utils.date_parser import get_since_until
|
||||
|
||||
logger = logging.getLogger("alembic")
|
||||
|
||||
@@ -113,14 +114,33 @@ class MigrateViz:
|
||||
}
|
||||
|
||||
if isinstance(granularity_sqla, dict):
|
||||
temporal_filter["comparator"] = None
|
||||
temporal_filter["expressionType"] = "SQL"
|
||||
temporal_filter["subject"] = granularity_sqla["label"]
|
||||
temporal_filter["sqlExpression"] = granularity_sqla["sqlExpression"]
|
||||
since, until = get_since_until(time_range=time_range)
|
||||
if not since and not until:
|
||||
temporal_filter = {}
|
||||
else:
|
||||
temporal_filter["comparator"] = None
|
||||
temporal_filter["expressionType"] = "SQL"
|
||||
temporal_filter["subject"] = granularity_sqla["label"]
|
||||
|
||||
rv_data["adhoc_filters"] = (rv_data.get("adhoc_filters") or []) + [
|
||||
temporal_filter
|
||||
]
|
||||
start_date = since.isoformat() if since else None
|
||||
end_date = until.isoformat() if until else None
|
||||
if start_date and end_date:
|
||||
temporal_filter["sqlExpression"] = (
|
||||
f"{granularity_sqla['sqlExpression']} >= '{start_date}' AND "
|
||||
f"{granularity_sqla['sqlExpression']} < '{end_date}'"
|
||||
)
|
||||
elif start_date:
|
||||
temporal_filter["sqlExpression"] = (
|
||||
f"{granularity_sqla['sqlExpression']} >= '{start_date}'"
|
||||
)
|
||||
elif end_date:
|
||||
temporal_filter["sqlExpression"] = (
|
||||
f"{granularity_sqla['sqlExpression']} < '{end_date}'"
|
||||
)
|
||||
|
||||
rv_data["adhoc_filters"] = rv_data.get("adhoc_filters") or []
|
||||
if temporal_filter:
|
||||
rv_data["adhoc_filters"].append(temporal_filter)
|
||||
|
||||
@classmethod
|
||||
def upgrade_slice(cls, slc: Slice) -> None:
|
||||
|
||||
@@ -21,7 +21,7 @@ from tests.unit_tests.migrations.viz.utils import migrate_and_assert
|
||||
|
||||
SOURCE_FORM_DATA: dict[str, Any] = {
|
||||
"granularity_sqla": "ds",
|
||||
"time_range": "100 years ago : now",
|
||||
"time_range": "100 years ago : today",
|
||||
"viz_type": "pivot_table",
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ TARGET_FORM_DATA: dict[str, Any] = {
|
||||
"form_data_bak": SOURCE_FORM_DATA,
|
||||
"granularity_sqla": "ds",
|
||||
"rowOrder": "value_z_to_a",
|
||||
"time_range": "100 years ago : now",
|
||||
"time_range": "100 years ago : today",
|
||||
"viz_type": "pivot_table_v2",
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ def test_migration() -> None:
|
||||
target["adhoc_filters"] = [
|
||||
{
|
||||
"clause": "WHERE",
|
||||
"comparator": "100 years ago : now",
|
||||
"comparator": "100 years ago : today",
|
||||
"expressionType": "SIMPLE",
|
||||
"operator": "TEMPORAL_RANGE",
|
||||
"subject": "ds",
|
||||
@@ -65,7 +65,9 @@ def test_custom_sql_time_column() -> None:
|
||||
"comparator": None,
|
||||
"expressionType": "SQL",
|
||||
"operator": "TEMPORAL_RANGE",
|
||||
"sqlExpression": "sum(ds)",
|
||||
"sqlExpression": (
|
||||
"sum(ds) >= '1925-04-24T00:00:00' AND sum(ds) < '2025-04-24T00:00:00'"
|
||||
),
|
||||
"subject": "ds",
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user