You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ak...@apache.org on 2020/07/24 22:06:54 UTC

[incubator-pinot] branch master updated: [TE] pinot - harleyjj/detectionutils - return current when predicted baseline cannot be trained (#5736)

This is an automated email from the ASF dual-hosted git repository.

akshayrai09 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 2af8d8e  [TE] pinot - harleyjj/detectionutils - return current when predicted baseline cannot be trained (#5736)
2af8d8e is described below

commit 2af8d8ee8b6a7587d988d29453379ecc375e5997
Author: Harley Jackson <hj...@linkedin.com>
AuthorDate: Fri Jul 24 15:06:10 2020 -0700

    [TE] pinot - harleyjj/detectionutils - return current when predicted baseline cannot be trained (#5736)
    
    *When detection/predicted-baseline/{anomalyId} endpoint is called and there is insufficient data to generate the baseline,
    an error is currently returned.
    *This fix returns the current time series instead, so that data will still be displayed in the graph.
---
 .../apache/pinot/thirdeye/detection/DetectionUtils.java  | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/DetectionUtils.java b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/DetectionUtils.java
index 4352d1a..f0eeb2f 100644
--- a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/DetectionUtils.java
+++ b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/detection/DetectionUtils.java
@@ -252,6 +252,7 @@ public class DetectionUtils {
       long start, long end, DetectionPipelineLoader loader, DataProvider provider) throws Exception {
     String baselineProviderComponentName = anomaly.getProperties().get(PROP_BASELINE_PROVIDER_COMPONENT_NAME);
     BaselineProvider baselineProvider = new RuleBaselineProvider();
+    TimeSeries returnTimeSeries;
 
     if (baselineProviderComponentName != null && config != null &&
         config.getComponentSpecs().containsKey(baselineProviderComponentName)) {
@@ -265,7 +266,20 @@ public class DetectionUtils {
       InputDataFetcher dataFetcher = new DefaultInputDataFetcher(provider, config.getId());
       baselineProvider.init(spec, dataFetcher);
     }
-    return baselineProvider.computePredictedTimeSeries(MetricSlice.from(metricId, start, end, filters));
+
+    try {
+      returnTimeSeries = baselineProvider.computePredictedTimeSeries(MetricSlice.from(metricId, start, end, filters));
+    } catch (Exception e) {
+      // send current if the predicted baseline can't be trained
+      BaselineProvider alternateProvider = new RuleBaselineProvider();
+      RuleBaselineProviderSpec spec = new RuleBaselineProviderSpec();
+      spec.setOffset("current");
+      InputDataFetcher dataFetcher = new DefaultInputDataFetcher(provider, config.getId());
+      alternateProvider.init(spec, dataFetcher);
+      returnTimeSeries = alternateProvider.computePredictedTimeSeries(MetricSlice.from(metricId, start, end, filters));
+    }
+
+    return returnTimeSeries;
   }
 
   /**


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org