重複行の処理
同じ内容の行をまとめたり、どれが重複しているかを調べたりします。名簿の重複を消す、取り込んだデータに二重登録がないか確かめる、といった使い方をします。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
処理タイプによって、出力の列が変わります。 増える列・消える列は処理タイプの違いにまとめました。
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 | 鈴木 | b | 0 |
| 002 | 鈴木 | c | 0 |
| 003 | 佐藤 | d | 1 |
| 003 | 佐藤 | e | 1 |
- この処理タイプだけは、判定に使わなかった列も残ります。 上の例では
備考が残っています パターン番号という列が増えます。同じ内容の行には同じ番号が付き、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 本に分け、片方を「重複行を削除」、もう片方を「重複した行を抽出」にする
出力 — 片方は重複を消したデータ、もう片方は重複していた行そのもの。後者をデータをエクスポートするにつないで書き出す