27.13.5 PGXフレームの結合

join機能を使用して、いずれかの列によって行が相関関係にある2つのフレームを結合できます。これにより、特定の列について行間の等価性をチェックすることで、フレームを結合できます。

次のような2つのPgxFramesがあるとします:

//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           |
+---------------------------------------+

次の例では、joinメソッドをコールしてexampleFramemoreInfoFrameを結合しています。このAPIでは、name列をjoinKeyColumnとして使用して、これら2つのフレームを結合しています。このAPIで指定されている列接頭辞は、leftFramerightFrameです。

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()

または、leftjoinKeyColumnrightjoinKeyColumnを指定してこれらのフレームを結合することもできます。この場合、joinKeyColumnは省略されます。

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()

結果となる結合されたフレームには、次に示すように、name列が同じである行の、これら2つのフレームの列が含まれています。

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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           |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+