@Override public DBQuery.Query buildQuery(String key, Object value) { return DBQuery.greaterThan(key, value); } }
public TrafficHistogram clusterTrafficOfLastDays(Duration duration, Interval interval) { final ImmutableMap.Builder<DateTime, Long> inputBuilder = ImmutableMap.builder(); final ImmutableMap.Builder<DateTime, Long> outputBuilder = ImmutableMap.builder(); final ImmutableMap.Builder<DateTime, Long> decodedBuilder = ImmutableMap.builder(); final DateTime to = getDayBucket(Tools.nowUTC()); final DateTime from = to.minus(duration); final DBQuery.Query query = DBQuery.and( DBQuery.lessThanEquals(BUCKET, to), DBQuery.greaterThan(BUCKET, from) ); try (DBCursor<TrafficDto> cursor = db.find(query)) { cursor.forEach(trafficDto -> { inputBuilder.put(trafficDto.bucket(), trafficDto.input().values().stream().mapToLong(Long::valueOf).sum()); outputBuilder.put(trafficDto.bucket(), trafficDto.output().values().stream().mapToLong(Long::valueOf).sum()); decodedBuilder.put(trafficDto.bucket(), trafficDto.decoded().values().stream().mapToLong(Long::valueOf).sum()); }); Map<DateTime, Long> inputHistogram = inputBuilder.build(); Map<DateTime, Long> outputHistogram = outputBuilder.build(); Map<DateTime, Long> decodedHistogram = decodedBuilder.build(); // we might need to aggregate the hourly database values to their UTC daily buckets if (interval == Interval.DAILY) { inputHistogram = aggregateToDaily(inputHistogram); outputHistogram = aggregateToDaily(outputHistogram); decodedHistogram = aggregateToDaily(decodedHistogram); } return TrafficHistogram.create(from, to, inputHistogram, outputHistogram, decodedHistogram); } }
@Override public DBQuery.Query buildQuery(String key, Object value) { return DBQuery.greaterThan(key, value); } }
public TrafficHistogram clusterTrafficOfLastDays(Duration duration, Interval interval) { final ImmutableMap.Builder<DateTime, Long> inputBuilder = ImmutableMap.builder(); final ImmutableMap.Builder<DateTime, Long> outputBuilder = ImmutableMap.builder(); final ImmutableMap.Builder<DateTime, Long> decodedBuilder = ImmutableMap.builder(); final DateTime to = getDayBucket(Tools.nowUTC()); final DateTime from = to.minus(duration); final DBQuery.Query query = DBQuery.and( DBQuery.lessThanEquals(BUCKET, to), DBQuery.greaterThan(BUCKET, from) ); final DBCursor<TrafficDto> cursor = db.find(query); cursor.forEach(trafficDto -> { inputBuilder.put(trafficDto.bucket(), trafficDto.input().values().stream().mapToLong(Long::valueOf).sum()); outputBuilder.put(trafficDto.bucket(), trafficDto.output().values().stream().mapToLong(Long::valueOf).sum()); decodedBuilder.put(trafficDto.bucket(), trafficDto.decoded().values().stream().mapToLong(Long::valueOf).sum()); }); Map<DateTime, Long> inputHistogram = inputBuilder.build(); Map<DateTime, Long> outputHistogram = outputBuilder.build(); Map<DateTime, Long> decodedHistogram = decodedBuilder.build(); // we might need to aggregate the hourly database values to their UTC daily buckets if (interval == Interval.DAILY) { inputHistogram = aggregateToDaily(inputHistogram); outputHistogram = aggregateToDaily(outputHistogram); decodedHistogram = aggregateToDaily(decodedHistogram); } return TrafficHistogram.create(from, to, inputHistogram, outputHistogram, decodedHistogram); }