@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); } }
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) )); }
Assert.assertEquals(1, results.iterator().next().getValue().getValue().size());
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");
@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")); }
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);
@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); } }