コンテンツにスキップ

単純な横結合

2 つのデータを横に並べて、列数の多い 1 つのデータにします。顧客の一覧と、同じ並び順の購入金額の一覧を 1 つの表にまとめる、といった使い方をします。

上から順に位置で並べるだけの機能です。 値を突き合わせたいならキー列を指定する結合、行を縦に積み増したいなら単純な縦結合を使ってください。

入出力

ポート内容
左入力データデータ
右入力データデータ
出力データ横に並べたデータ

Spark エンジンでも動きます。

設定項目

左ノードを選択
左入力から結合する列を「結合対象列を選択」で選びます。複数選べます。
右ノードを選択
右入力から結合する列を「結合対象列を選択」で選びます。選び方は左と同じです。

どちらも省略できません。 画面では印が付きませんが、片方でも空のまま実行するとエラーになります。

列の選び方

「列選択」を押すと「選択ルールの作成」が開きます。ルールは何本でも足せて、上から順に適用されます。1 本は「選択方法」(次を選択 / 次を削除)と「一致方式」の組です。

一致方式内容
すべての列その入力の列を全部選ぶ
列名一致名前を 1 つずつ選ぶ
列型一致文字列 / 数値 / 日付 / 日付時間 / 時間 のいずれか
指定文字から始まる列名入力した文字で始まる列
指定文字で終わる列名入力した文字で終わる列
指定文字を含む列名入力した文字を含む列
正規表現一致正規表現に当たる列

「すべての列」を選んだあとに「次を削除」+「列名一致」で 顧客ID を足せば、1 列だけ落とした全列が選べます。

列の並び方

出力の列は左入力の列 → 右入力の列の順に並びます。

それぞれの中では、元のデータの列順になります。選んだ順ではありません。たとえば左入力が 顧客ID / 氏名 / 年齢 で、選ぶときに 年齢 → 顧客ID の順に選んでも、出力は 顧客ID / 年齢 の順です。

行数が違うとき

多い方の行数に合わせ、足りない側は空欄になります。 エラーにはなりません。

たとえば左が 5 行・右が 3 行なら、出力は 5 行になり、右から来た列の 4 行目・5 行目が空欄になります(例 5)。

0 行のデータを結合することもできます。左右とも 0 行なら、列だけがある 0 行のデータが出ます。

同じ名前の列があるとき

左右の選んだ列に同じ名前があると、自動で名前が変わります。

どちらの列か変更前変更後
左入力の列金額left_金額
右入力の列金額right_金額
  • 名前が重なった列だけが変わります。重なっていない列はそのままです
  • 付ける名前は選べません。 left_ / right_ が決まりで付きます。別の名前にしたいときは、結合する前に列名の変更で変えておいてください
  • 変えた結果さらに名前が重なる場合(左入力にもともと left_金額 がある場合など)は、末尾に番号が付きます

エラーと対処

どのエラーも、左右それぞれのデータを 1 つ前のノードで開いて、列名を見比べるところから始めてください。

結合する列を選んでいない

左右どちらかの列を選ばずに実行したとき。

対象の列が選択されていません。

直し方 — 「左ノードを選択」「右ノードを選択」の両方で列を選んでください。すべての列を使うなら「すべての列」を指定します。

選んだ列が見つからない

指定した列名が入力データにないとき。前の処理で列名を変えたり、列を削ったりすると起きます。また、前方一致や型での指定が 1 列にも当たらなかったときも同じエラーになります。

対象の列が存在しません。

直し方 — 入力データの列名を確かめてください。前の処理で名前が変わっているなら、選び直すか、名前に依存しない選び方(すべての列・列型一致)に変えます。

左のデータがつながっていない

左入力にノードがつながっていないとき。

左側のデータが入力されていません。

直し方 — 左入力につなぐノードを確かめてください。入力が 2 つあるので、片方だけつないだ状態になっていないか見てください。

右のデータがつながっていない

右入力にノードがつながっていないとき。

右側のデータが入力されていません。

直し方 — 右入力につなぐノードを確かめてください。

よく使う例

1. 行数が同じ 2 つの表を 1 つにする

お題 — 顧客の一覧と、同じ並び順で作った購入金額の一覧を 1 つの表にする

入力(左)

顧客ID氏名
C001田中
C002鈴木
C003佐藤

入力(右)

購入額
1200
3400
800

設定 — 左「すべての列」/右「すべての列」

出力

顧客ID氏名購入額
C001田中1200
C002鈴木3400
C003佐藤800

2. 必要な列だけを持ってくる

お題 — 右の表からは購入額だけが欲しい(区分や登録日は要らない)

入力(左)

顧客ID氏名
C001田中
C002鈴木

入力(右)

購入額区分登録日
1200A2024-01-05
3400B2024-01-07

設定 — 左「すべての列」/右は「列名一致」で 購入額 だけを選ぶ

出力

顧客ID氏名購入額
C001田中1200
C002鈴木3400

3. ID 以外のすべてを横に付ける

お題 — 右の表の 顧客ID は左にもあるので要らない。それ以外は全部欲しい

入力(左)

顧客ID氏名
C001田中

入力(右)

顧客ID購入額区分
C0011200A

設定 — 左「すべての列」/右で「すべての列」を選び、続けて「次を削除」+「列名一致」で 顧客ID を指定するルールを足す

出力

顧客ID氏名購入額区分
C001田中1200A

顧客ID が片方にしか残っていないので、left_顧客ID のような名前の変更も起きません。

4. 数値の列だけを横に付ける

お題 — 右の表のうち、集計に使う数値の列だけが欲しい

入力(左)

顧客ID
C001

入力(右)

購入額回数区分
12003A

設定 — 左「すべての列」/右で「列型一致」を使い、数値を指定する

出力

顧客ID購入額回数
C00112003

列が増減しても設定を直さずに済みます。

5. 行数が違う表を結合する

お題 — 5 行の実績表に 3 行しかない目標表を並べると、足りない分がどうなるかを見たい

入力(左 5 行)

月実績
1120
2140
390
4160
5130

入力(右 3 行)

目標
100
100
100

設定 — 左右とも「すべての列」

出力

月実績目標
1120100
2140100
390100
4160
5130

6. 同じ名前の列がある表を結合する

お題 — 左右とも 金額 という列を持っていて、両方を残したい

入力(左)

顧客ID金額
C0011200

入力(右)

金額
1000

設定 — 左右とも「すべての列」

出力

顧客IDleft_金額right_金額
C00112001000

どちらがどちらか分かるよう、結合後に列名の変更で 実績金額 予算金額 のような名前にしておくと、後が読みやすくなります。

関連