結合の代わりにユニオンと集計を使う
今回はPreppindata 2023: Week 43 - Best Attendance Awards
の課題をもとに「結合の代わりにユニオンと集計を使う 」データ加工のアプローチ方法
をご紹介します。
また、今回の記事は、「第8回 Tableau Prepユーザー会」の35:00~あたりから、簡単にご説明もしているので、記事での理解は苦手な方がいらっしゃれば是非ご覧ください。
※使用ver: Tableau Prep Ver.2023.3
問題のダウンロードはこちら
出題者の回答はこちら
要件
- 各生徒のフルネームフィールドを作成します
- 年間の出席率を計算(小数点以下第2位を四捨五入)
- 全体的に出席率が最も高い生徒を検索し、CSV として出力します。
- 年グループデータに参加する
- 各学年グループの出席率が最も高い学生の上位 5% を見つけて、これを CSV として出力します (ヒント: ここではパーセンタイル ランクが役立つ場合があります)。
入力の確認
ダウンロードしたフォルダを見てみると、以下のように同じフォルダにタームごとの欠席・出席日数データと学年のデータが存在しています。
タームごとの欠席・出席日数データは3つあるため、複数ファイルに渡って同じ生徒名が存在し、
学年データは1ファイル(1生徒1レコードデータ)が存在します。
出力の確認
今回はこの4つのファイルデータをもとに2つの出力を作成します。
つまりわかりやすく言うと
4ファイルに存在する同じ生徒を以下のように各生徒1レコードにしてから、出席率を計算したい
手法1.ユニオン&集計&結合
今回は1つのフォルダに種類の違うデータファイルが存在するので、ワイルドカードユニオンのフィルタで* Year *一致しませんとすることにより学年データ以外をフィルタしワイルドカードユニオンします。
※ここではワイルドカードの記法については詳しく触れませんので、気になった方は以下の記事がわかりやすかったのでご覧ください。
手法2.結合の代わりにユニオンと集計を使う
手順2:集計で1レコードにしながらNullの処理
あとは方法1の手順4の方法と同じく、出席率の計算を行い完成です。
ユニオン&集計が効くケース
-
1レコードに集計して結合するものならユニオンして集計するとステップが減ってスッキリ
-
ワイルドカードユニオンする際にもファイル名わざわざ見て命名規則見つけてフィルタかける処理が不要
-
どちらかのファイルの生徒名に欠損がある場合でも処理できるのでケースよっては便利だったりします。(これは結合でも実現可能)
おわりに
今回はPreppindata の課題を基に、Tableau Prepで結合の代わりにユニオンと集計処理する例をご紹介しました。
これがベストプラクティスというわけではありませんが、データの前処理のアプローチの手法の1つとして持っておくと何かと便利です。
初めて知ったという方は1つのPrepスキルの引き出しとしてお持ち帰りいただけると幸いです。
最後までご覧いただきありがとうございました。