見出し画像

実績あれば実績、無ければ予算を同項目で表示

 会社によるかもしれませんが、うちの会社では、年度別のデータ比較で、過去の年度は『○年度実績』、当年度の途中まで実績、途中から見込になっている年を『○年度落着』、来年度以降のデータを『○年度予算』と名付けて、同じ項目(一つのメジャーで示す)というグラフをよく作ります。

 そのようなグラフにつくるためのTableauのマニュアルを作っていたのですが、実績があれば実績、予算があれば予算というのを計算式で表現しようとして、初心者であるわたしはしこたま苦労してしまったので、その苦労を記しておきます。 以下がマニュアル作成に使用したデータです。

対象としたのはこのような単純な予算・実績を持つ販売数量データ

 そして、実現しようしたグラフが以下のものです。1年度分実績データが入っている過去年度は『実績』、最新月まで実績が入りそれ以降は予算ないし修正予算が入った当年度は『落着』、来年度以降は『予算』と、一つのディメンジョンで表現されています。Tableauのサンプルや教材で見かける予実対比は、バレットグラフ等工夫がされているにしても、予算/実績のディメンジョンを持った状態です。
 この予算/実績をマージしたグラフを好んで使うケースが多々あるので、今後のことも踏まえて、あえて手数のかかるこのグラフを題材としました。


予算・実績グラフ

 そもそも、データがどのように入っているかという想定から始めなければなりません。データの縦持ち、横持ちという概念も無い状態では、上記の表の形がそのままデータソースになっている(メジャーが予算/実績に分かれて入力されている)と思いますが、ここはちゃんとDBから降りてくる形式を想定して、メジャーは1つ、ディメンジョンで予実という形式にしました。

メジャーは1つで、予実はディメンジョンとして持つ形式に変更

 で、予実のマージを如何に実現しようか検討したものの、なかなかそのような事をやっている会社が無いのか、ズバリという情報に辿り着きませんでしたが、そこでひねり出したのが次の条件式。

計算フィールド:
if
SUM (
IIF ([予実]='実績' , [製品a販売数量] , 0 )
) > 0
THEN SUM (IIF ([予実]='実績' , [製品a販売数量] , 0 ))
ELSE SUM (IIF ([予実]='予算' , [製品a販売数量] , 0 ))
END
----------------------------------------------------------------------------
SUM(IIF~関数で、特定の条件に合致する集計を行う。
[予実]ディメンジョンが『実績』の条件で集計したときの販売数量が0以上であった場合は、 [予実]ディメンジョンが『実績』の条件で販売数量を集計、それ以外は、[予実]ディメンジョンが『予算』の条件で販売数量を集計する。

 これで、うまくできそうだったので、グラフを書いて検証。上側が何もせずに積み上げたグラフで、予実が合計されているので、数量が過大になっている。上記の式を適用した新しいメジャーを作成し、積み上げ棒グラフとしたのが下側のグラフです。うまくいってそうです。

計算フィールドを入れた結果

 うまくいっていそうですが、詳しく見て行くとおかしなところが分かりました。2022年度4Qに着目すると、積み上げグラフでは232と表示されていますが、この数字は3月予算の80が加算されていません。正しい数値は120+112+80=312となるはずです。

落着きとしての4Qの正しい数値は232ではなく312

 詳細度が四半期となっているので、四半期ごとにしか判定・計算されていないのが原因のようでした。そこで、LOD計算を上の計算フィールドに組み込むことにしました。しかし、実力の無い私は、条件式の中にどのようにLOD計算を組み込むのか、わからず四苦八苦しました。最終的に、ChatGPT先生に、素直に上記条件式を、fixed関数を使用して月単位の計算に固定する方法はありますか?ときたところ、一発で以下の計算式をおしえてくれました。そうか、全体をFIXEDで覆ってしまえばよかったんですねー。気付けば簡単なことでしたが、一人では分かりませんでした。

ChatGPT先生はTableauにも精通

 この条件式を計算フィールドにぶち込んだ結果が以下(上側がLOD計算を入れる前のもの、下側がLOD計算をいれたもの)です。2021年度4Qの数字が312になり、正しい数値を算出出来ました。ということで、予実をマージしたグラフの作例でした。

LOD計算で4Qも正しい数値に

この記事が気に入ったらサポートをしてみませんか?