From ee69c81c29937d2d0e861e088cd82c8db8c82c30 Mon Sep 17 00:00:00 2001 From: Piotr Czarnas Date: Sat, 20 Jan 2024 18:44:46 +0100 Subject: [PATCH] Allow using months filter for daily partitioned checks. --- ...ensorExecutionRunParametersFactoryImpl.java | 6 +++++- .../sensors/TimeWindowFilterParameters.java | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/dqops/src/main/java/com/dqops/execution/sensors/SensorExecutionRunParametersFactoryImpl.java b/dqops/src/main/java/com/dqops/execution/sensors/SensorExecutionRunParametersFactoryImpl.java index 121cae8e3f..a38fc7be9e 100644 --- a/dqops/src/main/java/com/dqops/execution/sensors/SensorExecutionRunParametersFactoryImpl.java +++ b/dqops/src/main/java/com/dqops/execution/sensors/SensorExecutionRunParametersFactoryImpl.java @@ -198,8 +198,12 @@ public TimeWindowFilterParameters makeEffectiveIncrementalFilter( TableSpec tableSpec, TimeSeriesConfigurationSpec timeSeriesConfigurationSpec, TimeWindowFilterParameters userTimeWindowFilters) { + if (userTimeWindowFilters != null && userTimeWindowFilters.hasAnyParametersApplied()) { + return userTimeWindowFilters; + } + if (timeSeriesConfigurationSpec.getMode() == TimeSeriesMode.current_time) { - return userTimeWindowFilters != null ? userTimeWindowFilters : new TimeWindowFilterParameters(); + return new TimeWindowFilterParameters(); } PartitionIncrementalTimeWindowSpec tableTimeWindowSpec = tableSpec.getIncrementalTimeWindow(); diff --git a/dqops/src/main/java/com/dqops/execution/sensors/TimeWindowFilterParameters.java b/dqops/src/main/java/com/dqops/execution/sensors/TimeWindowFilterParameters.java index bcf4dc776c..f96223f55b 100644 --- a/dqops/src/main/java/com/dqops/execution/sensors/TimeWindowFilterParameters.java +++ b/dqops/src/main/java/com/dqops/execution/sensors/TimeWindowFilterParameters.java @@ -191,6 +191,24 @@ public TimeWindowFilterParameters withUserFilters(TimeWindowFilterParameters use return cloned; } + /** + * Detects if any filter parameter is set, so the user did not send an empty filter object. + * If DQOps receives an empty time window, the default time window configured on the table is used. + * @return True when any filters are applied, false when it is an empty (dummy) filter, to be ignored. + */ + public boolean hasAnyParametersApplied() { + return dailyPartitioningRecentDays != null || + dailyPartitioningIncludeToday != null || + monthlyPartitioningRecentMonths != null || + monthlyPartitioningIncludeCurrentMonth != null || + fromDate != null || + fromDateTime != null || + fromDateTimeOffset != null || + toDate != null || + toDateTime != null || + toDateTimeOffset != null; + } + /** * Creates and returns a copy of this object (deep clone). */