Class DimFilterUtils


  • public class DimFilterUtils
    extends Object
    • Constructor Detail

      • DimFilterUtils

        public DimFilterUtils()
    • Method Detail

      • filterShards

        public static <T> Set<T> filterShards​(DimFilter dimFilter,
                                              Iterable<T> input,
                                              com.google.common.base.Function<T,​ShardSpec> converter)
        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. If you plan to call this multiple times with the same dimFilter, consider using filterShards(DimFilter, Iterable, Function, Map) instead with a cached map
        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
        input - The iterable of objects to be filtered
        converter - The function to convert T to ShardSpec that can be filtered by
        Returns:
        The set of filtered object, in the same order as input
      • filterShards

        public static <T> Set<T> filterShards​(DimFilter dimFilter,
                                              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
        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