Tableau計算フィールド 厳選Tips集📊｜現場で役立つ関数

こんにちは、Tableau Data Saberの竹下です。
日々の業務の中で「これ知ってると便利！」と感じた計算フィールドのTipsを、今回はメモを兼ねてQiita記事としてまとめてみました。

この記事では、初心者でもすぐに使える、シンプルだけど現場でよく使う関数やロジックにフォーカスしています。小さな工夫が、可視化の質やユーザー体験を大きく左右することもあるので、ぜひ参考にしていただければ嬉しいです。

Tips目次
1. 週の範囲を表示する文字列を作る
2. 表で空欄になってしまう場所に"0"を表示させる
3. COUNTDを使うと合計値が合わなくなる現象の回避方法
4. yyyyMMdd形式の数値を日付型に変換する
5. nullの場合はツールヒントで非表示にする

皆様のお役に立てると嬉しいです！

## ✨ 1. 週の範囲を表示する文字列を作る
Tableauでは、日付を使って「このデータは何週目のデータか」を表示したいシーンがよくあります。
例：2025/6/9〜6/15 のように表示したい

そんな時は以下の計算式で、ある日付の週の開始日〜終了日を文字列として表示できます。


```:書き方
STR(DATEPART('month', DATETRUNC('week', [オーダー日]))) + "/" +
STR(DATEPART('day', DATETRUNC('week', [オーダー日]))) + "〜" +
STR(DATEPART('month', DATEADD('day', 6, DATETRUNC('week', [オーダー日])))) + "/" +
STR(DATEPART('day', DATEADD('day', 6, DATETRUNC('week', [オーダー日]))))
```

注意⚠️DATETRUNC('week', ...) の週の開始日はTableauの設定によります（通常は日曜 or 月曜）。必要に応じて設定を確認してください。

では、実際にTableauで表示させてみましょう。

Before
![1-1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112191/25019535-9770-4edc-9223-0bd69bc0cecd.png)

After
![1-1-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112191/3e041eff-72fe-49c7-ba5e-930f860546cd.png)

ちょっとした違いですが、誤解を産む可能性を減らせますし、簡単なので取り入れてみてもいいと思います。


## ✨ 2. 表で空欄になってしまう場所に"0"を表示させる

商品の在庫などの表で値がnullのとき、何もしないと表では空欄で表示されてしまいます。
以下の式を使えば、nullの時も"0"と表示してくれるようになります。
```:0表示
ZN(LOOKUP(SUM([数量]),0))
```

では、実際にTableauで表示させてみましょう。
Before
![TableauTips-2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112191/778e41be-3686-4116-9efb-058d03657c33.png)

After
![TableauTips-2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112191/820b4991-61c3-420d-9f63-631fb27b8059.png)

"アプライアンス"の行を見てみると、空欄だったのが"0"と表示されるようになりました。

## ✨ 3. COUNTDを使うと合計値が合わなくなる現象の回避方法

COUNTD（ユニーク数）は便利ですが、行レベルで集計したときに全体合計と個別の合計が一致しない問題が生じます。
この問題は、以下のようなLOD式とLOOKUPを組み合わせることで回避できます。
```:書き方
ZN(LOOKUP(SUM({INCLUDE : COUNTD([売上])}), 0))
```
▶ Tips2のLOOKUPでの0表示と組み合わせて、正しい形でユニーク数を安定して表示しています。

## ✨ 4. yyyyMMdd形式の数値を日付型に変換する

例えば、20250610 のような数値形式のフィールドを日付として扱いたい場合、下記の式で変換できます。
```:書き方
DATE(DATEPARSE("yyyyMMdd", STR([yyyymmdd])))
```

ちなみに、yyyyMMddhhmmssSSSのようなデータが文字列として認識されるケースでもこちらの方法が使えます。
```:書き方
DATEPARSE(“yyyyMMddhhmmssSSS”,”20250606110077888″)
```

数値から文字列に変換（STR）してから DATEPARSE を使うのがポイントです。

実際にTableauで変換してみましょう
Before
![TabkeauTips-4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112191/ebdc34db-3526-4b9a-ad00-3cde1c0363af.png)

After
![TableauTips-4-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4112191/d5fb471c-a017-413c-9042-c1c0122c23d8.png)


型変換については公式でも丁寧に説明されているので、気になる方はご確認ください。

https://help.tableau.com/current/pro/desktop/ja-jp/functions_functions_typeconversion.htm


## ✨ 5. nullの場合はツールヒントで非表示にする

売上などの指標で、値が存在しない（=0またはNULL）ときは、ツールヒントに文字を表示させたくない場面があります。
以下の式を使えば、値があるときだけツールヒントに文字列を表示することができます。
```:書き方
IF ZN(SUM([売上])) = 0
THEN ""
ELSE "Sales: " + STR(SUM([売上])) + CHAR(10)
END
```
ZN関数はNULLを0として扱うので、「値がない場合」は空文字列を返すことができます。

▶ ポイント：CHAR(10) は改行コードです。ツールチップの見やすさ向上につながります。

## ✅ おわりに

今回紹介したのは、初心者でもすぐに使える、でも **実務では「知ってると効率が段違い」** というようなTipsばかりです。

Tableauを扱う上で、「計算フィールドの工夫」はとても奥深い領域です。
今後もData Saberとして、日々の業務で得た知見を発信していきたいと思います。

この記事が、Tableauを学ぶ誰かの助けになれば幸いです。

📊 今後は、TableauだけではなくPythonや生成AIなどについても発信していく予定です。よろしければフォローお願いします！