Class AggregatorUtil
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final bytestatic final byte -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleancanVectorize(ColumnInspector columnInspector, String fieldName, String expression, com.google.common.base.Supplier<Expr> fieldExpression) static Pair<List<AggregatorFactory>, List<PostAggregator>> condensedAggregators(List<AggregatorFactory> aggList, List<PostAggregator> postAggList, String metric) static com.google.common.base.Supplier<byte[]> getSimpleAggregatorCacheKeySupplier(byte aggregatorType, String fieldName, com.google.common.base.Supplier<Expr> fieldExpression) static VectorValueSelectormakeVectorValueSelector(VectorColumnSelectorFactory columnSelectorFactory, String fieldName, String expression, com.google.common.base.Supplier<Expr> fieldExpression) Make aVectorValueSelectorfor primitive numeric or expression virtual column inputs.static List<PostAggregator> pruneDependentPostAgg(List<PostAggregator> postAggregatorList, String outputName) Given a list of PostAggregators and the name of an output column, returns the minimal list of PostAggregators required to compute the output column.static booleanshouldUseObjectColumnAggregatorWrapper(String fieldName, ColumnSelectorFactory columnSelectorFactory) Whether a simple numeric aggregator should useBaseObjectColumnValueSelector.getObject(), and coerce the result to number, rather than using a primitive method likeBaseLongColumnValueSelector.getLong().
-
Field Details
-
STRING_SEPARATOR
public static final byte STRING_SEPARATOR- See Also:
-
COUNT_CACHE_TYPE_ID
public static final byte COUNT_CACHE_TYPE_ID- See Also:
-
LONG_SUM_CACHE_TYPE_ID
public static final byte LONG_SUM_CACHE_TYPE_ID- See Also:
-
DOUBLE_SUM_CACHE_TYPE_ID
public static final byte DOUBLE_SUM_CACHE_TYPE_ID- See Also:
-
DOUBLE_MAX_CACHE_TYPE_ID
public static final byte DOUBLE_MAX_CACHE_TYPE_ID- See Also:
-
DOUBLE_MIN_CACHE_TYPE_ID
public static final byte DOUBLE_MIN_CACHE_TYPE_ID- See Also:
-
HYPER_UNIQUE_CACHE_TYPE_ID
public static final byte HYPER_UNIQUE_CACHE_TYPE_ID- See Also:
-
JS_CACHE_TYPE_ID
public static final byte JS_CACHE_TYPE_ID- See Also:
-
HIST_CACHE_TYPE_ID
public static final byte HIST_CACHE_TYPE_ID- See Also:
-
CARD_CACHE_TYPE_ID
public static final byte CARD_CACHE_TYPE_ID- See Also:
-
FILTERED_AGG_CACHE_TYPE_ID
public static final byte FILTERED_AGG_CACHE_TYPE_ID- See Also:
-
LONG_MAX_CACHE_TYPE_ID
public static final byte LONG_MAX_CACHE_TYPE_ID- See Also:
-
LONG_MIN_CACHE_TYPE_ID
public static final byte LONG_MIN_CACHE_TYPE_ID- See Also:
-
FLOAT_SUM_CACHE_TYPE_ID
public static final byte FLOAT_SUM_CACHE_TYPE_ID- See Also:
-
FLOAT_MAX_CACHE_TYPE_ID
public static final byte FLOAT_MAX_CACHE_TYPE_ID- See Also:
-
FLOAT_MIN_CACHE_TYPE_ID
public static final byte FLOAT_MIN_CACHE_TYPE_ID- See Also:
-
SKETCH_MERGE_CACHE_TYPE_ID
public static final byte SKETCH_MERGE_CACHE_TYPE_ID- See Also:
-
DISTINCT_COUNT_CACHE_KEY
public static final byte DISTINCT_COUNT_CACHE_KEY- See Also:
-
FLOAT_LAST_CACHE_TYPE_ID
public static final byte FLOAT_LAST_CACHE_TYPE_ID- See Also:
-
APPROX_HIST_CACHE_TYPE_ID
public static final byte APPROX_HIST_CACHE_TYPE_ID- See Also:
-
APPROX_HIST_FOLDING_CACHE_TYPE_ID
public static final byte APPROX_HIST_FOLDING_CACHE_TYPE_ID- See Also:
-
DOUBLE_FIRST_CACHE_TYPE_ID
public static final byte DOUBLE_FIRST_CACHE_TYPE_ID- See Also:
-
DOUBLE_LAST_CACHE_TYPE_ID
public static final byte DOUBLE_LAST_CACHE_TYPE_ID- See Also:
-
FLOAT_FIRST_CACHE_TYPE_ID
public static final byte FLOAT_FIRST_CACHE_TYPE_ID- See Also:
-
LONG_FIRST_CACHE_TYPE_ID
public static final byte LONG_FIRST_CACHE_TYPE_ID- See Also:
-
LONG_LAST_CACHE_TYPE_ID
public static final byte LONG_LAST_CACHE_TYPE_ID- See Also:
-
TIMESTAMP_CACHE_TYPE_ID
public static final byte TIMESTAMP_CACHE_TYPE_ID- See Also:
-
VARIANCE_CACHE_TYPE_ID
public static final byte VARIANCE_CACHE_TYPE_ID- See Also:
-
QUANTILES_DOUBLES_SKETCH_BUILD_CACHE_TYPE_ID
public static final byte QUANTILES_DOUBLES_SKETCH_BUILD_CACHE_TYPE_ID- See Also:
-
QUANTILES_DOUBLES_SKETCH_MERGE_CACHE_TYPE_ID
public static final byte QUANTILES_DOUBLES_SKETCH_MERGE_CACHE_TYPE_ID- See Also:
-
QUANTILES_DOUBLES_SKETCH_TO_HISTOGRAM_CACHE_TYPE_ID
public static final byte QUANTILES_DOUBLES_SKETCH_TO_HISTOGRAM_CACHE_TYPE_ID- See Also:
-
QUANTILES_DOUBLES_SKETCH_TO_QUANTILE_CACHE_TYPE_ID
public static final byte QUANTILES_DOUBLES_SKETCH_TO_QUANTILE_CACHE_TYPE_ID- See Also:
-
QUANTILES_DOUBLES_SKETCH_TO_QUANTILES_CACHE_TYPE_ID
public static final byte QUANTILES_DOUBLES_SKETCH_TO_QUANTILES_CACHE_TYPE_ID- See Also:
-
QUANTILES_DOUBLES_SKETCH_TO_STRING_CACHE_TYPE_ID
public static final byte QUANTILES_DOUBLES_SKETCH_TO_STRING_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_SET_OP_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_SET_OP_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_ESTIMATE_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_ESTIMATE_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_ESTIMATE_AND_BOUNDS_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_ESTIMATE_AND_BOUNDS_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_MEANS_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_MEANS_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_VARIANCES_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_VARIANCES_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_NUM_ENTRIES_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_NUM_ENTRIES_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_QUANTILES_SKETCH_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_QUANTILES_SKETCH_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_T_TEST_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_T_TEST_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_STRING_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_STRING_CACHE_TYPE_ID- See Also:
-
STRING_FIRST_CACHE_TYPE_ID
public static final byte STRING_FIRST_CACHE_TYPE_ID- See Also:
-
STRING_LAST_CACHE_TYPE_ID
public static final byte STRING_LAST_CACHE_TYPE_ID- See Also:
-
SUPPRESSED_AGG_CACHE_TYPE_ID
public static final byte SUPPRESSED_AGG_CACHE_TYPE_ID- See Also:
-
HLL_SKETCH_BUILD_CACHE_TYPE_ID
public static final byte HLL_SKETCH_BUILD_CACHE_TYPE_ID- See Also:
-
HLL_SKETCH_MERGE_CACHE_TYPE_ID
public static final byte HLL_SKETCH_MERGE_CACHE_TYPE_ID- See Also:
-
HLL_SKETCH_UNION_CACHE_TYPE_ID
public static final byte HLL_SKETCH_UNION_CACHE_TYPE_ID- See Also:
-
HLL_SKETCH_TO_STRING_CACHE_TYPE_ID
public static final byte HLL_SKETCH_TO_STRING_CACHE_TYPE_ID- See Also:
-
HLL_SKETCH_TO_ESTIMATE_AND_BOUNDS_CACHE_TYPE_ID
public static final byte HLL_SKETCH_TO_ESTIMATE_AND_BOUNDS_CACHE_TYPE_ID- See Also:
-
FIXED_BUCKET_HIST_CACHE_TYPE_ID
public static final byte FIXED_BUCKET_HIST_CACHE_TYPE_ID- See Also:
-
BLOOM_FILTER_CACHE_TYPE_ID
public static final byte BLOOM_FILTER_CACHE_TYPE_ID- See Also:
-
BLOOM_FILTER_MERGE_CACHE_TYPE_ID
public static final byte BLOOM_FILTER_MERGE_CACHE_TYPE_ID- See Also:
-
MOMENTS_SKETCH_BUILD_CACHE_TYPE_ID
public static final byte MOMENTS_SKETCH_BUILD_CACHE_TYPE_ID- See Also:
-
MOMENTS_SKETCH_MERGE_CACHE_TYPE_ID
public static final byte MOMENTS_SKETCH_MERGE_CACHE_TYPE_ID- See Also:
-
TDIGEST_BUILD_SKETCH_CACHE_TYPE_ID
public static final byte TDIGEST_BUILD_SKETCH_CACHE_TYPE_ID- See Also:
-
SPECTATOR_HISTOGRAM_CACHE_TYPE_ID
public static final byte SPECTATOR_HISTOGRAM_CACHE_TYPE_ID- See Also:
-
SPECTATOR_HISTOGRAM_DISTRIBUTION_CACHE_TYPE_ID
public static final byte SPECTATOR_HISTOGRAM_DISTRIBUTION_CACHE_TYPE_ID- See Also:
-
SPECTATOR_HISTOGRAM_TIMER_CACHE_TYPE_ID
public static final byte SPECTATOR_HISTOGRAM_TIMER_CACHE_TYPE_ID- See Also:
-
MEAN_CACHE_TYPE_ID
public static final byte MEAN_CACHE_TYPE_ID- See Also:
-
LONG_ANY_CACHE_TYPE_ID
public static final byte LONG_ANY_CACHE_TYPE_ID- See Also:
-
DOUBLE_ANY_CACHE_TYPE_ID
public static final byte DOUBLE_ANY_CACHE_TYPE_ID- See Also:
-
FLOAT_ANY_CACHE_TYPE_ID
public static final byte FLOAT_ANY_CACHE_TYPE_ID- See Also:
-
STRING_ANY_CACHE_TYPE_ID
public static final byte STRING_ANY_CACHE_TYPE_ID- See Also:
-
GROUPING_CACHE_TYPE_ID
public static final byte GROUPING_CACHE_TYPE_ID- See Also:
-
EXPRESSION_LAMBDA_CACHE_TYPE_ID
public static final byte EXPRESSION_LAMBDA_CACHE_TYPE_ID- See Also:
-
KLL_DOUBLES_SKETCH_BUILD_CACHE_TYPE_ID
public static final byte KLL_DOUBLES_SKETCH_BUILD_CACHE_TYPE_ID- See Also:
-
KLL_DOUBLES_SKETCH_MERGE_CACHE_TYPE_ID
public static final byte KLL_DOUBLES_SKETCH_MERGE_CACHE_TYPE_ID- See Also:
-
KLL_FLOATS_SKETCH_BUILD_CACHE_TYPE_ID
public static final byte KLL_FLOATS_SKETCH_BUILD_CACHE_TYPE_ID- See Also:
-
KLL_FLOATS_SKETCH_MERGE_CACHE_TYPE_ID
public static final byte KLL_FLOATS_SKETCH_MERGE_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_BASE64_STRING_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_BASE64_STRING_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_CONSTANT_SKETCH_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_CONSTANT_SKETCH_CACHE_TYPE_ID- See Also:
-
ARRAY_OF_DOUBLES_SKETCH_TO_METRICS_SUM_ESTIMATE_CACHE_TYPE_ID
public static final byte ARRAY_OF_DOUBLES_SKETCH_TO_METRICS_SUM_ESTIMATE_CACHE_TYPE_ID- See Also:
-
SINGLE_VALUE_CACHE_TYPE_ID
public static final byte SINGLE_VALUE_CACHE_TYPE_ID- See Also:
-
DDSKETCH_CACHE_TYPE_ID
public static final byte DDSKETCH_CACHE_TYPE_ID- See Also:
-
BITMAP64_EXACT_COUNT_BUILD_CACHE_TYPE_ID
public static final byte BITMAP64_EXACT_COUNT_BUILD_CACHE_TYPE_ID- See Also:
-
BITMAP64_EXACT_COUNT_MERGE_CACHE_TYPE_ID
public static final byte BITMAP64_EXACT_COUNT_MERGE_CACHE_TYPE_ID- See Also:
-
-
Constructor Details
-
AggregatorUtil
public AggregatorUtil()
-
-
Method Details
-
pruneDependentPostAgg
public static List<PostAggregator> pruneDependentPostAgg(List<PostAggregator> postAggregatorList, String outputName) Given a list of PostAggregators and the name of an output column, returns the minimal list of PostAggregators required to compute the output column.If the outputColumn does not exist in the list of PostAggregators, the return list will be empty (under the assumption that the outputColumn comes from a project, aggregation or really anything other than a PostAggregator).
If the outputColumn does exist in the list of PostAggregators, then the return list will have at least one element. If the PostAggregator with outputName depends on any other PostAggregators, then the returned list will contain all PostAggregators required to compute the outputColumn.
Note that PostAggregators are processed in list-order, meaning that for a PostAggregator to depend on another PostAggregator, the "depender" must exist *after* the "dependee" in the list. That is, if PostAggregator A depends on PostAggregator B, then the list should be [B, A], such that A is computed after B.
- Parameters:
postAggregatorList- List of postAggregator, there is a restriction that the list should be in an order such that all the dependencies of any given aggregator should occur before that aggregator. See AggregatorUtilTest.testOutOfOrderPruneDependentPostAgg for example.outputName- name of the postAgg on which dependency is to be calculated- Returns:
- the list of dependent postAggregators
-
condensedAggregators
public static Pair<List<AggregatorFactory>,List<PostAggregator>> condensedAggregators(List<AggregatorFactory> aggList, List<PostAggregator> postAggList, String metric) -
canVectorize
public static boolean canVectorize(ColumnInspector columnInspector, @Nullable String fieldName, @Nullable String expression, com.google.common.base.Supplier<Expr> fieldExpression) -
makeVectorValueSelector
public static VectorValueSelector makeVectorValueSelector(VectorColumnSelectorFactory columnSelectorFactory, @Nullable String fieldName, @Nullable String expression, com.google.common.base.Supplier<Expr> fieldExpression) Make aVectorValueSelectorfor primitive numeric or expression virtual column inputs. -
getSimpleAggregatorCacheKeySupplier
-
shouldUseObjectColumnAggregatorWrapper
public static boolean shouldUseObjectColumnAggregatorWrapper(@Nullable String fieldName, ColumnSelectorFactory columnSelectorFactory) Whether a simple numeric aggregator should useBaseObjectColumnValueSelector.getObject(), and coerce the result to number, rather than using a primitive method likeBaseLongColumnValueSelector.getLong().- Parameters:
fieldName- field name, or null if the aggregator is expression-basedcolumnSelectorFactory- column selector factory
-