public class BeamJoinRel extends org.apache.calcite.rel.core.Join implements BeamRelNode
BeamRelNode
to replace a Join
node.
Support for join can be categorized into 3 cases:
For the first two cases, a standard join is utilized as long as the windowFn of the both sides match.
For the third case, sideInput
is utilized to implement the join, so there are some
constraints:
FULL OUTER JOIN
is not supported.
LEFT OUTER JOIN
, the unbounded table should on the left side.
RIGHT OUTER JOIN
, the unbounded table should on the right side.
There are also some general constraints:
Constructor and Description |
---|
BeamJoinRel(org.apache.calcite.plan.RelOptCluster cluster,
org.apache.calcite.plan.RelTraitSet traits,
org.apache.calcite.rel.RelNode left,
org.apache.calcite.rel.RelNode right,
org.apache.calcite.rex.RexNode condition,
java.util.Set<org.apache.calcite.rel.core.CorrelationId> variablesSet,
org.apache.calcite.rel.core.JoinRelType joinType) |
Modifier and Type | Method and Description |
---|---|
org.apache.calcite.rel.core.Join |
copy(org.apache.calcite.plan.RelTraitSet traitSet,
org.apache.calcite.rex.RexNode conditionExpr,
org.apache.calcite.rel.RelNode left,
org.apache.calcite.rel.RelNode right,
org.apache.calcite.rel.core.JoinRelType joinType,
boolean semiJoinDone) |
PCollection<Row> |
sideInputJoin(PCollection<KV<Row,Row>> extractedLeftRows,
PCollection<KV<Row,Row>> extractedRightRows,
Row leftNullRow,
Row rightNullRow) |
PTransform<PCollectionTuple,PCollection<Row>> |
toPTransform()
A
BeamRelNode is a recursive structure, the BeamQueryPlanner visits it with a
DFS(Depth-First-Search) algorithm. |
accept, analyzeCondition, computeSelfCost, copy, createJoinType, deriveJoinRowType, deriveRowType, estimateJoinedRows, estimateRowCount, explainTerms, getChildExps, getCondition, getJoinType, getSystemFieldList, getVariablesSet, isSemiJoinDone, isValid
childrenAccept, getInputs, getLeft, getRight, replaceInput
accept, collectVariablesSet, collectVariablesUsed, computeDigest, computeSelfCost, explain, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraitSet, getVariablesStopped, isDistinct, isKey, isValid, metadata, onRegister, recomputeDigest, register, sole, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, computeSelfCost, copy, estimateRowCount, explain, getChildExps, getCollationList, getConvention, getCorrelVariable, getExpectedInputRowType, getInput, getInputs, getQuery, getRelTypeName, getRows, getRowType, getTable, getVariablesSet, getVariablesStopped, isDistinct, isKey, isValid, isValid, metadata, onRegister, recomputeDigest, register, replaceInput
public BeamJoinRel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traits, org.apache.calcite.rel.RelNode left, org.apache.calcite.rel.RelNode right, org.apache.calcite.rex.RexNode condition, java.util.Set<org.apache.calcite.rel.core.CorrelationId> variablesSet, org.apache.calcite.rel.core.JoinRelType joinType)
public org.apache.calcite.rel.core.Join copy(org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rex.RexNode conditionExpr, org.apache.calcite.rel.RelNode left, org.apache.calcite.rel.RelNode right, org.apache.calcite.rel.core.JoinRelType joinType, boolean semiJoinDone)
copy
in class org.apache.calcite.rel.core.Join
public PTransform<PCollectionTuple,PCollection<Row>> toPTransform()
BeamRelNode
BeamRelNode
is a recursive structure, the BeamQueryPlanner
visits it with a
DFS(Depth-First-Search) algorithm.toPTransform
in interface BeamRelNode
public PCollection<Row> sideInputJoin(PCollection<KV<Row,Row>> extractedLeftRows, PCollection<KV<Row,Row>> extractedRightRows, Row leftNullRow, Row rightNullRow)