use of org.apache.druid.query.movingaverage.averagers.LongMeanAveragerFactory in project druid by druid-io.
the class MovingAverageIterableTest method testCompleteData.
@Test
public void testCompleteData() {
Map<String, Object> event1 = new HashMap<>();
Map<String, Object> event2 = new HashMap<>();
Map<String, Object> event3 = new HashMap<>();
event1.put("gender", "m");
event1.put("pageViews", 10L);
event2.put("gender", "f");
event2.put("pageViews", 20L);
event3.put("gender", "u");
event3.put("pageViews", 30L);
List<DimensionSpec> ds = new ArrayList<>();
ds.add(new DefaultDimensionSpec("gender", "gender"));
Row jan1Row1 = new MapBasedRow(JAN_1, event1);
Row jan1Row2 = new MapBasedRow(JAN_1, event2);
Row jan1Row3 = new MapBasedRow(JAN_1, event3);
Row jan2Row1 = new MapBasedRow(JAN_2, event1);
Row jan2Row2 = new MapBasedRow(JAN_2, event2);
Row jan2Row3 = new MapBasedRow(JAN_2, event3);
Sequence<RowBucket> seq = Sequences.simple(Arrays.asList(new RowBucket(JAN_1, Arrays.asList(jan1Row1, jan1Row2, jan1Row3)), new RowBucket(JAN_2, Arrays.asList(jan2Row1, jan2Row2, jan2Row3))));
Iterator<Row> iter = new MovingAverageIterable(seq, ds, Collections.singletonList(new LongMeanAveragerFactory("movingAvgPageViews", 2, 1, "pageViews")), Collections.emptyList(), Collections.singletonList(new LongSumAggregatorFactory("pageViews", "pageViews"))).iterator();
Assert.assertTrue(iter.hasNext());
Row result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertFalse(iter.hasNext());
}
use of org.apache.druid.query.movingaverage.averagers.LongMeanAveragerFactory in project druid by druid-io.
the class MovingAverageIterableTest method testMissingDataAtTheEnd.
// test injection when the data is missing at the end
@Test
public void testMissingDataAtTheEnd() {
Map<String, Object> event1 = new HashMap<>();
Map<String, Object> event2 = new HashMap<>();
Map<String, Object> event3 = new HashMap<>();
event1.put("gender", "m");
event1.put("pageViews", 10L);
event2.put("gender", "f");
event2.put("pageViews", 20L);
event3.put("gender", "u");
event3.put("pageViews", 30L);
List<DimensionSpec> ds = new ArrayList<>();
ds.add(new DefaultDimensionSpec("gender", "gender"));
Row jan1Row1 = new MapBasedRow(JAN_1, event1);
Row jan1Row2 = new MapBasedRow(JAN_1, event2);
Row jan1Row3 = new MapBasedRow(JAN_1, event3);
Row jan2Row1 = new MapBasedRow(JAN_2, event1);
Sequence<RowBucket> seq = Sequences.simple(Arrays.asList(new RowBucket(JAN_1, Arrays.asList(jan1Row1, jan1Row2, jan1Row3)), new RowBucket(JAN_2, Collections.singletonList(jan2Row1))));
Iterator<Row> iter = new MovingAverageIterable(seq, ds, Collections.singletonList(new LongMeanAveragerFactory("movingAvgPageViews", 2, 1, "pageViews")), Collections.emptyList(), Collections.singletonList(new LongSumAggregatorFactory("pageViews", "pageViews"))).iterator();
Assert.assertTrue(iter.hasNext());
Row result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertFalse(iter.hasNext());
}
use of org.apache.druid.query.movingaverage.averagers.LongMeanAveragerFactory in project druid by druid-io.
the class MovingAverageIterableTest method testMissingDataAtBeginning.
// no injection if the data missing at the begining
@Test
public void testMissingDataAtBeginning() {
Map<String, Object> event1 = new HashMap<>();
Map<String, Object> event2 = new HashMap<>();
Map<String, Object> event3 = new HashMap<>();
event1.put("gender", "m");
event1.put("pageViews", 10L);
event2.put("gender", "f");
event2.put("pageViews", 20L);
event3.put("gender", "u");
event3.put("pageViews", 30L);
List<DimensionSpec> ds = new ArrayList<>();
ds.add(new DefaultDimensionSpec("gender", "gender"));
Row jan1Row1 = new MapBasedRow(JAN_1, event1);
Row jan2Row1 = new MapBasedRow(JAN_2, event1);
Row jan2Row2 = new MapBasedRow(JAN_2, event2);
Row jan2Row3 = new MapBasedRow(JAN_2, event3);
Sequence<RowBucket> seq = Sequences.simple(Arrays.asList(new RowBucket(JAN_1, Collections.singletonList(jan1Row1)), new RowBucket(JAN_2, Arrays.asList(jan2Row1, jan2Row2, jan2Row3))));
Iterator<Row> iter = new MovingAverageIterable(seq, ds, Collections.singletonList(new LongMeanAveragerFactory("movingAvgPageViews", 2, 1, "pageViews")), Collections.emptyList(), Collections.singletonList(new LongSumAggregatorFactory("pageViews", "pageViews"))).iterator();
Assert.assertTrue(iter.hasNext());
Row result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertFalse(iter.hasNext());
}
use of org.apache.druid.query.movingaverage.averagers.LongMeanAveragerFactory in project druid by druid-io.
the class MovingAverageIterableTest method testMissingDaysAtBegining.
@Test
public void testMissingDaysAtBegining() {
Map<String, Object> event1 = new HashMap<>();
Map<String, Object> event2 = new HashMap<>();
List<DimensionSpec> ds = new ArrayList<>();
ds.add(new DefaultDimensionSpec("gender", "gender"));
event1.put("gender", "m");
event1.put("pageViews", 10L);
Row row1 = new MapBasedRow(JAN_3, event1);
event2.put("gender", "m");
event2.put("pageViews", 20L);
Row row2 = new MapBasedRow(JAN_4, event2);
Sequence<RowBucket> seq = Sequences.simple(Arrays.asList(new RowBucket(JAN_1, Collections.emptyList()), new RowBucket(JAN_2, Collections.emptyList()), new RowBucket(JAN_3, Collections.singletonList(row1)), new RowBucket(JAN_4, Collections.singletonList(row2))));
Iterator<Row> iter = new MovingAverageIterable(seq, ds, Collections.singletonList(new LongMeanAveragerFactory("movingAvgPageViews", 4, 1, "pageViews")), Collections.emptyList(), Collections.singletonList(new LongSumAggregatorFactory("pageViews", "pageViews"))).iterator();
Assert.assertTrue(iter.hasNext());
Row result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(2.5f, result.getMetric("movingAvgPageViews").floatValue(), 0.0f);
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(7.5f, result.getMetric("movingAvgPageViews").floatValue(), 0.0f);
Assert.assertFalse(iter.hasNext());
}
use of org.apache.druid.query.movingaverage.averagers.LongMeanAveragerFactory in project druid by druid-io.
the class MovingAverageIterableTest method testMissingDataAtMiddle.
// test injection when the data is missing in the middle
@Test
public void testMissingDataAtMiddle() {
Map<String, Object> eventM = new HashMap<>();
Map<String, Object> eventF = new HashMap<>();
Map<String, Object> eventU = new HashMap<>();
eventM.put("gender", "m");
eventM.put("pageViews", 10L);
eventF.put("gender", "f");
eventF.put("pageViews", 20L);
eventU.put("gender", "u");
eventU.put("pageViews", 30L);
List<DimensionSpec> ds = new ArrayList<>();
ds.add(new DefaultDimensionSpec("gender", "gender"));
Row jan1Row1M = new MapBasedRow(JAN_1, eventM);
Row jan1Row2F = new MapBasedRow(JAN_1, eventF);
Row jan1Row3U = new MapBasedRow(JAN_1, eventU);
Row jan2Row1M = new MapBasedRow(JAN_2, eventM);
Row jan3Row1M = new MapBasedRow(JAN_3, eventM);
Row jan3Row2F = new MapBasedRow(JAN_3, eventF);
Row jan3Row3U = new MapBasedRow(JAN_3, eventU);
Row jan4Row1M = new MapBasedRow(JAN_4, eventM);
Sequence<RowBucket> seq = Sequences.simple(Arrays.asList(new RowBucket(JAN_1, Arrays.asList(jan1Row1M, jan1Row2F, jan1Row3U)), new RowBucket(JAN_2, Collections.singletonList(jan2Row1M)), new RowBucket(JAN_3, Arrays.asList(jan3Row1M, jan3Row2F, jan3Row3U)), new RowBucket(JAN_4, Collections.singletonList(jan4Row1M))));
Iterator<Row> iter = new MovingAverageIterable(seq, ds, Collections.singletonList(new LongMeanAveragerFactory("movingAvgPageViews", 3, 1, "pageViews")), Collections.emptyList(), Collections.singletonList(new LongSumAggregatorFactory("pageViews", "pageViews"))).iterator();
// Jan 1
Assert.assertTrue(iter.hasNext());
Row result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_1, (result.getTimestamp()));
// Jan 2
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_2, (result.getTimestamp()));
// Jan 3
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_3, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_3, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_3, (result.getTimestamp()));
// Jan 4
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("m", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_4, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("u", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_4, (result.getTimestamp()));
Assert.assertTrue(iter.hasNext());
result = iter.next();
Assert.assertEquals("f", (result.getDimension("gender")).get(0));
Assert.assertEquals(JAN_4, (result.getTimestamp()));
Assert.assertFalse(iter.hasNext());
}
Aggregations