@AggregationFunction("count_if") public final class CountIfAggregation { private CountIfAggregation() {} @InputFunction public static void input(@AggregationState LongState state, @SqlType(StandardTypes.BOOLEAN) boolean value) { if (value) { state.setLong(state.getLong() + 1); } } @CombineFunction public static void combine(@AggregationState LongState state, @AggregationState LongState otherState) { state.setLong(state.getLong() + otherState.getLong()); } @OutputFunction(StandardTypes.BIGINT) public static void output(@AggregationState LongState state, BlockBuilder out) { BIGINT.writeLong(out, state.getLong()); } }
private static List<String> getNames(@Nullable AnnotatedElement outputFunction, AggregationFunction aggregationAnnotation) { List<String> defaultNames = ImmutableList.<String>builder().add(aggregationAnnotation.value()).addAll(Arrays.asList(aggregationAnnotation.alias())).build(); if (outputFunction == null) { return defaultNames; } AggregationFunction annotation = outputFunction.getAnnotation(AggregationFunction.class); if (annotation == null) { return defaultNames; } else { return ImmutableList.<String>builder().add(annotation.value()).addAll(Arrays.asList(annotation.alias())).build(); } }
private static AggregationHeader parseHeader(AnnotatedElement aggregationDefinition) { AggregationFunction aggregationAnnotation = aggregationDefinition.getAnnotation(AggregationFunction.class); requireNonNull(aggregationAnnotation, "aggregationAnnotation is null"); return new AggregationHeader( aggregationAnnotation.value(), parseDescription(aggregationDefinition), aggregationAnnotation.decomposable(), aggregationAnnotation.isOrderSensitive(), aggregationAnnotation.hidden()); }
private static List<AggregationHeader> parseHeaders(AnnotatedElement aggregationDefinition, AnnotatedElement toParse) { AggregationFunction aggregationAnnotation = aggregationDefinition.getAnnotation(AggregationFunction.class); return getNames(toParse, aggregationAnnotation).stream() .map(name -> new AggregationHeader( name, parseDescription(aggregationDefinition, toParse), aggregationAnnotation.decomposable(), aggregationAnnotation.isOrderSensitive(), aggregationAnnotation.hidden())) .collect(toImmutableList()); }
@AggregationFunction("count") public final class CountAggregation { private CountAggregation() { } @InputFunction public static void input(@AggregationState LongState state) { state.setLong(state.getLong() + 1); } @CombineFunction public static void combine(@AggregationState LongState state, @AggregationState LongState otherState) { state.setLong(state.getLong() + otherState.getLong()); } @OutputFunction(StandardTypes.BIGINT) public static void output(@AggregationState LongState state, BlockBuilder out) { BIGINT.writeLong(out, state.getLong()); } }
@AggregationFunction(value = NAME, decomposable = false) public class SpatialPartitioningAggregateFunction { public static final String NAME = "spatial_partitioning"; private SpatialPartitioningAggregateFunction() {} @InputFunction public static void input(SpatialPartitioningState state, @SqlType(GEOMETRY_TYPE_NAME) Slice slice) { throw new UnsupportedOperationException("spatial_partitioning(geometry, samplingPercentage) aggregate function should be re-written into spatial_partitioning(geometry, samplingPercentage, partitionCount)"); } @CombineFunction public static void combine(SpatialPartitioningState state, SpatialPartitioningState otherState) { throw new UnsupportedOperationException("spatial_partitioning(geometry, samplingPercentage) aggregate function should be re-written into spatial_partitioning(geometry, samplingPercentage, partitionCount)"); } @OutputFunction(StandardTypes.VARCHAR) public static void output(SpatialPartitioningState state, BlockBuilder out) { throw new UnsupportedOperationException("spatial_partitioning(geometry, samplingPercentage) aggregate function should be re-written into spatial_partitioning(geometry, samplingPercentage, partitionCount)"); } }
@AggregationFunction(value = "learn_classifier", decomposable = false) public final class LearnVarcharClassifierAggregation { private LearnVarcharClassifierAggregation() {} @InputFunction public static void input( @AggregationState LearnState state, @SqlType(VARCHAR) Slice label, @SqlType("map(bigint,double)") Block features) { LearnLibSvmVarcharClassifierAggregation.input(state, label, features, Slices.utf8Slice("")); } @CombineFunction public static void combine(@AggregationState LearnState state, @AggregationState LearnState otherState) { throw new UnsupportedOperationException("LEARN must run on a single machine"); } @OutputFunction("Classifier<varchar>") public static void output(@AggregationState LearnState state, BlockBuilder out) { LearnLibSvmVarcharClassifierAggregation.output(state, out); } }
@AggregationFunction("corr") public class DoubleCorrelationAggregation { private DoubleCorrelationAggregation() {} @InputFunction public static void input(@AggregationState CorrelationState state, @SqlType(StandardTypes.DOUBLE) double dependentValue, @SqlType(StandardTypes.DOUBLE) double independentValue) { updateCorrelationState(state, independentValue, dependentValue); } @CombineFunction public static void combine(@AggregationState CorrelationState state, @AggregationState CorrelationState otherState) { mergeCorrelationState(state, otherState); } @OutputFunction(StandardTypes.DOUBLE) public static void corr(@AggregationState CorrelationState state, BlockBuilder out) { double result = getCorrelation(state); if (Double.isFinite(result)) { DOUBLE.writeDouble(out, result); } else { out.appendNull(); } } }
@AggregationFunction("avg") public final class IntervalDayToSecondAverageAggregation
@AggregationFunction("sum") public final class IntervalDayToSecondSumAggregation
@AggregationFunction("sum") public final class IntervalYearToMonthSumAggregation
@AggregationFunction("sum") public final class DoubleSumAggregation
@AggregationFunction("custom_sum") public final class CustomSum
@AggregationFunction("sum") public final class LongSumAggregation
@AggregationFunction("geometric_mean") public final class RealGeometricMeanAggregations
@AggregationFunction("bitwise_and_agg") public final class BitwiseAndAggregation
@AggregationFunction("corr") public class RealCorrelationAggregation
@AggregationFunction("geometric_mean") public final class GeometricMeanAggregations
@AggregationFunction("avg") public final class IntervalYearToMonthAverageAggregation
@AggregationFunction("make_set_digest") public final class BuildSetDigestAggregation