![見出し画像](https://assets.st-note.com/production/uploads/images/150881006/rectangle_large_type_2_e075b5a732fafd1f27740f212077d6bf.png?width=1200)
【Tableau初級編】前年値との売上比較ができるVizを作ろう(後編)
はじめに
こんにちは。影山です。
業務で売上などのVizを作る際に前年値との比較をしたいという要件があるかと思います。
今回はその要件を実現するTableauのViz作成の後編です。
前編はこちら。
要件は次の通りです。
当月(当日)の売上(棒グラフ)を表示する
スライダで表示期間を変更する
表示期間は日/月/年で集計単位を変えて表示する
前年当日(当月)の売り上げ(折れ線グラフ)を表示する
前編ではデータソースへの接続から当日売上値(要件1~3)の表示までを説明しました。
後編では本Vizの要となる前年当日の売り上げ(要件4)の表示を説明します。
前年値を取得する
次に前年値を取得する計算フィールド「売上_前年値」を作成します。
やり方はいくつかありますが、今回は表計算を利用します。
LOOKUP関数は現在の行からN個前の値を取得する関数です。
表示期間が日の場合には365日前、月なら12か月前、年なら1年前の値を取得したいので次のように設定します。
■売上_前年値
CASE [集計単位]
WHEN 1 THEN LOOKUP(SUM([Sales]),-365)
WHEN 2 THEN LOOKUP(SUM([Sales]),-12)
WHEN 3 THEN LOOKUP(SUM([Sales]),-1)
END
作成した「売上_前年値」ピルを行に配置しましょう。
画像の例だと2014/03の「売上」が2015/03の「売上_前年値」に表示されています。
![](https://assets.st-note.com/img/1723772925281-URPZ4XP6aj.png?width=1200)
ではfromを2017/01/01に指定しましょう。
「売上_前年値」が表示されなくなってしまいました。
![](https://assets.st-note.com/img/1723772983581-tw2uMatypZ.png?width=1200)
これはTableauの処理順番の影響です。
詳細は割愛しますが、データ処理はフィルタ→表計算の順番で行われます。
フィルタで2017/01/01以降のデータに絞ってしまったので、前年である2016年のデータを表計算で取得できず前年値が非表示となってしまいました。
詳しく知りたい方はこちらのnoteで詳しく解説されているので参考にしてみてください。
さて、これを解決するために、表計算フィルタを活用します。
計算フィールドでフィルタを作成する際に表計算関数を用いることで、その計算は表計算として扱われます。よって表計算と同じ実行順でフィルタをかけることができます。
文字では分かりづらいので早速実装してみましょう。
先ほど作成したfrom-toを編集します。
[from]<=LOOKUP(ATTR([表示期間]),0)
AND LOOKUP(ATTR([表示期間]),0)<= [to]
![](https://assets.st-note.com/img/1723773173324-OgpdtJCG4Z.png)
ロジックとしては、表計算関数の一つであるLOOKUP関数を用いて0個前のデータ(自身のデータ)を取得します。
その際にATTR関数を組み込みます。これは非集計値である[表示期間]を集計値に変換するためです。LOOKUP関数の引数は集計関数である必要があります。
ATTR関数の詳細についてはこちらで詳しく解説されているのでご参考にどうぞ。
![](https://assets.st-note.com/img/1723773210237-cTFJRmILRb.png)
すると、フィルタに配置したfrom-toが赤色のエラーを示していますので一旦フィルタから削除し、再度フィルタに配置します。
こうすることで欲しい前年値を得ることができました。
![](https://assets.st-note.com/img/1723773231800-7AtxSfakda.png?width=1200)
後は体裁を整えます。
マークフィールドで「売上_前年値」を選択し、表示形式を「線」に変更します。
売上と前年値を重ねて表示するため2重軸に設定します。
行フィールドの「売上_前年値」を右クリックし、二重軸を選択します。
右側に表示された「売上_前年値」の軸上で右クリックし、「軸の同期」を選択します。
![](https://assets.st-note.com/img/1723773287123-VflV69PvHe.png)
![](https://assets.st-note.com/img/1723773317618-s3jFmlxOps.png?width=1200)
さて、これで前年値の売上比較ができるVizの完成です。
![](https://assets.st-note.com/img/1723773427304-is4vMJac7b.png?width=1200)
注意点
ここで注意点です。
集計単位を「日」にすると売上_前年値が正しく取得できていません。
例えば2016/12/30の売上774に対して2017/12/30の売上_前年値は2146となっています。
![](https://assets.st-note.com/img/1723773467945-8jzWz5AcJb.png)
これは画像のようにデータが歯抜け(2017/12/12の売上がない)になっているため、365個前のデータを取得する際にずれが発生してしまうためです。
![](https://assets.st-note.com/img/1723773481789-gQW6tToDuQ.png)
今回は実務ではないのでこの問題への対応は割愛いたします。
対応方針としては売上前年値のロジックを見直すか、歯抜けデータを補間するなどが考えられます。
もし他にいい対応策があればコメントで教えてください。
今回は以上となります。ありがとうございました。
ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!
分析屋ではBIを使ったデータ可視化に関するサービスサイトもございます。Power BIやTableauに関するお困りごとがございましたらお気軽にお問い合わせください。
株式会社分析屋について
弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。
ホームページはこちら。
noteでの会社紹介記事はこちら。
【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。