[ThoughtSpot]カスタムカレンダーを使って自由に年度や四半期表記を変更する

## はじめに
ThoughtSpot利用歴約2年。
日付の表示方法について日々何が最適かと悩んでいます。
**※この設定変更をできるのはAdminの権限がある方のみです。**
※利用者で「日付軸の表記変更したいぜ」という方はAdmin権限持っている人に「カスタムカレンダー増やして」と言ってみましょう。対応してもらえますように。
※筆者はエンジニアではありません。

## ThoughtSpotで使える日付軸
ThoughtSpotでは日付軸の年度表記や四半期表記を任意の表記に変更したい場合、カスタムカレンダーを使用します。
何もしないとこのカスタムカレンダーが「DEFAULT」になっているので、これを自分の設定したカスタムカレンダーに変更することで好きな表記に変更できます。
例）
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1658354/a307a89f-cc92-a86c-46cc-c2c959f71016.png)


## 手順1：カレンダーを作成する
※ここからの画像は2023.12現在の画面になります。
ThoughtSpot画面上部の「データ（DATA）」タブ→ユーティリティ→カスタムカレンダー　から「カスタムのカレンダーを追加/変更する」を選択します。
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1658354/ef2e3718-cc3c-f8d8-d586-42c807866f7c.png)

画面右上の「カスタムカレンダーを作成する」からカスタムカレンダーを作成します。
* **カレンダー名：カレンダー名を入力します。**
ここで付けたカレンダー名を各種データソース（ワークシートなど）の設定画面で指定していくことになります。名前は **半角英数字のみ** を使用してください。
<details><summary>なんで半角英数字のみ？</summary>
1年ほど前に普通に日本語使ってカレンダー作成をしたところ、エラーが起きて後述するカスタムカレンダーのカスタマイズおよび削除が一切できなくなりました。その際にカスタムカレンダーは「UTF-8文字のみ」で名前を付けるようご連絡がありました（今は日本語で作成しても大丈夫なのかな……試す勇気はないのでもし日本語でもOKになっていればどなたか教えて下さい）。</details>

* **接続先を選ぶ：DWHとの接続先を選びます。**
ふさわしい接続先を指定して「作成」にチェックを入れます。
この下でカスタムカレンダーの内容を設定していくわけですが、その内容にそって、ここで選択した接続先にカレンダーテーブルが出来上がります。
* **テーブル名：上記接続先に作るテーブル名を入力します。**
なんでも良いですが、弊社ではカレンダー名と一緒にしています。単純にその方が分かりやすい。
* **開始日／終了日：カレンダーの開始日と終了日を指定します。**
カレンダーを設定する元データに対して不足がない日付で設定してください。例えば元データが1990/4/1～データがあるのに、カスタムカレンダーの開始日を2020/4/1～にすると表示がおかしくなります。
* **カレンダーのタイプ：MONTH_OFFSETを選択します。**
必要に応じて他の4-4-5タイプなどに変更してください。
* **毎月の補正：年度の開始の月を指定します。**
4月はじまりであればApril、9月はじまりであればSeptember、1月はじまり・もしくは年度表示ではなく単純に年表示であればJanuaryを選択します。デフォルトのカレンダーだと1月からの並び順になりますが、カスタムカレンダーはここで指定した月はじまりで並ぶようになります。
* **週の開始日：週のはじめの曜日を選択します。**
日曜はじまりであればSunday、月曜はじまれであればMondayを選択します。
* **四半期名プレフィックス：四半期の表記を指定します。**
例えばここに「四半期」と入力すると、四半期が「四半期1、四半期2、四半期3、四半期4」という表記になります。いやいや「第1四半期」って表記にしたいんだけど？という場合は後述するカスタマイズが必要になりますので、暫定の表記を入力しておいてください。
* **年名プレフィックス：年度（年）の表記を指定します。**
例えばここに「年度」と入力すると「年度2021、年度2022、年度2023……」という表記になります。いやいやだからという方は以下略。

ここまで設定ができたら「作成」ボタンを押してカレンダーを作成します。
これでカスタムカレンダーの完成です。

## 手順2：カレンダーをカスタマイズする
では作成できたカレンダーの中身を見ていきます。
上記手順で選択したDWHにカレンダーテーブルが出来上がっているので、そちらの中身を確認します。

さてここからですが、**全力で置換作業をしていきます**。
クエリで直接中身を書き換えても良いですし、一度csvに落としてcsv上で書き替え→取り込み直しでも良いと思います。

![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1658354/1b889509-799b-d86f-8de9-1421010b7560.png)
月の表記が4月、5月……が良ければmonthの列を「April→4月」になるように置換します。
quarter列も「四半期1→第1四半期」となるように、year列も「年度2023→2023年度」となるようにひたすら置換します。
day_of_week列もです。日曜日、月曜日……という表記にするのであれば置換します。
他にも列はあるので、置換が必要な列はすべて同様に変換していきます。

※※他に良い置換方法知っていたら教えてください。※※

## 手順3：データソースにカスタムカレンダーを適用する
カスタムカレンダーの置換がすべて終わったらThoughtSpotに戻りまして、このカレンダーを適用していきます。
カスタムカレンダーを付与したいデータソースを開きます。
データソースの列タブで項目一覧が見れますが、ここを一番右までスクロールすると日付タイプ項目のものには「カレンダータイプ」が選べるようになっています。デフォルトでは「DEFAULT」になっているので、**先ほど作成したカレンダー名を選択します**。
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1658354/b3e6e57b-2d39-9541-3aa4-7b2e47fa6361.png)

変更を保存すれば設定完了です。
これでグラフ上の日付項目から時間バケットを選択すると、カレンダーで設定した内容で日付表示させるようになります。
![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1658354/942cb749-aedc-fe95-a5ca-23ef7dc488b0.png)



## おまけの細かい話
* カスタムカレンダーを置換するところでmonthly列がありますが、ここがデフォルトでは「月 年」の表記になっているのでこれを「年 月」に変えておくと日本人ライクになります（「4月 2023年度」と表示されるか「2023年度 4月」と表示されるかの違い）。ThoughtSpotのグラフ上では時間バケットを「月単位」にしたときに表示される部分です。quarterlyも同様です。
* この方法だとひと項目で4月はじまりの年度表示したい場合と、1月はじまりの年表示したい場合が同居できません。なので必要ならワークシートでカスタム項目作成して、年度用の日付項目と年用の日付項目を用意しておくのが良いのかも。

## おわりに
みなさんは日付軸は何単位で良くグラフ作成する？
私は圧倒的に月単位での表示が多くてそれ以外のグラフ見つけるのが難しいくらいです。