- はじめに
- 覚えてほしいこと
- やりたいこと
- Duplicate Row FIilterの使い方1 ~重複削除~
- Duplicate Row Filterの使い方2 ~重複チェック~
- ちょっと一言
- おわりに
- 参考リンク
はじめに
今回も頻出Node、Duplicated Row FIilterを紹介していきます。使える場面多めだと思います。Excelでも重複チェック機能や重複削除機能はありますよね。
今回のテーマ ~Duplicate Row FIilter~
Row Filterの部類としては、Splitterがないので少し異色ですが、特定の行を抜き出すシリーズに入れてます。nominal value Row Splitter等を組み合わせれば、Splitterにすることも可能です。
Workflowは下記からダウンロードできます。
覚えてほしいこと
重複削除はRemoveモード、重複チェックはKeepモード
数値列を基準に残す行を決定したい場合はDuplicate Row Filter
やりたいこと
やりたいこと1- 重複削除
Excelの重複削除機能と同じことを行います。今回は例として、社員表の部署と部署IDをキーにして、重複がないように削除していきます。Excelのデフォルト設定に従って、最初に出てきた組み合わせを残し、あとから出てきたものを削除することにします。
やりたいこと2- 重複チェック
今回は削除するのではなく、重複チェックのみを行い、一回しか出てこなかったもの、重複のあるものを分類します。
Duplicate Row FIilterの使い方1 ~重複削除~
重複を削除するときに使います。Joiner前でよく使いますね。検証作業にもよく使います。社員表の部署と部署IDをキーにして重複を削除していきましょう。
Workflow
Confirm - Before After
Excelの重複削除を再現してみます。
Configure
Excelと同様の重複削除を行いたい場合はStep2以降はデフォルト設定で問題ありません。詳細を知るとExcelではできないこともできるので、解説します。
Step1 - Options 重複キーを指定
最初はGroupByでもおなじみ、重複を検索する組み合わせを指定します。エクセルの重複削除と同じ作業ですね。
Step2 - Duplicate rows 重複削除 or 重複チェック
重複削除か、重複チェックかを指定します。今回は重複削除なので、
Remove duplicate rows
を選択しましょう。
Step3 - Row selection 残す行のオプション設定
重複が検知された場合、残す行をどれにするかを選択できます。Excelでは"First"「最初に出てきた行を残す」という設定しかできないのではないでしょうか。(できるのであれば勉強不足です、すみません)
このNodeでは残す行の設定をFirst・Last・Minimum of・Maximum of の4種類から選べます。
重複のあった場合、、
First:一番最初に出てきた行を残す
Last:一番最後に出てきた行を残す
Minimum of:指定された列の値で、最小値を持つ行を残す
Maximum of:指定された列の値で、最大値を持つ行を残す
Step4 - Additional options 残す行のオプション設定
これはあまり気にする必要のない設定です。
In-memory computation:
RAM(作業用のメインメモリ)を使用して計算スピードを上げます。
Retain row order:
チェックを入れると、Outputで出てくる行の順序はInputテーブルで出てきた順序に沿ってソートされて出てきます。
Duplicate Row Filterの使い方2 ~重複チェック~
Duplicated Row Filterの本領発揮はこの機能です。Excelでも重複している行を検出して色付けすることはできますが、どの行と重複しているのかを特定するのは大変なのではないでしょうか。
この重複検知作業を、このNodeはいとも簡単にやってのけます。
Workflow
Workflowは先ほどと同じです。
Confirm - Before After
重複チェック機能を使うと、重複チェックを示すduplicate-type-classifierと重複行を示すduplicate-row-identifierの2つのコラムを追加することができます。
Configure
Step1 - Options 重複キーを指定
ここは重複削除と同じです。重複を検索する組み合わせを指定します。
Step2 - Duplicate rows 重複削除 or 重複チェック
重複削除か、重複チェックかを指定します。今回は重複チェックなので、
Keep duplicate rows
を選択しましょう。
オプションが2つあるので見ていきます。
duplicate-type-classifier
チェックを入れると、下記の3種類に各行を分類してくれます。
unique:テーブル内に1つしかない行
chosen:重複削除にすると残る行
duplicate:重複削除で削除される行
duplicate-row-identifier
どの行と重複しているかを示してくれます。
の行にのみ値があることが分かります。
重複削除で削除される行(duplicate-type-classifierがduplicate)にのみ値があり、残る予定(duplicate-type-classifierがchosen)の Row IDが記載されることになります。
Step3 - Row selection 残す行のオプション設定
重複削除と同じです。Chosenとされる行を選ぶ基準を選択できます。
Step4 - Additional options 残す行のオプション設定
これも重複削除と同じです。
ちょっと一言
GroupByでの重複削除
初級編をきちんと理解している方であればお気づきかもしれません。重複削除については、GroupByでも同じことができます。私は重複削除を行う場合はGroupByを使ってしまうことが多いです。重複削除と同時に、使わないコラムを削除することができるからです。
今回の重複削除をGroupByで行うとこんな感じの設定になると思います。
GroupByとDuplicate Row Filterの違い
Duplicate Row Filterでは行ごとに扱いますが、GroupByでは列ごとに扱います。Duplicate Row FilterでしかできないのはMinimum ofもしくはMaximum ofの数値列を基準に残す行を決定したい場合です。
他の数値コラムの最小の値を持っている行を抜き出したい!というとき、GroupByでは各コラムごとの相関を持っていないので、そのようなことはSorterを組み合わせないとできません。しかし、Duplicate Row Filterは、行ごとに処理をするので、これが可能です。
Row selection "Minimum of"の例 - 重複削除
Row Selectionで、Minimum ofなど、数値列を基準に列を残せるといいました。これの例を重複削除モードで見ていきましょう。
Inputで入力されたExcel Readerのテーブルと、「First」で重複削除したOutput、「Minimum of 入社日」で重複削除したOutputを並べてみました。
部署が営業の行に注目してみてください。
Firstでは、最初に検知された2行目の「社員番号A002」の行が残っていますが、
Minimum of 入社日では、入社日の一番早い、4行目の「社員番号A004」が残っています。
Additional options - Retain row orderの例
続いて、Retain row orderの例を見ていきましょう。
Row SelectionをMinimum of 入社日の状態にして、Retain row orderのチェックを入れた場合と、外した場合で比べてみます。
先ほど同様部署が営業の行に注目してみましょう。Outputの全体の値は変わっていないですが、Outputで表示されている順番が、チェックを外すと、3行目から2行目に移りましたね。
Retain row Orderは、元々のInputテーブルの順番通りに並べ替える設定でした。なので、チェックを入れると元あったInputテーブルの順番に並ぶのは自然でしょう。
チェックを外すと、順番は重複検査行の出てきた順番になります。重複検査行は、営業が2行目ですね。なのでRetain row orderを外すと、Outputも2行目に出てきます。
おわりに
気軽に重複チェックができるようになると、いろんな場面で活躍できるのではないでしょうか。特にデータ量が多いデータに対して、重複削除をExcelでやると固まっちゃいますからね。
もうここまでくればKNIMEをほとんど使いこなせているのではないでしょうか!ぜひ自動化ツールだけではなく、日々の1回限りの検証作業などにも使っていってください!
ではまた!
参考リンク
-
tymsk3891さんのBlog:
- KNIME公式Node Pit(英語):
- KNIME Example Workflow(英語):