Help us understand the problem. What is going on with this article?

Tableau Prepで重複レコードを削除する方法 3種類+LOD

More than 1 year has passed since last update.

Tableau Prepで重複したレコードを削除するにはどうすればよいですか?
データ準備ツールの中には、これを行うための特定の機能があります。
一見すると、Tableau Prepの最初のバージョンはこの機能を備えていないようです。

しかし、Tableau Prepで重複レコードを削除することはできます。
重複を取り除くことは非常に簡単です。(最後におまけ:Tableau PrepのLOD計算?)

1. Tableau Prepでの重複レコード

次のようなデータセットがあるとします
image.png

従業員ID 3に2つの正確に同じ重複レコードがあることがわかります。すべてが同じです:
ID、名前、日付。
これは本当の重複です。
重複レコードに対して、Tableau Prepで次のことができます:

image.png

集計を追加し、すべてのフィールドを[ グループ化フィールド]セクションに追加するだけです。ユニークな行のみが保持され、重複は目の前で消えます。
重複除外されたデータセットで、Tableau Prepフローを続行できます。(そしてこのアプローチを指摘してくれたTom Fullerに感謝します!)

2. 重複と似ている。厳密には重複ではない例

データセットを少し修正して、Tableau Prepの重複レコードを削除する方法を考えてみましょう。

image.png

この場合、Walvoordは1997年に一度雇用され、その後2014年に再雇用されました(このデータセットは理由を示していません - 彼は中間職を雇ったのか、それとも新しい職に就職しましたか)。
データからは、最新の雇用日がわかるだけです

この重複したデータを削除するフローは次のようになります。

image.png

これは以前のソリューションと非常によく似ていますが、ここではEmployee IDとNameのみでグループ化し、HiredフィールドはMAXとして集計しています。つまり、ユニークな従業員ごとに、最高雇用日を取得します。
不要な重複レコードを削除し、この出力で終了します。

image.png

3. 重複したレコード 発展

image.png

レコードの最新を取得する方法については既に説明しましたが、 重複するデータを重複除外する場合はうまくいきます。
さて、以前の入力データセットを拡張して、最新の雇用日だけでなくレコードに追加のデータを保持する場合は、単純にグループ化して集計することはできません。

Walvoordが2つの雇用日を持つ理由がわかりました。
これは2つの異なるPositionを表しています。したがって、最新の雇用日で記録を保持する必要がありますが、そのレコードの他の値もそのまま維持する必要があります。
私たちは2つのレコードを取得するため、前のGROUPへのアプローチをポジPositionで使用することはできません。そして、Position別に集計することはできません(MINまたはMAXでなければなりません
この特定のケースでは1つ機能するかもしれませんが、Positionの他の組み合わせは選択した結果が異なります) 。

代わりに、データセットが拡張されたときと同じように、フローを拡張します。
最初のステップは、ケース#2と同じです。従業員IDと名前でグループ化し、最大雇用日を探します。上記の出力が我々の結果です。しかし、最新の日付でレコード全体を識別するために、その情報を取得して、それを使用して完全なデータセットに一致させる必要があります。それは次のようになります:
image.png

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のフローをマッチさせました。見てください:
image.png

どうでしょう。Tableau Prepの重複行を削除したり、Tableau Prepデータフローを使用してLODを代替して書くことGできるでしょう。

https://vizpainter.com/how-to-remove-duplicate-records-in-tableau-prep/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away