列のマージコンポーネントは、2 つのテーブルを横に並べて結合し、2 番目のテーブルのすべての列を最初のテーブルの右側に追加します。行数は変わらず、列は積み上げられるのではなく、水平に結合されます。
前提条件
開始する前に、以下を確認してください:
両方のテーブルの行数が同じであること。行数が異なる場合、コンポーネントはエラーを返します。
一方のテーブルにパーティションがある場合、パーティションテーブルを 2 番目の入力ポートに接続します。最初のポートに接続すると、操作は失敗します。
コンポーネントの構成
以下のいずれかの方法を使用します。
方法1:パイプラインページでのコンポーネントの構成
左側テーブルからマージする列を選択すると、結果は右テーブルの指定された列に保存されます。

方法2:PAI コマンドの使用
構成は、appendColumns PAI コマンドを介して渡します。パイプラインで PAI コマンドを呼び出すには、SQL Script コンポーネントを使用します。
PAI -name appendColumns
-project algo_public
-DinputTableNames=maple_test_appendcol_basic_input1,maple_test_appendcol_basic_input2
-DoutputTableName=maple_test_appendcol_setOutCol_output
-DoutputTableColNames=x0,x1,x2,x3,x4,x5,x6,x7,x8,x9;パラメーター
| パラメーター | 必須 | デフォルト | 説明 |
|---|---|---|---|
inputTableNames | はい | — | 2 つの入力テーブルの名前をカンマ (,) で区切って指定します。 |
outputTableName | はい | — | 出力テーブルの名前。 |
selectedColNamesList | いいえ | — | 各入力テーブルから選択する列。テーブル内の列はカンマ (,) で区切り、2 つのテーブルはセミコロン (;) で区切ります。両方のテーブルからすべての列を選択する場合は、値をダブルクォーテーション (") で囲みます。そうしないと、セミコロンがコマンドの終端記号として扱われます。一方のテーブルからすべての列を選択する場合は、その列名を省略できますが、セミコロンは保持する必要があります。 |
inputPartitionsInfoList | いいえ | — | 各入力テーブルから読み取るパーティション。テーブル内のパーティションはスラッシュ (/) で区切り、2 つのテーブルはセミコロン (;) で区切ります。すべてのパーティションを選択する場合は、値をダブルクォーテーション (") で囲みます。テーブルがパーティション化されていない場合は、そのパーティション名を省略できますが、セミコロンは保持する必要があります。 |
autoRenameCol | いいえ | false | 出力テーブルの列を自動的に名前変更するかどうかを指定します。true に設定すると、outputTableColNames パラメーターは無視されます。 |
outputTableColNames | いいえ | — | 出力テーブルの新しい列名を順番に適用します。指定しない場合、両方のテーブルの元の列名が使用されます。autoRenameCol が true の場合は無視されます。 |
lifecycle | いいえ | — | 出力テーブルのライフサイクル。正の整数である必要があります。 |
coreNum | いいえ | システムのデフォルト値 | 割り当てるコア数。[1, 9999] の範囲の正の整数である必要があります。memSizePerCore と一緒に設定する必要があります。 |
memSizePerCore | いいえ | システムのデフォルト値 | コアごとに割り当てられるメモリ (MB)。[1024, 65536] の範囲の正の整数である必要があります。coreNum と一緒に設定する必要があります。 |
列名の競合の処理
両方の入力テーブルが同じ列名を共有している場合、競合を解決しない限り、出力テーブルには重複した列名が含まれます。2 つのオプションがあります:
自動名前変更:
autoRenameCol=trueを設定します。PAI は自動的に一意の名前を割り当てます。出力列名を制御する必要がない場合に使用します。手動名前変更:
outputTableColNamesに、すべての出力列をカバーする新しい名前のカンマ区切りリストを設定します。後続のステップが特定の列名に依存する場合に使用します。
autoRenameCol=trueの場合、outputTableColNamesに設定された値はすべて無視されます。
例
この例では、以下の 2 つのテーブルをマージします。
ソーステーブル 1: `maple_test_appendcol_basic_input1` (5 列、5 行)
| col0:bigint | col1:double | col2:string | col3:Datetime | col4:Boolean |
|---|---|---|---|---|
| 10 | 0.0 | aaaa | 2015-10-01 00:00:00 | TRUE |
| 11 | 1.0 | aaaa | 2015-10-01 00:00:00 | FALSE |
| 12 | 2.0 | aaaa | 2015-10-01 00:00:00 | TRUE |
| 13 | 3.0 | aaaa | 2015-10-01 00:00:00 | TRUE |
| 14 | 4.0 | aaaa | 2015-10-01 00:00:00 | TRUE |
ソーステーブル 2: `maple_test_appendcol_basic_input2` (5 列、5 行)
| col10:bigint | col11:double | col12:string | col13:Datetime | col14:Boolean |
|---|---|---|---|---|
| 110 | 10.0 | 2aaaa | 2015-10-01 00:00:00 | TRUE |
| 111 | 11.0 | 2aaaa | 2015-10-01 00:00:00 | FALSE |
| 112 | 12.0 | 2aaaa | 2015-10-01 00:00:00 | TRUE |
| 113 | 13.0 | 2aaaa | 2015-10-01 00:00:00 | TRUE |
| 114 | 14.0 | 2aaaa | 2015-10-01 00:00:00 | FALSE |
次のコマンドを実行して 2 つのテーブルをマージし、すべての出力列の名前を変更します:
PAI -name appendColumns
-project algo_public
-DinputTableNames=maple_test_appendcol_basic_input1,maple_test_appendcol_basic_input2
-DoutputTableName=maple_test_appendcol_setOutCol_output
-DoutputTableColNames=x0,x1,x2,x3,x4,x5,x6,x7,x8,x9;出力テーブル maple_test_appendcol_setOutCol_output には、10 列すべて (ソーステーブル 1 の x0~x4、ソーステーブル 2 の x5~x9) と同じ 5 行が含まれます:
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 |
|---|---|---|---|---|---|---|---|---|---|
| 10 | 0 | aaaa | 2015-10-01 00:00:00 | true | 110 | 10 | 2aaaa | 2015-10-01 00:00:00 | true |
| 11 | 1 | aaaa | 2015-10-01 00:00:00 | false | 111 | 11 | 2aaaa | 2015-10-01 00:00:00 | false |
| 12 | 2 | aaaa | 2015-10-01 00:00:00 | true | 112 | 12 | 2aaaa | 2015-10-01 00:00:00 | true |
| 13 | 3 | aaaa | 2015-10-01 00:00:00 | true | 113 | 13 | 2aaaa | 2015-10-01 00:00:00 | true |
| 14 | 4 | aaaa | 2015-10-01 00:00:00 | true | 114 | 14 | 2aaaa | 2015-10-01 00:00:00 | false |