Пример #1
0
        public Aggregates getAggregates(long tStart, long tEnd)
        {
            Aggregates agg          = new Aggregates();
            long       totalSeconds = 0;
            bool       firstFound   = false;

            for (int i = 0; i < timestamps.Length; i++)
            {
                long left  = Math.Max(timestamps[i] - step, tStart);
                long right = Math.Min(timestamps[i], tEnd);
                long delta = right - left;
                if (delta > 0)
                {
                    double value = values[i];
                    double min   = Util.min(agg.Min, value);
                    if (double.IsNaN(agg.Min) || agg.Min > min)
                    {
                        agg.Min          = min;
                        agg.MinTimeStamp = timestamps[i];
                    }
                    double max = Util.max(agg.Max, value);
                    if (double.IsNaN(agg.Max) || agg.Max < max)
                    {
                        agg.Max          = max;
                        agg.MaxTimeStamp = timestamps[i];
                    }
                    if (!firstFound)
                    {
                        agg.First          = value;
                        agg.FirstTimeStamp = timestamps[i];
                        firstFound         = true;
                    }
                    agg.Last          = value;
                    agg.LastTimeStamp = timestamps[i];
                    if (!Double.IsNaN(value))
                    {
                        agg.Total     = Util.sum(agg.Total, delta * value);
                        totalSeconds += delta;
                    }
                }
            }
            agg.Average = totalSeconds > 0 ? (agg.Total / totalSeconds) : Double.NaN;
            return(agg);
        }
Пример #2
0
 public Aggregates getAggregates(long tStart, long tEnd)
 {
     Aggregates agg = new Aggregates();
     long totalSeconds = 0;
     bool firstFound = false;
     for (int i = 0; i < timestamps.Length; i++)
     {
         long left = Math.Max(timestamps[i] - step, tStart);
         long right = Math.Min(timestamps[i], tEnd);
         long delta = right - left;
         if (delta > 0)
         {
             double value = values[i];
             double min = Util.min(agg.Min, value);
             if (double.IsNaN(agg.Min) || agg.Min > min)
            {
               agg.Min = min;
               agg.MinTimeStamp = timestamps[i];
            }
            double max = Util.max(agg.Max, value);
            if (double.IsNaN(agg.Max) || agg.Max < max)
            {
               agg.Max = max;
               agg.MaxTimeStamp = timestamps[i];
            }
             if (!firstFound)
             {
                 agg.First = value;
                 agg.FirstTimeStamp = timestamps[i];
                 firstFound = true;
             }
             agg.Last = value;
            agg.LastTimeStamp = timestamps[i];
             if (!Double.IsNaN(value))
             {
                 agg.Total = Util.sum(agg.Total, delta * value);
                 totalSeconds += delta;
             }
         }
     }
     agg.Average = totalSeconds > 0 ? (agg.Total / totalSeconds) : Double.NaN;
     return agg;
 }
Пример #3
0
 public void setValue(Aggregates aggregates)
 {
     setValues(new double[] { aggregates.getAggregate(AggregateFunction) });
     setTimestamps(new long[] { aggregates.getTimeStamp(AggregateFunction) });
 }
Пример #4
0
 public void setValue(Aggregates aggregates)
 {
    setValues(new double[] { aggregates.getAggregate(AggregateFunction) });
    setTimestamps(new long[] { aggregates.getTimeStamp(AggregateFunction) });
 }