コンテンツにスキップ

重複行の処理

同じ内容の行をまとめたり、どれが重複しているかを調べたりします。名簿の重複を消す、取り込んだデータに二重登録がないか確かめる、といった使い方をします。

入出力

ポート内容
入力データデータ
出力データデータ

処理タイプによって、出力の列が変わります。 増える列・消える列は処理タイプの違いにまとめました。

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

設定項目

「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、重複チェックする列を限定する / 列を選択 が出ます。

処理タイプを選択
何をするか。既定は重複行を削除です。3 つの違いは次の節で説明します。
重複チェックする列を限定する
off(既定)のときはすべての列を見て判定します。on にすると列を選べます。
列を選択
「重複チェックする列を限定する」が on のときに出ます。複数選べます。

処理タイプの違い

次のデータを例にします。

会員ID氏名備考
001田中a
002鈴木b
002鈴木c
003佐藤d
003佐藤e

判定に使う列を 会員ID と 氏名 の 2 つに限定した場合の結果を並べます(備考 は判定に使いません)。

処理タイプ出てくる行出てくる列
重複行を削除重複をまとめた全パターン判定に使った列だけ
重複行ごとに行数カウント2 行以上あるパターンだけ判定に使った列だけ + 重複行数
重複した行を抽出2 行以上あるパターンの元の行全部の列 + パターン番号

重複行を削除

同じ内容の行を 1 行にまとめます。

会員ID氏名
001田中
002鈴木
003佐藤
  • 最初に出てきた行が残ります。 どの行を残すかは選べません
  • 行の順番は入力のままです
  • 判定に使わなかった 備考 は出力から消えます

重複行ごとに行数カウント

2 行以上あるパターンだけを抜き出し、何行あったかを数えます。

会員ID氏名重複行数
002鈴木2
003佐藤2
  • 1 行しかないもの(001)は出てきません
  • 行数の多い順に並びます
  • 重複行数 という列が増えます
  • 判定に使わなかった列は出力から消えます

取り込んだデータに二重登録がないかを調べるのに使います。

重複した行を抽出

重複している行を、まとめずにそのまま出します。

会員ID氏名備考パターン番号
002鈴木b0
002鈴木c0
003佐藤d1
003佐藤e1
  • この処理タイプだけは、判定に使わなかった列も残ります。 上の例では 備考 が残っています
  • パターン番号 という列が増えます。同じ内容の行には同じ番号が付き、0 から順に振られます
  • 行は番号の順に並びます。番号は判定に使った列の値の昇順で割り当てられるので、入力の行順とは変わります
  • もとのデータに パターン番号 という列があるときは、パターン番号_1 のように数字を足した名前になります

実際にどの行が重なっているのかを目で見たいときに使います。

判定の決まり

  • 判定に使う列の値がすべて同じなら重複です(限定しなければ全部の列)
  • 空欄(欠損値)どうしも同じとして扱われます
  • 文字は 1 字ずつ見比べます。ABC と abc、見た目の近い別の字は、別の行になります
  • 数値は値で比べます。1 と 1.0 は同じです

エラーと対処

列を選んでいない

「重複チェックする列を限定する」を on にしたまま、列を選んでいないときに出ます。

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

直し方 — 列を選ぶか、「重複チェックする列を限定する」を off にしてください。

選んだ列が見つからない

限定した列が入力にないとき、または指定に当てはまる列が 1 つもないときに出ます。

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

直し方 — 列を選び直すか、「重複チェックする列を限定する」を off にしてください。処理タイプを切り替えても列の指定は引き継がれるので、使わなくなった指定が残っていないか確かめてください。

よく使う例

1. 完全に同じ行を 1 行にする

お題 — 同じファイルを 2 回読み込んでしまった

入力 — 同じ行がそっくり 2 回入っているデータ

設定 — 処理タイプ「重複行を削除」、列の限定は off

出力 — 全列が同じ行が 1 行にまとまる。列は入力のまま全部残る

2. 会員 ID の一覧を作る

お題 — 明細から、出てきた会員 ID の一覧だけがほしい

入力 — 1 行 1 取引の明細。同じ 会員ID が何度も出てくる

設定 — 処理タイプ「重複行を削除」、列の限定を on にして 会員ID だけを選ぶ

出力 — 会員ID 1 列の、重複のない一覧

3. 二重登録を調べる

お題 — 取り込んだ名簿に同じ人が複数いないか確かめたい

入力 — 氏名 と 生年月日 を持つ名簿

設定 — 処理タイプ「重複行ごとに行数カウント」、列の限定を on にして 氏名 と 生年月日

出力 — 重複している組と、その件数。多い順に並ぶので上から確認できる

4. 重複している行の中身を見比べる

お題 — 同じ会員 ID の行が 2 つあるが、住所が違う。どちらが新しいのか中身を見たい

入力 — 会員ID・住所・更新日 を持つ名簿

設定 — 処理タイプ「重複した行を抽出」、列の限定を on にして 会員ID

出力 — 重複している行が、住所 や 更新日 も付いたまま並ぶ。パターン番号 が同じ行どうしを見比べる

5. 重複を消す前に件数を確かめる

お題 — いきなり消すのが不安なので、どれくらい消えるかを先に見たい

入力 — 重複のありそうな名簿

設定 — まず「重複行ごとに行数カウント」で実行し、件数を確かめてから、処理タイプを「重複行を削除」に変える

出力 — 1 回目は重複している組と件数、2 回目は重複を消した名簿

6. 重複している行だけを別に取り置く

お題 — 重複は消すが、消した分を別のファイルに書き出して残したい

入力 — 重複のある明細

設定 — 同じ入力から 2 本に分け、片方を「重複行を削除」、もう片方を「重複した行を抽出」にする

出力 — 片方は重複を消したデータ、もう片方は重複していた行そのもの。後者をデータをエクスポートするにつないで書き出す

関連