コンテンツにスキップ

単純な縦結合

2 つのデータを縦に積み重ねて、行数の多い 1 つのデータにします。月ごとに分かれた売上ファイルを 1 つにまとめる、支店別のデータを全社分にまとめる、といった使い方をします。同じ形の表を積み上げる串刺しの集計はこれで作ります。

同じ形のデータを増やす機能です。 列を増やしたいなら単純な横結合、キーの値で行を突き合わせたいならキー列を指定する結合を使ってください。

入出力

ポート内容
左入力データデータ
右入力データデータ
出力データ縦に積んだデータ

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

設定項目

結合タイプを選択
列をどう揃えるか。左右の共通列をすべて結合 / 左右の列をすべて結合 / 列を指定して結合 の 3 つで、既定は 左右の共通列をすべて結合 です。違いは次の節で説明します。
対象列を選択必須
列を指定して結合 を選んだときだけ出ます。残す列を選びます。「列選択」を押すと「選択ルールの作成」が開き、すべての列 / 列名一致 / 列型一致 / 指定文字から始まる列名 / 指定文字で終わる列名 / 指定文字を含む列名 / 正規表現一致 から選べます。
結合結果から重複した行を削除する
結合したあとで、残った列の値がすべて同じ行を 1 行にまとめます。既定は off です。

結合タイプの違い

結合タイプ出力に残る列相手にない列
左右の共通列をすべて結合(既定)両方にある列だけ捨てられる
左右の列をすべて結合どちらかにあれば残る空欄で埋まる
列を指定して結合選んだ列(下の注意を参照)
同じデータで 3 つを並べたところ

左入力

会員ID年齢
00110
00230

右入力

会員ID性別
003男性
004女性

左右の共通列をすべて結合(両方にある 会員ID だけが残る)

会員ID
001
002
003
004

左右の列をすべて結合(相手にない列は空欄)

会員ID年齢性別
00110
00230
003男性
004女性

列を指定して結合で 会員ID を選んだ場合

会員ID
001
002
003
004

列の並び方

  • 左右の共通列をすべて結合 — 共通する列を、左入力の列の順に並べます
  • 左右の列をすべて結合 — 左入力の列をその順で並べ、そのあとに右入力にしかない列を続けます
  • 列を指定して結合 — 選んだ列を、左入力の列の順に並べます。右入力にしかない列は後ろに付きます

選んだ順には並びません。並べ直したいときは、結合のあとに列の並べ替えを置いてください。

行の並び方

左入力の行がすべて先、そのあとに右入力の行が続きます。並べ替えはされません。

元のデータのどちらから来た行なのかは、出力からは分かりません。区別が要るなら、結合する前に値を列に挿入でそれぞれに目印の列を足しておいてください。

列の型が左右で違うとき

結合できずエラーになります。 同じ名前の列でも、片方が文字列、もう片方が数値だと止まります。

型は「文字列 / 数値 / 日付 / 日付時間 / 時間」の 5 つで見ます。整数と小数はどちらも数値なので、そのまま結合できます。

CSV を読み込んだときに、数字だけの列が片方は数値、もう片方は文字列になっている(空欄や - が混ざっている)ことがよくあります。結合する前に列の型変更でどちらかに揃えてください。

重複した行を消す

「結合結果から重複した行を削除する」を on にすると、残った列の値がすべて同じ行が 1 行にまとまります。

たとえば左が 001/10 と 002/30、右が 002/30 と 004/10 のとき、off なら 4 行、on なら 002/30 がまとまって 3 行になります。

エラーと対処

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

列の型が左右で違う

左右どちらにもある列の型が、食い違っているとき。

{{mismatch_keys}} 列のデータ型が左右で異なります。どちらかに揃えてください。

直し方 — メッセージに出ている列について、左右それぞれの型を確かめます。列の型変更でどちらかに合わせてください。数値にしたいのに文字列が混じっている場合は、何が数値にできない値なのかを先に確かめます。

片方のデータが 0 行のときにも出ることがあります。 行が 1 つもないと、文字列の列と日付の列を見分けられないためです。前のノードで行が残っているか確かめてください。

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

列を指定して結合 を選んだのに、対象列を選んでいないとき。

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

直し方 — 対象列を選ぶか、結合タイプを 左右の共通列をすべて結合 に変えてください。

選んだ列が見つからない

列名で指定した列が、左右どちらかにないとき。前のノードで列名を変えたり、列を削ったりすると起きます。

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

直し方 — 両方のデータにある列名か確かめてください。片方にしかない列も残したいなら、結合タイプを 左右の列をすべて結合 にします。

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

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

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

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

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

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

よく使う例

1. 月ごとのファイルを 1 つにまとめる

お題 — 同じ形式の 1 月分と 2 月分の売上データを 1 つにする

入力(左・1 月)

日付店舗売上
2024-01-05渋谷120000
2024-01-06新宿98000

入力(右・2 月)

日付店舗売上
2024-02-03渋谷135000

設定 — 結合タイプを選択 左右の共通列をすべて結合

出力

日付店舗売上
2024-01-05渋谷120000
2024-01-06新宿98000
2024-02-03渋谷135000

2. 列の数が違うデータをまとめる

お題 — 今年のデータには「キャンペーン区分」列があるが、去年のデータにはない。両方まとめたい

入力(左・今年)

日付売上キャンペーン区分
2024-01-05120000春割

入力(右・去年)

日付売上
2023-01-05110000

設定 — 結合タイプを選択 左右の列をすべて結合

出力

日付売上キャンペーン区分
2024-01-05120000春割
2023-01-05110000

空欄を「対象外」などで埋めたいときは、結合後に欠損値処理を使います。

3. 重複を取り除いてまとめる

お題 — 2 つの名簿に同じ人が載っている可能性があるので、1 人 1 行にしたい

入力(左)

氏名住所
田中東京
鈴木大阪

入力(右)

氏名住所
鈴木大阪
佐藤名古屋

設定 — 結合タイプを選択 左右の共通列をすべて結合、「結合結果から重複した行を削除する」を on

出力

氏名住所
田中東京
鈴木大阪
佐藤名古屋

4. 必要な列だけを縦に積む

お題 — 2 つのデータから会員 ID だけを集めて、重複のない一覧を作る

入力(左)

会員ID年齢
00110
00230

入力(右)

会員ID性別
002男性
004女性

設定 — 結合タイプを選択 列を指定して結合 で 会員ID を選び、「結合結果から重複した行を削除する」を on

出力

会員ID
001
002
004

5. どちらから来た行か分かるようにする

お題 — 結合後に、元が店舗 A か店舗 B かを残したい

入力(左・店舗 A)

日付売上
2024-01-05120000

入力(右・店舗 B)

日付売上
2024-01-0598000

設定 — 結合する前に、それぞれのデータに値を列に挿入で 出所 列(値は A / B)を足してから、左右の共通列をすべて結合 で結合する

出力

日付売上出所
2024-01-05120000A
2024-01-0598000B

関連