Class DimFilterUtils

java.lang.Object
org.apache.druid.query.filter.DimFilterUtils

public class DimFilterUtils extends Object
  • Field Details

  • Constructor Details

    • DimFilterUtils

      public DimFilterUtils()
  • Method Details

    • filterShards

      public static <T> Set<T> filterShards(@Nullable DimFilter dimFilter, @Nullable Set<String> filterFields, Iterable<T> input, com.google.common.base.Function<T,ShardSpec> converter, Map<String,Optional<com.google.common.collect.RangeSet<String>>> dimensionRangeCache)
      Filter the given iterable of objects by removing any object whose ShardSpec, obtained from the converter function, does not fit in the RangeSet of the dimFilter DimFilter.getDimensionRangeSet(String). The returned set contains the filtered objects in the same order as they appear in input. DimensionRangedCache stores the RangeSets of different dimensions for the dimFilter. It should be re-used between calls with the same dimFilter to save redundant calls of DimFilter.getDimensionRangeSet(String) on same dimensions.
      Type Parameters:
      T - This can be any type, as long as transform function is provided to convert this to ShardSpec
      Parameters:
      dimFilter - The filter to use
      filterFields - Set of fields to consider for pruning, or null to consider all fields
      input - The iterable of objects to be filtered
      converter - The function to convert T to ShardSpec that can be filtered by
      dimensionRangeCache - The cache of RangeSets of different dimensions for the dimFilter
      Returns:
      The set of filtered object, in the same order as input
    • onlyBaseFields

      public static Set<String> onlyBaseFields(Set<String> fields, com.google.common.base.Predicate<String> isBaseColumnFn)
      Returns a copy of "fields" filtered by the predicate function.