package com.linkedin.thirdeye.anomalydetection.model.transform;
import com.linkedin.thirdeye.anomalydetection.context.AnomalyDetectionContext;
import com.linkedin.thirdeye.anomalydetection.context.TimeSeries;
import org.joda.time.Interval;
public class ZeroRemovalFunction extends AbstractTransformationFunction {
/**
* Removes value 0.0 from the time series. The reason to apply this transformation function is
* that ThirdEye currently returns empty values as 0.0. Therefore, we need to remove those values.
*
* @param timeSeries the time series that provides the data points to be transformed.
* @param anomalyDetectionContext the anomaly detection context that could provide additional
* information for the transformation.
* @return a time series that have value 0.0 removed.
*/
@Override public TimeSeries transform(TimeSeries timeSeries,
AnomalyDetectionContext anomalyDetectionContext) {
TimeSeries transformedTimeSeries = new TimeSeries();
Interval timeSeriesInterval = timeSeries.getTimeSeriesInterval();
transformedTimeSeries.setTimeSeriesInterval(timeSeriesInterval);
for (long timestamp : timeSeries.timestampSet()) {
double value = timeSeries.get(timestamp);
if (value != 0d && timeSeriesInterval.contains(timestamp)) {
transformedTimeSeries.set(timestamp, value);
}
}
return transformedTimeSeries;
}
}