【Tableau】4月始まり会計年度で上期と下期もドリルダウンしたい人へ

こんにちは。あなたの会社は4月始まり?1月始まり?

私が働いている会社は日本ではごく一般的な3月決算4月始まりの会社なのですが、Tableau君とは育ってきた環境が違うみたいで、うまく行きません。
あとね、Tableau君は知らないかもしれないけど、日本の会社には上期下期っていう考え方もあるんですよ。知らない?やっぱりTableau君はクォーターしか知らない?

ということで、Tableau君が知らない上期下期も日付の中でドリルダウン出来るようにしていきます。

基礎知識:アメリカの商習慣

Tableau君はアメリカで生まれたんですよね。
なので、日本とは習慣が違うんです。大事なのは以下の2つ。
・アメリカの第1Qは1月から始まるのが普通
→日本は第1Qが4月始まりのことが多いです。
・アメリカの会計年度はその年度末の日付の年部分を取るのが普通。
→日本では年度の開始した日付の年部分を取ります。例えば2024年10月1日という日付に対して、日本で4月始まりの会社の場合は、期初である4月1日の年部分を取るため、2024年10月1日は2024年度です。
 しかしアメリカでは、4月始まりだった場合、期末は2025年3月31日になります。この期末日の2025を取るので、2024年10月1日は2025年度になるのです。
(というかアメリカでは基本的に1月1日から12月31日が会計年度なので、年を跨ぐことがあまりないんですね)

まさかこの年になってこんなに基本的なことを初めて知るとは。

そこで、おすすめの方法(IF関数)とよく見かける簡単な方法(DATEADD関数)とその問題点、を解説していきます。

ではまず推奨したい方法から。
若干手間がかかりますが、ドリルダウンも出来ますし、正しい日付で扱うことが出来ます。
これは会計年度をIF関数の計算式で作って階層化する方法です。

おすすめのやり方

会計年度を作る

まず既定のプロパティで会計年度を4月開始にしましょう。

オーダー日の既定のプロパティ

次に会計年度を判定する計算式を作りましょう。
月を見て、4月~12月ならそのままの年度、それ以外は1年引いた年を年度として表示させます。

IF MONTH([オーダー日])>=4 THEN STR(YEAR([オーダー日]))+"年度"
ELSE STR(YEAR([オーダー日])-1)+"年度" END

会計年度を右クリックして、作成>カスタムの日付をクリックします。
名前部分は自動で変わりますので、詳細をプルダウンして四半期・月・日を選び、日付部分をチェックします。これは後で階層化するためのものです。

3つ作ります

先ほど作った会計年度(月)からグループを作ります。右クリックメニュー>作成>グループです。
グループの作成ウィンドウで、4月~9月をまとめて選択して「グループ」を押し、名前を上期にします。
10月~3月もまとめてグループにして、名前を下期と入力します。

これで上期下期が出来ました。

続いて先ほど作成したカスタム日付を階層化します。
データペインに生まれた「会計年度(上期下期)」を「会計年度(年)」の上にドラッグします。

上にのせる感じです

すると階層の作成メニューが出るので、名前を付けます。

階層が出来るよ

残りの月や四半期も同じ階層内にドラッグして移動させます。
並び方の粒度に気をつけましょう。

順番に階層に入れよう

こんな感じで階層が出来ました。

階層だ

あとはこの「会計年度(カスタム)」の階層を行に入れます。これでドリルダウンが出来る形で下期上期付きの会計日付が扱えますし、うるう年でも日付がずれません。

+で開いてドリルダウン出来る!
2016年2月29日のうるう年も正しく2月29日と表示されますので、この方法を推奨いたします。

但し、こんなに面倒なことはしなくてもいいとか、とにかく会計年度さえわかればいいとか、上期下期をラベル的にただ表示させたいといった場合もあるかと思います。その場合は次の方法で簡単に表示できます。
そもそもうるう年の不具合って何?みたいなところも次のやり方で解説します。

次はDATEADD関数を使って会計年度を作るやり方です。

よくあるやり方

会計年度を作る 

まずは日付データの計算式を使って、会計年度を作りましょう。
オーダー日の一年前の日付を取るため、DATEADD関数で計算フィールドを作ります。

DATEADD('month',-12,[オーダー日])

※YEARで-1でもMONTHで-12でも結果は変わりません。
この方法は作業時間が速いのですが、後述の通りうるう年の処理でちょっとだけ不具合があります。

出来た会計年度を右クリックし、既定のプロパティから「会計年度の開始」を選び、4月にチェックを付けます。

既定のプロパティから会計年度の開始を変更

これだけでひとまず会計年度は作れます。

会計年度ともとのオーダー日を並べると、きちんと会計年度が反映されている。

上期と下期をセット機能で作る

カスタムの日付から階層を作らずに、簡単に上期下期を作りたいだけの場合、セット機能がおすすめです。
ビューに先ほど作った会計年度を入れ、クォーターまたは月を表示させます。Q1とQ2を上期にしたいので、その二つを選択してセットを作成します。

セットを作ります。
いらないところを消します
上期に入るものだけ残します。

セットが出来たらIn/Outに別名の編集で名前を付けます。
そのまま上期下期のセットをシェルフに入れると、表記がIn/Outになります。

セットだからね
Inを上期、Outを下期になるよう別名の編集をします。
完成

このやり方の何が問題なの?

問題点は2つあります。
・階層化を行っていないのでドリルダウンが出来ない。
・うるう年の実績が28日に合算されてしまう。
細かく解説します。

・階層化を行っていないのでドリルダウンが出来ない。
 これについては、ドリルダウンをしない場合は問題になりません。ラベル的に表示させたいだけであればこれで十分ですね。
ですが、粒度を変えた分析がしたい場合、ドリルダウンドリルアップが出来ないので、ニーズに合わない方法となります。

・うるう年の実績が28日に合算されてしまう。
DATEADDではYEARで-1でも、MONTHで-12でも、うるう年があった時の2月29日の処理は同じ結果になり、うまく行きませんでした。

左から、「デフォルトのオーダー日」「年マイナス1のYMD」「月マイナス12のYMD」

どうやら2月29日の日付は2月28日と認識されるようです。デフォルトのオーダー日を消すと、28日と29日の二日分の売上(137,840円と27,272円)が28日という日付に合計されて165,112円になってしまいます。

28日が2回来ているっぽいですね。

そして一年前の日付のため、表示上では2016年2月29日が2015年2月28日と表示されてしまいます。

いいところもあります。

カスタムの日付や階層化を省いているので、なんと言っても早く出来るし、処理も軽いです。
単純に会計年度や上期下期を表示させたいだけならこれでいいと思います。

ただやはり、ドリルダウンしたいとか、正確な日付でデータを扱いたい場合は、一つ目にご案内した方法をお勧めします。

その他の注意点

会計年度が4月からにならない場合、ワークブックのロケールが日本になっていないことがあります。ここも日本にしておきましょう。

自動の場合は日本語にしておくといいことあるかも


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