@Override public Object getRaw(String dimension) { return row.getRaw(dimension); }
@Override public Object getRaw(String dimension) { return delegate.getRaw(dimension); }
@Override public Object getRaw(final String dimension) { return row.getRaw(dimension); }
@Override public boolean isNull() { return row.get().getRaw(columnName) == null; }
@Nullable @Override public Object getObject() { return row.get().getRaw(columnName); }
@Override public boolean eval(Row row) { Object metricVal = row.getRaw(aggregationName); if (metricVal == null || value == null) { return false; } return HavingSpecMetricComparator.compare(aggregationName, value, aggregators, metricVal) < 0; }
@Override public RowFunction getRowFunction() { return row -> aggregator.finalizeComputation(row.getRaw(name)); } }
private static Object getValueFromRow(final Row row, final String column) { if (column.equals(ColumnHolder.TIME_COLUMN_NAME)) { return row.getTimestampFromEpoch(); } else { return row.getRaw(column); } }
@Override public boolean eval(Row row) { Object metricVal = row.getRaw(aggregationName); if (metricVal == null || value == null) { return metricVal == null && value == null; } return HavingSpecMetricComparator.compare(aggregationName, value, aggregators, metricVal) == 0; }
@Override public boolean eval(Row row) { Object metricVal = row.getRaw(aggregationName); if (metricVal == null || value == null) { return false; } return HavingSpecMetricComparator.compare(aggregationName, value, aggregators, metricVal) > 0; }
private Ordering<Row> metricOrdering(final String column, final Comparator comparator) { // As per SQL standard we need to have same ordering for metrics as dimensions i.e nulls first // If SQL compatibility is not enabled we use nullsLast ordering for null metrics for backwards compatibility. if (NullHandling.sqlCompatible()) { return Ordering.from(Comparator.comparing((Row row) -> row.getRaw(column), Comparator.nullsFirst(comparator))); } else { return Ordering.from(Comparator.comparing((Row row) -> row.getRaw(column), Comparator.nullsLast(comparator))); } }
@Override public Comparable[] apply(Row row, Comparable[] key) { for (int i = 0; i < key.length; i++) { final Comparable val = (Comparable) row.getRaw(query.getDimensions().get(i).getOutputName()); key[i] = valueConvertFns[i].apply(val); } return key; } };
@Nullable @Override public Object getObject() { return row.get().getRaw(columnName); }
@Override public Comparable[] apply(Row row, Comparable[] key) { key[0] = timestampExtractFn.apply(row); for (int i = 1; i < key.length; i++) { final Comparable val = (Comparable) row.getRaw(query.getDimensions().get(i - 1).getOutputName()); key[i] = valueConvertFns[i - 1].apply(val); } return key; } };
private static int compareDims(List<DimensionSpec> dimensions, Row lhs, Row rhs) { for (DimensionSpec dimension : dimensions) { //noinspection unchecked final int dimCompare = DimensionHandlerUtils.compareObjectsAsType( lhs.getRaw(dimension.getOutputName()), rhs.getRaw(dimension.getOutputName()), dimension.getOutputType() ); if (dimCompare != 0) { return dimCompare; } } return 0; }
@Override public Object[] apply(final Row row) { final Object[] retVal = new Object[fieldList.size()]; for (RelDataTypeField field : fieldList) { retVal[field.getIndex()] = coerce( row.getRaw(druidQuery.getOutputRowSignature().getRowOrder().get(field.getIndex())), field.getType().getSqlTypeName() ); } return retVal; } }
@Override public Row apply(final Row arg1, final Row arg2) { if (arg1 == null) { return arg2; } else if (arg2 == null) { return arg1; } final Map<String, Object> newMap = Maps.newHashMapWithExpectedSize( query.getDimensions().size() + query.getAggregatorSpecs().size() ); // Add dimensions for (DimensionSpec dimension : query.getDimensions()) { newMap.put(dimension.getOutputName(), arg1.getRaw(dimension.getOutputName())); } // Add aggregations for (AggregatorFactory aggregatorFactory : query.getAggregatorSpecs()) { newMap.put( aggregatorFactory.getName(), aggregatorFactory.combine( arg1.getRaw(aggregatorFactory.getName()), arg2.getRaw(aggregatorFactory.getName()) ) ); } return new MapBasedRow(adjustTimestamp(arg1), newMap); }
Assert.assertEquals(1, results.size()); Row row = results.get(0); Assert.assertEquals(40.0, new Double(row.getRaw("cnt").toString()), 0); Assert.assertEquals(40.0, (double) row.getRaw("sketch"), 0); Assert.assertEquals(40.0, new Double(row.getRaw("estimate").toString()), 0); Assert.assertEquals(40.0, new Double(row.getRaw("union").toString()), 0); Assert.assertEquals(40.0, new Double(row.getRaw("intersection").toString()), 0); Assert.assertEquals(0, new Double(row.getRaw("anotb").toString()), 0); Object obj = row.getRaw("quantiles-sketch"); Assert.assertTrue(obj instanceof DoublesSketch); DoublesSketch ds = (DoublesSketch) obj;