今回はPreppindata 2023: Week 45 - Fill Down
の課題をもとにTableau Prep Ver.2023.3_新機能「フィルダウン計算・下を埋める 」
を使用したデータ加工のアプローチ方法をご紹介します。
個人的にExcelでよくある行が結合セルになっているのもこれで一撃解決できる、便利な機能だと思います。
問題のダウンロードはこちら
要件
- プロジェクトフィールドでプロジェクト名を金融取引から分離します。
・金融取引の名前には請求書または経費のいずれかが含まれます - Null がある場合はフィールドに入力します
・ヒント: Prep を使用している場合は、このフローの早い段階で変更を加える必要がある場合があります。
3.コストまたは請求金額が含まれていないプロジェクト名の行を削除します。
4.プロジェクトごとの総費用と請求金額
5.プロジェクトごとの利益を計算します (請求金額から経費を差し引いたもの)
入力の確認
ダウンロードしたフォルダを見てみると、Costカラムに値が入っているレコードはinvoicedAmountがNull、反対に、invoicedAmountカラムに値が入っているレコードはCostカラムの値がNullと互い違いになっています。
出力の確認
ProJectカラム内のExpence,Invoiceが含まれる値は削除されていて、各ProJect名にまとめられています。
公式ヘルプページをもとにわかりやすく言うと
Expence,Invoiceの値を本来ヘッダーのような役割である、Scatter-my-plots, Data-versity ,Data Prep Schoolのの値として扱い1レコードに各ProJectごとに1レコードにまとめたい。というのが今回の課題です。
つまり添付画像の空欄の部分を今回はExpence,Invoiceバージョンで同じように処理する感じですね。
カラムから不要な値をを削除しフィルダウン計算で欠損値を埋める
1.デフォルトでは削除されているSource Row Numberを含める
この後のフィルダウン計算で使用します。
これによりExcelファイルの行No.が取得できる
2.Projectフィールドの値にExpenseもしくはInvoiceが含まれるものをNullに変える処理
IF
REGEXP_MATCH([Project],"Expense|Invoice") THEN NULL
ELSE
[Project]
END
(REGEXP_MATCH、正規表現関数は計算式スッキリするのでオススメですよ✨)
3.LAST_VALUE関数を使用したフィルダウン計算
{ ORDERBY [Source Row Number] asc : LAST_VALUE([Project],TRUE)}
計算式の意味:
- ORDERBY [Source Row Number] asc → Source Row Number昇順に並び替える
- LAST_VALUE([Project],TRUE) → Null値を上の行の値に置き換えます、今回の例でいうと、[Project] フィールドの NULL 値を上記の行に基づく値に置き換えた結果を返します。
ビジュアル計算エディター使用して簡単に実装
プロファイル カードまたは [結果] ペインで、[その他のオプション] メニューをクリックし、[計算フィールドの作成]、[下を埋める] の順に選択します。
[グループ化] セクションでは、計算を実行するときにデータを分割するフィールドを選択できます。データを分割したくない場合は、デフォルト値の [フルテーブル] を選択。
結果もわかりやすく確認できるので楽ですよね~~✨
これでフィルダウン計算の説明はおしまいです!!
集計して1レコードにして、利益の計算
利益の計算後は出力のソート順を合わせるために以下の計算加えてます。
「第8回 Tableau Prepユーザー会」で1:04:00~Komatuさんが紹介していた手法です。
丁寧なデータ加工に脱帽です。
{ ORDERBY [Invoiced Amount] desc : LOOKUP([Invoiced Amount],0)}
おわりに
今回はPreppindata の課題を基に、Tableau Prep Ver.2023.3_新機能フィルダウン計算処理をご紹介しました。
Excelでよくある行が結合セルになっているのもこれで一撃ですね。
本当に痒い所に手が届く便利な機能が多くて感動してます。
是非使ってみてください。
最後までご覧いただきありがとうございました。