From 387ac2b6d3ab80ff509738f8bd66d945b902a95b Mon Sep 17 00:00:00 2001 From: Yongjie Zhao Date: Mon, 4 Oct 2021 06:31:19 +0100 Subject: [PATCH] fix: replace absolute difference with difference in compareOperator (#16930) * fix: replace absolute difference with difference in compareOperator * fix ut --- superset/constants.py | 2 +- superset/utils/pandas_postprocessing.py | 4 ++-- .../integration_tests/pandas_postprocessing_tests.py | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/superset/constants.py b/superset/constants.py index b1e7bf46b..6ea189bd8 100644 --- a/superset/constants.py +++ b/superset/constants.py @@ -165,7 +165,7 @@ class PandasAxis(int, Enum): class PandasPostprocessingCompare(str, Enum): - ABS = "absolute" + DIFF = "difference" PCT = "percentage" RAT = "ratio" diff --git a/superset/utils/pandas_postprocessing.py b/superset/utils/pandas_postprocessing.py index 86df26393..06677742f 100644 --- a/superset/utils/pandas_postprocessing.py +++ b/superset/utils/pandas_postprocessing.py @@ -498,13 +498,13 @@ def compare( # pylint: disable=too-many-arguments ) if compare_type not in tuple(PandasPostprocessingCompare): raise QueryObjectValidationError( - _("`compare_type` must be `absolute`, `percentage` or `ratio`") + _("`compare_type` must be `difference`, `percentage` or `ratio`") ) if len(source_columns) == 0: return df for s_col, c_col in zip(source_columns, compare_columns): - if compare_type == PandasPostprocessingCompare.ABS: + if compare_type == PandasPostprocessingCompare.DIFF: diff_series = df[s_col] - df[c_col] elif compare_type == PandasPostprocessingCompare.PCT: diff_series = ( diff --git a/tests/integration_tests/pandas_postprocessing_tests.py b/tests/integration_tests/pandas_postprocessing_tests.py index 9ff3f089c..f242e3232 100644 --- a/tests/integration_tests/pandas_postprocessing_tests.py +++ b/tests/integration_tests/pandas_postprocessing_tests.py @@ -478,18 +478,18 @@ class TestPostProcessing(SupersetTestCase): self.assertListEqual(series_to_list(post_df["z"]), [0.0, 2.0, 8.0, 6.0]) def test_compare(self): - # `absolute` comparison + # `difference` comparison post_df = proc.compare( df=timeseries_df2, source_columns=["y"], compare_columns=["z"], - compare_type="absolute", + compare_type="difference", ) self.assertListEqual( - post_df.columns.tolist(), ["label", "y", "z", "absolute__y__z",] + post_df.columns.tolist(), ["label", "y", "z", "difference__y__z",] ) self.assertListEqual( - series_to_list(post_df["absolute__y__z"]), [0.0, -2.0, -8.0, -6.0], + series_to_list(post_df["difference__y__z"]), [0.0, -2.0, -8.0, -6.0], ) # drop original columns @@ -497,10 +497,10 @@ class TestPostProcessing(SupersetTestCase): df=timeseries_df2, source_columns=["y"], compare_columns=["z"], - compare_type="absolute", + compare_type="difference", drop_original_columns=True, ) - self.assertListEqual(post_df.columns.tolist(), ["label", "absolute__y__z",]) + self.assertListEqual(post_df.columns.tolist(), ["label", "difference__y__z",]) # `percentage` comparison post_df = proc.compare(