diff --git a/fireant/reference_helpers.py b/fireant/reference_helpers.py index d4bccc90..ba0b44f4 100644 --- a/fireant/reference_helpers.py +++ b/fireant/reference_helpers.py @@ -74,8 +74,9 @@ def reference_suffix(metric, reference): def apply_reference_filters(df, reference): for reference_filter in reference.filters: df_column_key = alias_selector(reference_alias(reference_filter.metric, reference)) - column = df[df_column_key] - dataframe_filter = ComparisonOperator.eval(column, reference_filter.operator, reference_filter.value) - df = df.loc[dataframe_filter] + if df_column_key in df: + column = df[df_column_key] + dataframe_filter = ComparisonOperator.eval(column, reference_filter.operator, reference_filter.value) + df = df.loc[dataframe_filter] return df diff --git a/fireant/tests/test_reference_helpers.py b/fireant/tests/test_reference_helpers.py index 6223960e..d934c1be 100644 --- a/fireant/tests/test_reference_helpers.py +++ b/fireant/tests/test_reference_helpers.py @@ -31,6 +31,12 @@ def setUpClass(cls): definition=t0.metric, data_type=DataType.number, ), + Field( + "unused_metric", + label="Unused Metric", + definition=t0.unused_metric, + data_type=DataType.number, + ), ], ) @@ -146,3 +152,15 @@ def test_reference_filter_with_2_filters_combined(self): result_df.reset_index(drop=True), pd.DataFrame.from_dict({"$metric0": [2, 3], "$metric0_dod": [5, 9]}), ) + + def test_reference_filter_for_an_unselected_metric(self): + reference_filter = ReferenceFilter( + self.dataset.fields.unused_metric, ComparisonOperator.gt, 5 + ) + reference = DayOverDay( + self.dataset.fields.timestamp, filters=[reference_filter] + ) + + result_df = apply_reference_filters(self.df, reference) + + pd.testing.assert_frame_equal(result_df, self.df)