Tableauを極めるやってみた~Day4~
こんばんは!
HUNTER×HUNTERの軍儀がついに商品化されるんですって!
通常版は4,840円、ハイエンド版が48,400円 ※税込
というわけでTableauを極めるDay4、やっていきたいと思います!
今回のお題はこちら!
MTDと?YTD?
私のような情弱にはひとつも馴染のない言葉です!
とりあえず動画を見ないでやってみましょう!
・・・・・・😭
教えて!Sugimuraさん!
STEP1
パラメーター、レポート日の作成
日付型でパラメーターを作成します。
日付のパラメーターを作成する際は、許容値を「範囲」で作成しがちでしたが、「すべて」にしておけば、カレンダーで日付の選択ができるのですね。
STEP2
MTD売上を作成する
※ MTDとは「month-to-date」の略で、その月の初日から同月のその時点(今回はレポート月の初めからレポート日)までを表します
計算式はこちら
ZN ( IF [オーダー日] <= [レポート日]
AND DATEDIFF("month",[オーダー日],[レポート日])=0
THEN [売上] END )
オーダー日がレポート日より前で、オーダー日の月とレポート日の月の差が0であれば、MTDの計算が返される。
検算してみる。
レポート日を「2020/10/07」に設定したので、
「2020/10/01~2020/10/07」の売上が出ればOKですね。
完璧!
STEP3
MTD売上LYを作成する
去年の値の算出
IF DATEADD("year",1,[オーダー日])<=[レポート日]
AND DATEDIFF("month",DATEADD("year",1,[オーダー日]),[レポート日])=0
THEN [売上]
END
オーダー日をDATEADD関数で1年加算・・・?
去年の売上を出したいのに・・・?
この計算で去年の数値が取れるロジックが理解できない😭
切り分けて考えてみる。
① DATEADD("year",1,[オーダー日])
オーダー日が2020/1/1 だった場合、2021/1/1が返される。
② DATEADD("year",1,[オーダー日])<=[レポート日]
レポート日を2021/12/15にした場合、オーダー日が2020/12/15以前が真、それ以外が偽
③DATEDIFF("month",DATEADD("year",1,[オーダー日]),[レポート日])=0
レポート日は変わらず2021/12/15の場合、2020/12は真、それ以外は偽
④DATEADD("year",1,[オーダー日])<=[レポート日]
AND
DATEDIFF("month",DATEADD("year",1,[オーダー日]),[レポート日])=0
組み合わせてみる
レポート日を2021/12/15にした場合、
オーダー日が2020/12/15以前が真、それ以外は偽
と
オーダー日が2020/12は真、それ以外は偽
なるほど・・・!
取り出したい期間がばっちり取れてますね。
ここまで分解してやっと理解できました・・・!
STEP4
YTD売上の作成
※ YTDとは「year-to-date」の略で、「年度の初日から今日まで (今回はレポート日まで)」を表します
こちらは②の月が年になっただけでシンプルです。
ZN( IF [オーダー日] <= [レポート日]
AND DATEDIFF("year",[オーダー日],[レポート日])=0
THEN [売上] END )
オーダー日がレポート日より前で、オーダー日の年とレポート日の年の差が0であれば、YTDの計算が返される
STEP5
YTD売上LYの作成
はい、先ほど躓いたやつきました。
MTDの時同様にDATEADDで1年加算していきます。
ZN( IF DATEADD("year",1,[オーダー日]) <= [レポート日]
AND DATEDIFF("year",DATEADD("year",1,[オーダー日]),[レポート日])=0
THEN [売上] END )
あえてデータを1年前倒してシフトさせることによって、昨年のデータを強制的に1年プラスしてレポート日と比較します。
そうすると昨年の集計結果が今年のパラメーターで返ってくるので、今年と比較することができます。
STEP3では全く仰られている意味がわからなかったことが、紙一重で理解できるようになりました!分解しておいてよかった・・。
そんなこんなで
無事完成しました!
業務のいろんな場面で使えそうな技ですね。
また一つ大人になりました!
引き続きやっていきます!