【初心者向け】Tableauで0埋めを実現する関数テクニック|欠損補完と見た目の整え方を徹底解説

1. はじめに:「0埋め」とは何か?なぜ必要か?

Tableauを使ってデータの可視化やレポート作成を行う中で、「値が存在しない箇所に0を入れて整えたい」という場面がよくあります。これが「0埋め(ゼロ埋め)」と呼ばれる操作です。


✅ 具体例

たとえば売上の月次集計で、ある月に販売がなかった(=データが存在しない)場合、グラフ上ではその月が抜け落ちてしまうことがあります。

このようなとき、0を補完しておくことで:

  • グラフが連続して表示される

  • 時系列が正しく並ぶ

  • 分析・比較が正確になる

といった効果が得られます。


2. Tableauにおける「0埋め」の重要性

Tableauでは、元データに行が存在しないと、その項目自体が非表示になる仕様です。Excelなどでは空欄に0が自動的に入ることもありますが、Tableauは基本的にNULL(空)扱いとなり、その項目がそもそも表示されなくなります。


✅ 例:月別売上グラフ

  • 1月:100

  • 2月:なし(データなし)

  • 3月:80

このようなデータでは、2月が欠けたグラフになってしまいます。


→ 解決策:存在しない月にも「0」を補完すること=0埋め


3. 0埋めを行う一般的な2つのアプローチ

Tableauで0埋めを行う方法は、大きく分けて以下の2つに分類できます。


① 「データそのもの」に0を追加する(外部で処理)

  • SQL・Excel・Googleスプレッドシートなど、元データ側で0を入れておく

  • Tableau側では処理せずに済む


② 「Tableau内」で計算フィールドや関数を使って補完する(内部で処理)

  • Tableauだけで完結させたい場合はこちら

  • 計算フィールドで「0を表示させるルール」を作る


この記事では、② Tableauで関数を使って0埋めする方法に絞って詳しく解説していきます。


4. データが「NULL」の場合に0を表示する関数:ZN()関数

もっとも基本的な方法は、Tableauの関数 ZN() を使うことです。


✅ ZN関数の役割:

ZN(expression)
→ 引数の expression がNULLのときは0を返し、それ以外はそのまま返します。


✅ 例:売上データがNULLの場合に0を表示する

tableau
ZN(SUM([売上]))
  • 通常の売上はそのまま表示

  • データが存在しない場合は「0」が自動で補完される


✅ 利用シーン:

  • 折れ線グラフで線が途切れるのを防ぎたいとき

  • ラベルやツールチップでNULLの表示を避けたいとき

  • 数式の中でNULLを0として計算したいとき


5. ZN関数以外にも使える関数:IFNULL()との違い

もう一つよく使われるのが IFNULL() です。これもNULL処理に便利な関数です。


✅ IFNULL関数の書き方:

tableau
IFNULL(SUM([売上]), 0)
  • SUM([売上]) がNULLの場合は0を返す

  • ZN() と似ているが、IFNULL() の方が明示的に代替値を指定できる


✅ ZN() vs IFNULL()

比較項目 ZN() IFNULL()
書式 ZN([値]) IFNULL([値], 0)
戻り値 NULLなら0、それ以外はそのまま NULLなら任意の値、それ以外はそのまま
シンプルさ 短くて分かりやすい 柔軟に代替値を指定できる

6. データが「存在しない行そのものがない」場合はどうする?

ここで注意したいのが、Tableauにおいては「NULLの値」だけでなく、行そのものが存在しないというケースもあります。

たとえば「売上が0の月はデータ自体が存在しない」というケースでは、ZN()IFNULL()を使っても何も表示されないことがあります。


✅ 解決策:表示対象のディメンション(カテゴリなど)を完全な一覧にしておく

  • データ接続時に「全カテゴリ × 全月」の組み合わせを作る(結合やクロス結合)

  • それが難しい場合は、Tableauで「データの表示範囲」を制御する

7. 存在しない行を補完するには:「データが欠けている」問題の本質

Tableauで「0埋め」をしたいとき、最も難しいのが「行そのものがデータソースに存在しない」場合です。
たとえば、「2月の売上データが記録されていない」状態では、そもそも「2月」という行が存在せず、ZN()IFNULL()でも対応できません。


✅ 例:存在しない行の例

売上
1月 100
3月 80

このような場合、Tableauでは2月自体が表示されないため、見た目上「欠損」しているように見えてしまいます。


8. 解決策①:「すべての組み合わせ」を用意する

この問題を根本的に解決するには、すべての月 × すべてのカテゴリなどの完全な組み合わせを用意する必要があります。


✅ 方法:

  • データソースを Excel や Google Sheets で整備しておく

  • 別シートで「月別テンプレート表」を作成

  • Tableau上でリレーション(結合)やブレンドして結合


✅ 結合例(LEFT JOIN)

  • 左側:すべての月を含むマスターデータ

  • 右側:実際の売上データ

  • 結合条件:月、カテゴリなど


sql
SELECT
月マスター.月,
売上.カテゴリ,
COALESCE(売上.売上, 0) AS 売上
FROM 月マスター
LEFT JOIN 売上 ON 月マスター.月 = 売上.月

これにより、存在しなかった月にも「0」として補完される行が生成されるため、Tableauでも正しく表示できます。


9. 解決策②:「Show Missing Values(欠損値を表示)」機能を使う

Tableauでは、ディメンション(カテゴリなど)に対して「表示されていない値」も表示する機能があります。
これを使えば、簡易的に0埋めを実現できます。


✅ 手順:

  1. ディメンション(例:「月」)を右クリック

  2. Show Missing Values(欠損値を表示)」にチェックを入れる

  3. グラフに「表示されていなかった期間」が出現

  4. そのうえで IFNULL()ZN() を使って値を0に補完


10. 応用:カテゴリ別に0埋めを行うには?

「カテゴリ別 × 月別」の組み合わせで、すべてのセルが埋まっていない場合もよくあります。


✅ 例:以下のような状況を埋めたい

カテゴリ 売上
1月 A 100
1月 B
2月 A 50
2月 B 80

上記では「1月 × B」のデータがないため、Bの折れ線が切れてしまいます。


✅ 対応方法:

  • 完全な「月 × カテゴリ」マスターデータを用意

  • データソースで LEFT JOIN

  • IFNULL([売上], 0) または ZN([売上]) で補完


✅ Tableauでの工夫(計算フィールド)

tableau
IFNULL(SUM([売上]), 0)

これをメジャーに使うことで、カテゴリごとに0が補完され、折れ線が切れずに滑らかに表示されます。


11. ラベルやツールチップに反映する際の注意点

0を埋めたあとのデータは、ラベルやツールチップに「0」が目立ってしまうことがあります。
これを避けるには、表示用に別の計算フィールドを作成すると良いでしょう。


✅ 例:ラベル用の条件付き表示

tableau
IF SUM([売上]) = 0 THEN "" ELSE STR(SUM([売上]))

このようにすることで、値が0のときにはラベルが空白になり、視覚的なノイズを減らせます。


12. まとめ:Tableauでの0埋め関数は視覚と精度の両立に不可欠

「0埋め」は一見シンプルな作業に思えますが、Tableauの仕様やデータの持ち方に応じた柔軟な対応が求められます。


✅ 本記事で紹介したポイントまとめ:

テーマ 概要
ZN関数 NULLを0に変換する基本関数
IFNULL関数 NULLの代替値を自由に指定可能
データ存在しない問題 行を補完する必要あり(JOIN or テンプレート)
欠損値の表示 「Show Missing Values」で表示を促す
カテゴリ別対応 組み合わせマスター + 関数で丁寧に補完
ラベル対策 0のラベルを空白にすることで視覚的に整える

最後に:

Tableauの0埋め処理は、見た目を整えるだけでなく、正確な分析・ストーリーテリングを支える重要なステップです。
ぜひ本記事のテクニックを実務や分析に活用し、「わかりやすく伝える」ダッシュボード作りに役立ててください。

関連記事

この記事へのコメントはありません。

カテゴリー

アーカイブ