[Talend]tUniqRowを利用して重複レコードを削除する

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tUniqRow」を利用した重複レコードの削除を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。

tUniqRowについて

「tUniqRow」を利用すると入力レコードに対して指定したキーで重複レコードの削除を行うことができます。

「tUniqRow」コンポーネントのTalend Helpページはこちらです。

tUniqRow

では、具体的に以下で解説していきます。

ジョブの説明

ジョブとしては「tFixedFlowInput」でサンプルレコードを生成し、「tUniqRow」で重複レコードを削除して「tLogRow」で結果を出力しています。また、「tUniqRow」では重複レコードを排除した結果ユニークになったレコードと、排除されたレコードを出力することができるので、両方とも「tLogRow」で出力するようにしてみました。

「tFixedFlowInput」コンポーネントの設定

「tFixedFlowInput」は以下のように設定しました。サンプルレコードとしてYearNameの2カラムを持つ3レコードを用意しています。また、今回のサンプルではYearが同じレコードを2レコード用意しました。

「tUniqRow」コンポーネントの設定

「tUniqRow」ではユニークとして扱うためのキーを設定します。以下のように「キー属性」にチェックを入れることで、該当のカラムをキーカラムとして扱います。また、文字列の場合には「大文字と小文字を区別」にチェックを入れることで大文字と小文字が区別されるようになります。

今回はYearをキーとして扱うようにします。

また、「tUniqRow」コンポーネントは「ユニーク」と「重複」の出力を持っています。「ユニーク」は重複レコードを排除した結果のレコード、「重複」は排除されたレコードを出力します。今回はどちらも後続の「tLogRow」コンポーネントに繋げています。

「tLogRow」コンポーネントの設定

「tLogRow」コンポーネントでは、結果が見やすいように「モード」を「テーブル」に設定しました。

実行結果

設定は以上です。実際にこのジョブを実行すると以下のように出力されます。

[statistics] connecting to socket on port 3492
[statistics] connected
.----+-----.
|tLogRow<br>Unique|
|=---+----=|
|Year|Name |
|=---+----=|
|2018|ZI-O |
|2017|Build|
'----+-----'

.----+----.
|tLogRow<br>Duplicate|
|=---+---=|
|Year|Name|
|=---+---=|
|2018|Geiz|
'----+----'

[statistics] disconnected

Yearをキーとして扱ったので、tLogRow<br>Uniqueには重複レコードを排除したレコードが、tLogRow<br>Duplicateには排除されたレコードが出力されました。

まとめ

以上、「tUniqRow」コンポーネントの紹介でした。

入力データから重複レコードを排除したい場合に便利なコンポーネントだと思います!

それでは。