@Override public Result<TopNResultValue> build() { // Pull out top aggregated values final DimValHolder[] holderValueArray = pQueue.toArray(new DimValHolder[0]); Arrays.sort( holderValueArray, (o1, o2) -> comparator.compare(o1.getDimValue(), o2.getDimValue()) ); return new Result<>( timestamp, new TopNResultValue(Lists.transform(Arrays.asList(holderValueArray), DimValHolder::getMetricValues)) ); }
@Override public Sequence<Object[]> apply(final Result<TopNResultValue> result) { final List<DimensionAndMetricValueExtractor> rows = result.getValue().getValue(); final List<Object[]> retVals = new ArrayList<>(rows.size()); for (DimensionAndMetricValueExtractor row : rows) { final Object[] retVal = new Object[fieldList.size()]; for (final RelDataTypeField field : fieldList) { final String outputName = druidQuery.getOutputRowSignature().getRowOrder().get(field.getIndex()); retVal[field.getIndex()] = coerce(row.getMetric(outputName), field.getType().getSqlTypeName()); } retVals.add(retVal); } return Sequences.simple(retVals); } }
new Result<>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue( Collections.<Map<String, Object>>singletonList( ImmutableMap.of( List<Result<TopNResultValue>> list = runWithMerge(query).toList(); Assert.assertEquals(list.size(), 1); Assert.assertEquals("Didn't merge results", list.get(0).getValue().getValue().size(), 1); TestHelper.assertExpectedResults(expectedResults, list, "Failed to match");
new TopNResultValue(serializedValues) );
private static void assertTopNResultValue(String msg, Result expected, Result actual) { TopNResultValue expectedVal = (TopNResultValue) expected.getValue(); TopNResultValue actualVal = (TopNResultValue) actual.getValue(); List<Row> listExpectedRows = expectedVal.getValue() .stream() .map(dimensionAndMetricValueExtractor -> new MapBasedRow( expected.getTimestamp(), dimensionAndMetricValueExtractor.getBaseObject() )) .collect(Collectors.toList()); List<Row> listActualRows = actualVal.getValue() .stream() .map(dimensionAndMetricValueExtractor -> new MapBasedRow( actual.getTimestamp(), dimensionAndMetricValueExtractor.getBaseObject() )) .collect(Collectors.toList()); Assert.assertEquals("Size of list must match", listExpectedRows.size(), listActualRows.size()); IntStream.range(0, listExpectedRows.size()).forEach(value -> assertRow( StringUtils.format("%s, on value number [%s]", msg, value), listExpectedRows.get(value), listActualRows.get(value) )); }
@Override public Result<TopNResultValue> build() { final DimValHolder[] holderValueArray = pQueue.toArray(new DimValHolder[0]); Arrays.sort( holderValueArray, (d1, d2) -> { // Metric values flipped compared to dimValueHolderComparator. //noinspection unchecked int retVal = metricComparator.compare(d2.getTopNMetricVal(), d1.getTopNMetricVal()); if (retVal == 0) { retVal = dimValueComparator.compare(d1.getDimValue(), d2.getDimValue()); } return retVal; } ); List<DimValHolder> holderValues = Arrays.asList(holderValueArray); // Pull out top aggregated values final List<Map<String, Object>> values = Lists.transform(holderValues, DimValHolder::getMetricValues); return new Result<>(timestamp, new TopNResultValue(values)); } }
Assert.assertEquals(1, results.iterator().next().getValue().getValue().size());
new TopNResultValue(serializedValues) );
@Test public void testSimpleDataIngestAndTopNQuery() throws Exception { AggregationTestHelper topNQueryAggregationTestHelper = AggregationTestHelper.createTopNQueryAggregationTestHelper( sm.getJacksonModules(), tempFolder ); Sequence seq = topNQueryAggregationTestHelper.runQueryOnSegments( ImmutableList.of(s1, s2), readFileFromClasspathAsString("topn_query.json") ); Result<TopNResultValue> result = (Result<TopNResultValue>) Iterables.getOnlyElement(seq.toList()); Assert.assertEquals(DateTimes.of("2014-10-20T00:00:00.000Z"), result.getTimestamp()); DimensionAndMetricValueExtractor value = Iterables.getOnlyElement(result.getValue().getValue()); Assert.assertEquals(38.0, value.getDoubleMetric("sketch_count"), 0.01); Assert.assertEquals(38.0, value.getDoubleMetric("sketchEstimatePostAgg"), 0.01); Assert.assertEquals(38.0, value.getDoubleMetric("sketchUnionPostAggEstimate"), 0.01); Assert.assertEquals(38.0, value.getDoubleMetric("sketchIntersectionPostAggEstimate"), 0.01); Assert.assertEquals(0.0, value.getDoubleMetric("sketchAnotBPostAggEstimate"), 0.01); Assert.assertEquals(0.0, value.getDoubleMetric("non_existing_col_validation"), 0.01); Assert.assertEquals("product_3", value.getDimensionValue("product")); }
public static Result<TopNResultValue> createExpectedRows(String date, String[] columnNames, Iterable<Object[]> values) { List<Map> expected = new ArrayList<>(); for (Object[] value : values) { Preconditions.checkArgument(value.length == columnNames.length); Map<String, Object> theVals = Maps.newHashMapWithExpectedSize(value.length); for (int i = 0; i < columnNames.length; i++) { theVals.put(columnNames[i], value[i]); } expected.add(theVals); } return new Result<TopNResultValue>(DateTimes.of(date), new TopNResultValue(expected)); } }
DimensionAndMetricValueExtractor value1 = Iterables.get(result.getValue().getValue(), 0); Assert.assertEquals(38.0, value1.getDoubleMetric("sketch_count"), 0.01); Assert.assertEquals(38.0, value1.getDoubleMetric("sketchEstimatePostAgg"), 0.01); Assert.assertEquals("product_3", value1.getDimensionValue("product")); DimensionAndMetricValueExtractor value2 = Iterables.get(result.getValue().getValue(), 1); Assert.assertEquals(42.0, value2.getDoubleMetric("sketch_count"), 0.01); Assert.assertEquals(42.0, value2.getDoubleMetric("sketchEstimatePostAgg"), 0.01); Assert.assertEquals("product_1", value2.getDimensionValue("product")); DimensionAndMetricValueExtractor value3 = Iterables.get(result.getValue().getValue(), 2); Assert.assertEquals(42.0, value3.getDoubleMetric("sketch_count"), 0.01); Assert.assertEquals(42.0, value3.getDoubleMetric("sketchEstimatePostAgg"), 0.01);
new TopNResultValue( Lists.<Object>newArrayList( Iterables.limit( new TopNResultValue( Lists.<Object>newArrayList( Iterables.limit(
retVal.add(new Result<>(timestamp, new TopNResultValue(values)));
retVal.add(new Result<>(timestamp, new TopNResultValue(values)));
@Test public void testFilteredTopNSeries() { List<Result<TopNResultValue>> expectedResults = Collections.singletonList( new Result<TopNResultValue>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue( Collections.<Map<String, Object>>singletonList( ImmutableMap.<String, Object>builder() .put("market", "spot") .put("rows", 1L) .put("index", 100.0D) .put("addRowsIndexConstant", 102.0D) .put("uniques", 0.0D) .put("maxIndex", 100.0) .put("minIndex", 100.0) .build() ) ) ) ); TopNQuery query = makeFilteredTopNQuery(); try (CloseableStupidPool<ByteBuffer> pool = TestQueryRunners.createDefaultNonBlockingPool()) { QueryRunner runner = TestQueryRunners.makeTopNQueryRunner(segment, pool); HashMap<String, Object> context = new HashMap<String, Object>(); TestHelper.assertExpectedResults(expectedResults, runner.run(QueryPlus.wrap(query), context)); } }
new Result<TopNResultValue>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue( Arrays.asList( ImmutableMap.<String, Object>builder()
@Test public void testFilteredTopNSeries2() { List<Result<TopNResultValue>> expectedResults = Collections.singletonList( new Result<TopNResultValue>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue( new ArrayList<Map<String, Object>>() ) ) ); TopNQuery query = makeFilteredTopNQuery(); try (CloseableStupidPool<ByteBuffer> pool = TestQueryRunners.createDefaultNonBlockingPool()) { QueryRunner runner = TestQueryRunners.makeTopNQueryRunner(segment2, pool); HashMap<String, Object> context = new HashMap<String, Object>(); TestHelper.assertExpectedResults(expectedResults, runner.run(QueryPlus.wrap(query), context)); } }
new Result<TopNResultValue>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue( Arrays.asList( ImmutableMap.<String, Object>builder()
new Result<TopNResultValue>( DateTimes.of("2011-04-01T00:00:00.000Z"), new TopNResultValue( Arrays.<Map<String, Object>>asList( ImmutableMap.of(
new Result<TopNResultValue>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue( Arrays.<Map<String, Object>>asList( ImmutableMap.<String, Object>builder()