Interface DimFilter

All Superinterfaces:
Cacheable
All Known Implementing Classes:
AbstractOptimizableDimFilter, AndDimFilter, ArrayContainsElementFilter, BoundDimFilter, ColumnComparisonDimFilter, EqualityFilter, ExpressionDimFilter, ExtractionDimFilter, FalseDimFilter, InDimFilter, IntervalDimFilter, IsBooleanDimFilter, IsFalseDimFilter, IsTrueDimFilter, JavaScriptDimFilter, LikeDimFilter, NotDimFilter, NullFilter, OrDimFilter, RangeFilter, RegexDimFilter, SearchQueryDimFilter, SelectorDimFilter, SpatialDimFilter, TrueDimFilter, TypedInFilter

public interface DimFilter extends Cacheable
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static class 
    Wrapper for StringBuilder to re-use common patterns in custom DimFilter#toString() implementations
  • Method Summary

    Modifier and Type
    Method
    Description
    com.google.common.collect.RangeSet<String>
    Returns a RangeSet that represents the possible range of the input dimension for this DimFilter.This is applicable to filters that use dimensions such as select, in, bound, and logical filters such as and, or, not.
     
    optimize(boolean mayIncludeUnknown)
    Returns an optimized version of this filter.
    Returns a Filter that implements this DimFilter.
    toOptimizedFilter(boolean mayIncludeUnknown)
     

    Methods inherited from interface org.apache.druid.java.util.common.Cacheable

    getCacheKey
  • Method Details

    • optimize

      DimFilter optimize(boolean mayIncludeUnknown)
      Returns an optimized version of this filter.
      Parameters:
      mayIncludeUnknown - whether the optimized filter may need to operate in "includeUnknown" mode.
    • toOptimizedFilter

      Filter toOptimizedFilter(boolean mayIncludeUnknown)
      Parameters:
      mayIncludeUnknown - whether the optimized filter may need to operate in "includeUnknown" mode.
      Returns:
      Return a Filter that implements this DimFilter, after applying optimizations to this DimFilter. A typical implementation will return the result of `optimize().toFilter()` See abstract base class AbstractOptimizableDimFilter for a common implementation shared by current DimFilters. The Filter returned by this method across multiple calls must be the same object: parts of the query stack compare Filters, and returning the same object allows these checks to avoid deep comparisons. (see HashJoinSegmentCursorFactory.makeCursorHolder(CursorBuildSpec) for an example}
    • toFilter

      Filter toFilter()
      Returns a Filter that implements this DimFilter. This does not generally involve optimizing the DimFilter, so it does make sense to optimize first and then call toFilter on the resulting DimFilter.
      Returns:
      a Filter that implements this DimFilter, or null if this DimFilter is a no-op.
    • getDimensionRangeSet

      @Nullable com.google.common.collect.RangeSet<String> getDimensionRangeSet(String dimension)
      Returns a RangeSet that represents the possible range of the input dimension for this DimFilter.This is applicable to filters that use dimensions such as select, in, bound, and logical filters such as and, or, not. Null represents that the range cannot be determined, and will be returned for filters such as javascript and regex where there's no easy way to determine the filtered range. It is treated the same way as an all range in most cases, however there are some subtle difference at logical filters such as not filter, where complement of all is nothing while complement of null is still null.
      Parameters:
      dimension - name of the dimension to get range for
      Returns:
      a RangeSet that represent the possible range of the input dimension, or null if it is not possible to determine for this DimFilter.
    • getRequiredColumns

      Set<String> getRequiredColumns()
      Returns:
      a HashSet that represents all columns' name which the DimFilter required to do filter.