leftOuterJoin
leftOuterJoin
joins data from a pair of tables - a left table and a right table - based upon one or more match columns (columnsToMatch
). The match columns establish key identifiers in the source tables from which the tables are joined. Any data type can be used as keys.
The resultant table contains all rows from the left table (the first given) as well as rows from the right table that have matching keys in the identifier column(s).
This table operation is currently experimental. The API may change in the future.
Syntax
leftOuterJoin(leftTable, rightTable, columnsToMatch)
leftOuterJoin(leftTable, rightTable, columnsToMatch, columnsToAdd)
Parameters
Parameter | Type | Description |
---|---|---|
leftTable | Table | The left table from which data is joined. |
rightTable | Table | The right table from which data is joined. |
columnsToMatch | String | Columns from the left and right tables used to join on.
|
columnsToMatch | Collection<String> | Columns from the left and right tables used to join on.
|
columnsToAdd | String | The columns from the right table to add to the left table based on key.
|
columnsToAdd | Collection<String> | The columns from the right table to add to the left table based on key.
|
Returns
A new table containing all rows from the left table and matching rows from the right table. Rows that do not have matching criteria will not be included in the result. If there are multiple matches between a row from the left table and rows from the right table, all matching combinations will be included. If no match columns are specified, every combination of left and right table rows is included.
Examples
The following example creates two source table and performs a leftOuterJoin
on them. It gives no columnsToAdd
, so all columns from the right
table appear in the result
table.
import io.deephaven.engine.util.TableTools
import io.deephaven.engine.util.OuterJoinTools
left = TableTools.emptyTable(10).update("I = ii % 5 + 1", "A = `left` + ii")
right = TableTools.emptyTable(10).update("I = ii % 3", "B = `right` + ii", "C = Math.sin(I)")
result = OuterJoinTools.leftOuterJoin(left, right, "I")
- left
- right
- result
The following example creates two source tables and performs a leftOuterJoin
on them. It specifies C
as the only columnsToAdd
, so C
is the only column from the right
table that gets added to result
.
import io.deephaven.engine.util.TableTools
import io.deephaven.engine.util.OuterJoinTools
left = TableTools.emptyTable(10).update("I = ii % 5 + 1", "A = `left` + ii")
right = TableTools.emptyTable(10).update("I = ii % 3", "B = `right` + ii", "C = Math.sin(I)")
result = OuterJoinTools.leftOuterJoin(left, right, "I", "C")
- left
- right
- result
The example below shows how to join tables on match columns with different names and rename appended columns when performing a leftOuterJoin
.
import io.deephaven.engine.util.TableTools
import io.deephaven.engine.util.OuterJoinTools
left = TableTools.emptyTable(10).update("X1 = ii % 5 + 1", "Y = Math.sin(X1)")
right = TableTools.emptyTable(10).update("X2 = ii % 3", "Y = Math.cos(X2)")
result = OuterJoinTools.leftOuterJoin(left, right, "X1 = X2", "Z = Y")
- left
- right
- result