Tableau:見たい期間のみの昨年対比推移グラフを作る方法


「ある数値の推移に加えて、昨年対比の推移も同時に表示したい」というのは、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を非表示にする

の手順を踏むと実現可能です。是非使って見て下さい。