28.13.5 Joining PGX Frames
You can join two frames whose rows are correlated through one of the columns using the join functionality. This allows us to combine frames by checking for equality between rows for a specific column.
Assume there are two PgxFrames as shown:
//exampleFrame
+-------------------------------------------------------------------------------+
| name | age | salary | married | tax_rate | random | date_of_birth |
+-------------------------------------------------------------------------------+
| John | 27 | 4133300.0 | true | 11.0 | 123456782 | 1985-10-18 |
| Albert | 23 | 5813000.5 | false | 12.0 | 124343142 | 2000-01-14 |
| Heather | 28 | 1.0130302E7 | true | 10.5 | 827520917 | 1985-10-18 |
| Emily | 24 | 9380080.5 | false | 13.0 | 128973221 | 1910-07-30 |
| "D'Juan" | 27 | 1582093.0 | true | 11.0 | 92384 | 1955-12-01 |
+-------------------------------------------------------------------------------+
//moreInfoFrame
+---------------------------------------+
| name | title |
+---------------------------------------+
| John | Software Engineering Manager |
| Albert | Sales Manager |
| Emily | Operations Manager |
+---------------------------------------+The following example calls the join method to join
exampleFrame and moreInfoFrame. The API uses the
name column as joinKeyColumn to join the two frames. The
column prefixes specified in the API are leftFrame and
rightFrame.
opg4j> exampleFrame.join(moreInfoFrame, "name", "leftFrame", "rightFrame").print()exampleFrame.join(moreInfoFrame, "name", "leftFrame", "rightFrame").print();>>> example_frame.join(
... more_info_frame,
... join_key_column="name",
... left_prefix="leftFrame",
... right_prefix="rightFrame").print()Alternatively, you can also join the frames by providing leftjoinKeyColumn
and rightjoinKeyColumn. In this case joinKeyColumn is
omitted.
opg4j> exampleFrame.join(moreInfoFrame, "name", "name", "leftFrame", "rightFrame").print()exampleFrame.join(moreInfoFrame, "name", "name", "leftFrame", "rightFrame").print();>>> example_frame.join(
... more_info_frame,
... left_join_key_column="name",
... right_join_key_column="name",
... left_prefix="leftFrame",
... right_prefix="rightFrame").print()The resulting joined frame contains the columns of the two frames for the rows
with the same name column as shown:
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| leftFramename | leftFrameage | leftFramesalary | leftFramemarried | leftFrametax_rate | leftFramerandom | leftFramedate_of_birth | rightFramename | rightFrametitle |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| John | 27 | 4133300.0 | true | 11.0 | 123456782 | 1985-10-18 | John | Software Engineering Manager |
| Albert | 23 | 5813000.5 | false | 12.0 | 124343142 | 2000-01-14 | Albert | Sales Manager |
| Emily | 24 | 9380080.5 | false | 13.0 | 128973221 | 1910-07-30 | Emily | Operations Manager |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Parent topic: PgxFrames Tabular Data-Structure