Class AggregatorUtil

java.lang.Object
org.apache.druid.query.aggregation.AggregatorUtil

public class AggregatorUtil extends Object
  • 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 a VectorValueSelector for primitive numeric or expression virtual column inputs.
    • getSimpleAggregatorCacheKeySupplier

      public static com.google.common.base.Supplier<byte[]> getSimpleAggregatorCacheKeySupplier(byte aggregatorType, String fieldName, com.google.common.base.Supplier<Expr> fieldExpression)
    • shouldUseObjectColumnAggregatorWrapper

      public static boolean shouldUseObjectColumnAggregatorWrapper(@Nullable String fieldName, ColumnSelectorFactory columnSelectorFactory)
      Whether a simple numeric aggregator should use BaseObjectColumnValueSelector.getObject(), and coerce the result to number, rather than using a primitive method like BaseLongColumnValueSelector.getLong().
      Parameters:
      fieldName - field name, or null if the aggregator is expression-based
      columnSelectorFactory - column selector factory