Package org.apache.druid.segment.join
Interface Joinable
- All Superinterfaces:
ReferenceCountedObjectProvider<Closeable>
- All Known Implementing Classes:
IndexedTableJoinable,LookupJoinable
Represents something that can be the right-hand side of a join.
This class's most important method is
makeJoinMatcher(org.apache.druid.segment.ColumnSelectorFactory, org.apache.druid.segment.join.JoinConditionAnalysis, boolean, org.apache.druid.java.util.common.io.Closer). Its main user is
HashJoinEngine.makeJoinCursor(org.apache.druid.segment.Cursor, org.apache.druid.segment.join.JoinableClause, org.apache.druid.java.util.common.io.Closer).-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionReturns the list of columns that this Joinable offers.intgetCardinality(String columnName) Returns the cardinality of "columnName", orCARDINALITY_UNKNOWNif not known.getColumnCapabilities(String columnName) Returns capabilities for one of this Joinable's columns.getCorrelatedColumnValues(String searchColumnName, String searchColumnValue, String retrievalColumnName, long maxCorrelationSetSize, boolean allowNonKeyColumnSearch) Searches a column from this Joinable for a particular value, finds rows that match, and returns values of a second column for those rows.getMatchableColumnValues(String columnName, boolean includeNull, int maxNumValues) Returns all matchable values from a particular column along with a flag to tell if they are all unique in the column.makeJoinMatcher(ColumnSelectorFactory leftColumnSelectorFactory, JoinConditionAnalysis condition, boolean remainderNeeded, Closer closer) Creates a JoinMatcher that can be used to implement a join onto this Joinable.Methods inherited from interface org.apache.druid.segment.ReferenceCountedObjectProvider
acquireReference
-
Field Details
-
CARDINALITY_UNKNOWN
static final int CARDINALITY_UNKNOWN- See Also:
-
-
Method Details
-
getAvailableColumns
Returns the list of columns that this Joinable offers. -
getCardinality
Returns the cardinality of "columnName", orCARDINALITY_UNKNOWNif not known. May be used at query time to trigger optimizations. If notCARDINALITY_UNKNOWN, this must match the cardinality of selectors returned by theColumnSelectorFactory.makeDimensionSelector(org.apache.druid.query.dimension.DimensionSpec)method of this joinable'sJoinMatcher.getColumnSelectorFactory(). -
getColumnCapabilities
Returns capabilities for one of this Joinable's columns.- Parameters:
columnName- column name- Returns:
- capabilities, or null if the columnName is not one of this Joinable's columns
-
makeJoinMatcher
JoinMatcher makeJoinMatcher(ColumnSelectorFactory leftColumnSelectorFactory, JoinConditionAnalysis condition, boolean remainderNeeded, Closer closer) Creates a JoinMatcher that can be used to implement a join onto this Joinable.- Parameters:
leftColumnSelectorFactory- column selector factory that allows access to the left-hand side of the joincondition- join condition for the matcherremainderNeeded- whether or notJoinMatcher.matchRemainder()will ever be called on the matcher. If we know it will not, additional optimizations are often possible.closer- closer that will run after join cursor has completed to clean up any per query resources the joinable uses- Returns:
- the matcher
-
getMatchableColumnValues
Joinable.ColumnValuesWithUniqueFlag getMatchableColumnValues(String columnName, boolean includeNull, int maxNumValues) Returns all matchable values from a particular column along with a flag to tell if they are all unique in the column. If the matchable values are greater than "maxNumValues" or if the column doesn't exists or doesn't supports this operation, returns an object with empty set for column values and false for uniqueness flag. The uniqueness flag will only be true if we've collected all matchable values in the column and found that they're all unique. In all other cases it will be false. The returned set may be passed toInDimFilter. For efficiency, implementations should prefer creating the returned set withnew TreeSet<String>(Comparators.naturalNullsFirst()}. This avoids a copy in the filter's constructor.- Parameters:
columnName- name of the columnincludeNull- whether null should be considered a matchable value. If true, this method returns all values that are present in the column. If false, this method returns all non-null values.maxNumValues- maximum number of values to return. If exceeded, returns an empty set with the "allUnique" flag set to false.
-