From f7384b85265fa774c280dea3f0b5b2cb181dc2bf Mon Sep 17 00:00:00 2001 From: Alexey Velikiy Date: Thu, 11 Nov 2021 21:56:31 +0300 Subject: [PATCH] seasonality++ --- .../analytic_unit/anomaly_analytic_unit.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs index efe6b16..bfcf210 100644 --- a/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs +++ b/server/src/services/analytic_service/analytic_unit/anomaly_analytic_unit.rs @@ -60,7 +60,7 @@ impl AnalyticUnit for AnomalyAnalyticUnit { from: u64, to: u64, ) -> anyhow::Result> { - let mr = ms.query(from, to, DETECTION_STEP).await.unwrap(); + let mr = ms.query(from - self.config.seasonality, to, DETECTION_STEP).await.unwrap(); if mr.data.keys().len() == 0 { return Ok(Vec::new()); @@ -75,15 +75,17 @@ impl AnalyticUnit for AnomalyAnalyticUnit { let mut result = Vec::new(); - if let HSR::ConfidenceTimeSerie(hsr) = self.get_hsr_from_metric_result(&mr)? { + let confidence_time_serie = self.get_hsr_from_metric_result(&mr)?; + + if let HSR::ConfidenceTimeSerie(hsr) = confidence_time_serie { let mut from = None; - for ((t, _, (u, l)), (t1, rv)) in hsr.iter().zip(ts) { - if *t != t1 { + for ((t, _, (u, l)), (t1, rv)) in hsr.iter().zip(ts.iter()) { + if *t != *t1 { return Err(anyhow::format_err!("incompatible hsr/ts")) } - if rv > *u || rv < *l { + if rv > u || rv < l { if from.is_none() { from = Some(*t); } @@ -95,6 +97,10 @@ impl AnalyticUnit for AnomalyAnalyticUnit { } } + if from.is_some() { + result.push((from.unwrap(), ts.last().unwrap().0)); + } + return Ok(result); } else {