「ある数値の推移に加えて、昨年対比の推移も同時に表示したい」というのは、Tableauで良くある事です。
「昨年対比の推移のグラフも同時に」というのは、面倒そうに見えますがデータマートなり中間テーブルを作らずとも、少し工夫すれば作成が可能です。
今回はTableauのみで「見たい期間だけの昨対比推移グラフ」を作る方法をご紹介します。
昨年対比の推移を表現する時にぶつかる課題
「昨年対比の推移をグラフにしたい」とした時に、ぶつかる課題としては大きく以下の2点があるかと思います。
課題① 連続型の日付データだと、表計算「前年比」が使用できない
連続型の日付データを用いて、ある指標の推移グラフを作成する時は、表計算「前年比成長率」を使用できません。
以下の様に、日付を「不連続型」として扱えば「前年比成長率」は使用できます。
しかしあくまで「不連続型」として日付データを扱っているので、軸を2019/1/1,2019/1/2,・・・・・・・2020/1/1という形には出来ません。
課題② 表計算を使うと、フィルターで見たい期間を絞り込む事が出来ない
また、Tableauにおける表計算とは「シートで集計された後に計算する」関数です。
ですので「シートで集計する」前にデータを絞り込むフィルターで見たい期間のみにしてしまうとと、「前年比成長率」は表示されません。
「前年比成長率」の表計算をするにも、計算対象となる前年のデータがシート上に存在しないんですね。
“WINDOW_SUM関数”と”True/False”を組み合わせて「見たい期間だけの昨対比推移グラフ」を作る
以上を踏まえると「見たい期間だけの昨対比推移グラフ」を作る為には、以下の2点を満たす必要があります。
- 日付は「連続型」として扱う
- 見たい期間だけを見る時フィルターは使用しない
これらの条件を満たし、「見たい期間だけの昨対比推移グラフ」を作るやり方として私が思い付いたのは以下の通りです。
手順① WINDOW_SUM関数を使い、366個前の値を取得する
まず、丁度1年前の値を取得する為にWINDOW_SUM関数を作成します。
この関数は、
WINDOW_SUM(計算式, 開始, 終了)
の形式で記述し、指定された範囲(開始、終了)にある値の計算値を返します。
そして「開始,終了」に入れる値としては
- 0:現在の位置を返す
- 1:現在の位置から1つ先
- 1:現在の位置から1つ前
となります。ですので、
WINDOW_SUM(SUM(売上), -366, -366)
とすれば、「現在の位置から-366前、つまり去年の同日の売上の値」を返すと指定できます。
WINDOW_SUM関数を使って計算フィールドにより、前年の値が今年の値と上手く同時に表示できました。
あとは、前年比を示す計算フィールドを以下の様に作成します。
今年の値/去年の値
これで無事「昨年対比の推移」を作成できました。
手順② True/Falseと非表示を組み合わせてフィルター代わりにする
次に①で作成した「昨年対比の推移」を任意の期間だけを表示される様にします。
前述の通り、WINDOW_SUMは表計算であるのでフィルターを使うことが出来ません。
ここでは代替案として、以下を行う事で「データは絞り込まないが、見た目上は絞り込んでいる様に見える」という事が実現します。
- 「True/False」で「任意の期間か否か」で区別する
- Falseのデータを非表示にする
まず、「任意の期間かどうか」を判定する計算フィールドを作成します。
ここでは「2020/1/1から2020/12/31」を見たい期間とし「True」と判定、それ以外の期間は「False」と判定されます。
作成した計算フィールドを「属性」として「色」に配置すると、見たい期間と見ない期間に綺麗に区別できます。
次に「False=見ない期間」と判別されたものを「非表示」にします。
すると、見たい期間のみで「昨年対比の推移」を作成することが出来ました。
後は見た目を見やすく調整したら完成です。
まとめ
まとめると「見たい期間だけの昨対比推移グラフ」を作るには、
- WINDOW_SUMで1年前の値を取ってくる
- 任意の期間かどうかをTrue/Falseで判別する
- Falseを非表示にする
の手順を踏むと実現可能です。是非使って見て下さい。