Tableau Prepで重複したレコードを削除するにはどうすればよいですか?
データ準備ツールの中には、これを行うための特定の機能があります。
一見すると、Tableau Prepの最初のバージョンはこの機能を備えていないようです。
しかし、Tableau Prepで重複レコードを削除することはできます。
重複を取り除くことは非常に簡単です。(最後におまけ:Tableau PrepのLOD計算?)
1. Tableau Prepでの重複レコード
従業員ID 3に2つの正確に同じ重複レコードがあることがわかります。すべてが同じです:
ID、名前、日付。
これは本当の重複です。
重複レコードに対して、Tableau Prepで次のことができます:
集計を追加し、すべてのフィールドを[ グループ化フィールド]セクションに追加するだけです。ユニークな行のみが保持され、重複は目の前で消えます。
重複除外されたデータセットで、Tableau Prepフローを続行できます。(そしてこのアプローチを指摘してくれたTom Fullerに感謝します!)
2. 重複と似ている。厳密には重複ではない例
データセットを少し修正して、Tableau Prepの重複レコードを削除する方法を考えてみましょう。
この場合、Walvoordは1997年に一度雇用され、その後2014年に再雇用されました(このデータセットは理由を示していません - 彼は中間職を雇ったのか、それとも新しい職に就職しましたか)。
データからは、最新の雇用日がわかるだけです
この重複したデータを削除するフローは次のようになります。
これは以前のソリューションと非常によく似ていますが、ここではEmployee IDとNameのみでグループ化し、HiredフィールドはMAXとして集計しています。つまり、ユニークな従業員ごとに、最高雇用日を取得します。
不要な重複レコードを削除し、この出力で終了します。
3. 重複したレコード 発展
レコードの最新を取得する方法については既に説明しましたが、 重複するデータを重複除外する場合はうまくいきます。
さて、以前の入力データセットを拡張して、最新の雇用日だけでなくレコードに追加のデータを保持する場合は、単純にグループ化して集計することはできません。
Walvoordが2つの雇用日を持つ理由がわかりました。
これは2つの異なるPositionを表しています。したがって、最新の雇用日で記録を保持する必要がありますが、そのレコードの他の値もそのまま維持する必要があります。
私たちは2つのレコードを取得するため、前のGROUPへのアプローチをポジPositionで使用することはできません。そして、Position別に集計することはできません(MINまたはMAXでなければなりません
この特定のケースでは1つ機能するかもしれませんが、Positionの他の組み合わせは選択した結果が異なります) 。
代わりに、データセットが拡張されたときと同じように、フローを拡張します。
最初のステップは、ケース#2と同じです。従業員IDと名前でグループ化し、最大雇用日を探します。上記の出力が我々の結果です。しかし、最新の日付でレコード全体を識別するために、その情報を取得して、それを使用して完全なデータセットに一致させる必要があります。それは次のようになります:
Max Dateステップは、ケース#2の重複排除ステップの名前の変更です。我々はそれをフローの前のステップに加えました! 単にドラッグアンドドロップするだけです!
上記のように、結合は、従業員IDと、採用された日付(集計の最新の(MAX)日付に一致する元のデータセットのすべての日付)で行われます。そして、あなたが除外したい従業員3の以前の日付の赤い色も見ることができます。
おまけ:Tableau PrepでのLOD計算
何だと思う?Case#3の解は、Tableau PrepのLOD計算です!あなたが修正されたLODを書くことができるかどうか疑問に思っていたら - あなたはできます!これは単に見た目の話です
Tableau Desktopで最新のレコードを見つけるための計算をしているとします。あなたは書くだろう:
{FIXED [従業員ID]:MAX([入社日])
従業員一人あたりの最新の日付が表示されます。レコードの日付と一致するように計算を拡張し、最新であるかどうかを判断するブール値を取得することができます。
[雇用日] = {固定[従業員ID]:MAX([雇用日])
雇用日がLOD結果と一致した場合、その従業員の最新のレコードがあります。フィルタリングして真の値だけを保持し、データセットを削除しました。
"ちょっと待った!"と思うかもしれない。
"Tableau PrepはLOD構文をサポートしていません(少なくともバージョン1では)。
私たちは計算のロジックとTableau Prepのフローをマッチさせました。見てください:
どうでしょう。Tableau Prepの重複行を削除したり、Tableau Prepデータフローを使用してLODを代替して書くことGできるでしょう。