Tableauで損益計算書(正確には管理会計、すなわち売上と費用の予実分析資料)を作成することになったのでその結果のまとめ。
実現したいこと
仕訳明細的なデータの予算と実績から以下のような表が作りたい。
基準日 | 勘定科目 | 金額 |
---|---|---|
2020/1/1 | 売上 | 20 |
2020/1/2 | 売上 | 30 |
2020/1/31 | 人件費 | 50 |
2020/1/31 | 広告費 | 10 |
基準月 | 科目 | 実績 | 予算 |
---|---|---|---|
2020/1 | 売上 | 100 | 110 |
売上原価 | 50 | 40 | |
販管費 | 10 | 10 | |
2020/2 | 売上 | 200 | 220 |
売上原価 | 100 | 90 | |
販管費 | 20 | 20 | |
2020/3 | 売上 | 300 | 290 |
売上原価 | 150 | 160 | |
販管費 | 30 | 30 |
いきなり残念な結論
率直に言うと、Tableauだけでは無理と思われる。
できると言えばできるけど、カスタムクエリでゴリゴリSQLを書くことになるので実質Tableauの恩恵をあまり授かっていない。
要は、以下のような損益計算書の形になっているテーブルを事前に作り、それをTableauでうまく表示してあげるという手法。
基準月 | 科目 | 予実 | 金額 |
---|---|---|---|
2020/1 | 売上 | 実績 | 100 |
2020/1 | 売上 | 予定 | 110 |
2020/1 | 売上原価 | 実績 | 50 |
2020/1 | 売上原価 | 予定 | 40 |
2020/1 | 販管費 | 実績 | 10 |
2020/1 | 販管費 | 予定 | 10 |
クエリはどうにでもなるけど、以下のようにUNIONでつなげる感じかな。
これを実績、予算それぞれについで実行して更にUNIONする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
SELECT 基準月, '売上' AS Kamoku, '実績' AS Yojitu, SUM(金額) AS Gokei FROM 仕訳明細 WHERE 勘定科目 IN ('売上に計上するやつ全部') GROUP BY 基準月 UNION ALL SELECT 基準月, '売上原価' AS Kamoku, '実績' AS Yojitu, SUM(金額) AS Gokei FROM 仕訳明細 WHERE 勘定科目 IN ('売上原価に計上するやつ全部') GROUP BY 基準月 UNION ALL SELECT 基準月, '販管費' AS Kamoku, '実績' AS Yojitu, SUM(金額) AS Gokei FROM 仕訳明細 WHERE 勘定科目 IN ('販管費に計上するやつ全部') GROUP BY 基準月 |
一応Tableauでやるとどうなるかとそのメリット
もうお分かりかと思いますが、上記のようにSQLで実施した場合Tableauを使うメリットはほとんどない。
あそこまでテーブル化できればエクスポートしてExcel整形も用意。
それでも一応Tableauでのやり方と、いくつかメリットがあるのでまとめておく。
Tableauでのやり方
手順はいたってシンプル。
- カスタムクエリに上述のSQLを設定しデータソース化する
- それをワークシートで表示する
以上。
1については、データソース指定するペインに「新しいカスタムSQL」というのがあるので、そこにSQL貼り付けるとTMPテーブルが作られるのでそれをデータソースに指定できる。
SQLの記法は接続先DBに準拠。
ただしこれ、結構重いと思われる。(毎度クエリ投げるからかな?)
2は以下のような感じ?カラムに合わせてお好みでどうぞ。
Tableauを使うメリット
一応作ってみてタブローを使うメリットは多少ありそう。
そもそもタブローは分析・ビジュアル化ツールであって、集計ツールではない。
よって、データさえFITするように整えてあげればその後の整形は結構良さげ。
- ピボットが容易なので時系列推移データがすぐ作成できる
- ビジュアルも予実比較の棒グラフとかが簡単に作れる
- 勘定科目以外の軸(例えば部署別とか)がある場合ドリルダウンが用意
抜粋ですが、以下のようなグラフも簡単に作れる。