2024.10.03

Tableau Prep 「日付フィールドの値=最新月」という条件でフィルターする方法

時系列データをクレンジングする際、日付でデータをフィルターする必要がある場面は多くあります。
日ごろからSQLを触る機会のある方や、BIツールになじみのある方であればTableau Prepでもそれと近い感覚で日付のフィルター操作を行うことができると思いますが、
初めてBIツールを扱う方にとってはとっつきにくく感じるかもしれません。
今回は日付の操作の中でも利用シーンが多い掲題のようなフィルター方法をご紹介します。
応用すると最新年、最新週などといった条件も実現できます。ご参考になれば幸いです。

なお、本記事ではそのまま真似すればすぐ出来ることを第一として記載します。
登場する関数の詳細等については公式ドキュメントをご参照ください。
また、以降の詳細な手順はTableauインストール時に同梱されているSuperstore.tflのフローを使用して説明します。
ここでは「C:Program Files\Tableau Prep Builder 2024.2\help\Samples\ja JP」フォルダ内のSuperstore.tflを使用します。
データとして使うのは下図赤枠のORDER_USA_2025.csv(このインプットとしたステップが「注文(USA)」)です。
こちらの日付型「オーダー日」フィールドの値でフィルター操作を行っていきます。

1.データを最新月のみにフィルターする

方法は2つあります。
①FIXEDを使って最新日付をデータとして持つ計算フィールドを作成し、計算フィールド=日付フィールドの条件でフィルターする
②集計ステップを使って最新日付のみを値として持つ1列×1行のデータを作成し、結合ステップで元ステップと内部結合する

※月で丸める場合はDATETRUNCを使用すること
まず1つ目から詳しい手順をご紹介します。

1-① FIXEDを使う方法

インプットステップ「注文(USA)」から新しいクリーニングステップを作ります。

作成したクリーニングステップを開き、上部の「…」をクリックして「計算フィールドの作成…」を選択します。

「計算フィールドの追加」ポップアップが表示されるので下図のように定義し、「OK」をクリックします。

フィールド名…最新日付
計算式…{ FIXED : MAX([オーダー日])}}
 ※フィールド名は任意の名前で構いません。別の名前を付けた場合、以降フィールド名を置き換えてご参考ください。

「最新日付」フィールドが作成されました。
このフィールドの値はすべて全データ中で最も最新の「2018/12/29」です。

次に、このフィールドを使ってデータをフィルターします。
「値のフィルター」をクリックします。

「フィルターの追加」ポップアップが表示されるので下図のように定義し、「OK」をクリックします。

DATETTRUNC(‘month’,[オーダー日])=DATETRUNC(‘month’,[最新日付])

※DATETRUNC は第一引数に指定した日付単位で第二引数に指定した日付フィールドの値を丸める処理を行う関数です。
以下のように’month’を指定した場合は日付を年月単位で丸めるため、2015年5月2日なら2015年5月1日、2018年12月29日なら2018年12月1日というように、その年月の月初の日付が結果として返ってきます。
つまりこの式では「オーダー日」の年月が「最新日付」の年月である2018年12月のデータのみを保持する という条件のフィルターをかけています。

フィルターが適用され、行数が減ったことが確認できます。

1-② 集計ステップを使う方法

インプットステップ「注文(USA)」から新しい集計ステップを作ります。

下図のように「オーダー日」を「集計フィールド」の上へドラッグアンドドロップします。

カード上部の「CNT」をクリックし、「最大値」をクリックします。

全データ中のMAX(=最新)のオーダー日を取得する集計フィールドができました。

集計ステップからクリーニングステップを作成します。

「計算フィールドの追加」ポップアップが表示されるので下図のように定義し、「OK」をクリックします。

フィールド名…最新年月
計算式…DATETRUNC(‘month’,[オーダー日])
 ※フィールド名は任意の名前で構いません。別の名前を付けた場合、以降フィールド名を置き換えてご参考ください。
 ※DATETRUNC関数については1-①で記載したためここでの説明は省略します。

「オーダー日」は不要なので削除します。
「オーダー日」カード右上の「…」をクリックし、「削除」を選択します。

「最新年月」のみが残っている状態になりました。

続いて、インプットステップ「注文(USA)」から新しいクリーニングステップを作ります。

「計算フィールドの作成…」を選択します

「計算フィールドの追加」ポップアップが表示されるので下図のように定義し、「OK」をクリックします。

フィールド名…オーダー年月
計算式…DATETRUNC(‘month’,[オーダー日])
 ※フィールド名は任意の名前で構いません。別の名前を付けた場合、以降フィールド名を置き換えてご参考ください。

クリーニングステップから結合ステップを作成します。

最初に作成したクリーニングステップ(下図でいう「クリーニング4」)を直前に作成した結合ステップに繋げます。
 ※クリーニング4を結合ステップまでドラッグすると結合ステップ左側に「追加」と表示されるので、その真上でドロップしてください。

結合ステップを開き、以下のように設定します。

適用した結合句…オーダー年月=最新年月
結合タイプ…内部

結合した結果、行数が減ったことが確認できます。

RECRUIT

エンジニアが主役となり、未来を明るく照らしていく100年企業へ。

採用情報へ