🐥

Tableauで条件付き集計 - SUMIFS, COUNTIFSを実現する方法

2025/01/03に公開

※個人ブログに移行しました。
https://lytton.life/tableau-sumifs/

はじめに

Excelでのデータ分析において、複数の条件を満たすデータのみを集計したい場面はよくあります。 そのような場合に活躍するのが、SUMIFS 関数や COUNTIFS 関数です。 では、Tableauで同様の処理を行うにはどうすればよいのでしょうか?

本稿では、Excelの SUMIFSCOUNTIFS に相当する処理をTableauで実現する方法について詳しく説明します。 IF 文と集計関数(SUM, COUNT, COUNTD)を組み合わせたテクニックを紹介し、具体例を通してその処理手順を明確にします。 Tableauにおける行レベル計算と集計計算の違いを理解し、条件付き集計をマスターしましょう。

ExcelのSUMIFS, COUNTIFS

まず、Excelにおける SUMIFS と COUNTIFS の使い方を確認しておきましょう。

SUMIFS

SUMIFS 関数は、複数の条件を満たすデータの合計値を計算します。 例えば、「商品カテゴリが『家電』かつ地域が『関東』の売上合計」を計算する場合、以下のような式になります。

=SUMIFS(合計範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)
=SUMIFS(C:C, E:E, "家電", F:F, "関東")

COUNTIFS

COUNTIFS 関数は、複数の条件を満たすデータの件数をカウントします。 例えば、「商品カテゴリが『飲料』かつ地域が『関西』の件数」を計算する場合、以下のような式になります。

=COUNTIFS(条件範囲1, 条件1, 条件範囲2, 条件2, ...)
=COUNTIFS(E:E, "飲料", F:F, "関西")

TableauでSUMIFS, COUNTIFSを実現する

それでは、本題である SUMIFSCOUNTIFS に相当する処理をTableauでどのように実現するかを見ていきましょう。

SUMIFSに相当する処理

Tableauで SUMIFS と同様の処理を行うには、IF 文を集計関数(SUM)と組み合わせます

// 家電カテゴリかつ関東地域の売上合計
SUM(IF [商品カテゴリ] = "家電" AND [地域] = "関東" THEN [売上] END)

Tableauにおける集計処理の詳細

以下の表を用いて具体的に説明します。

商品ID 商品名 売上 数量 商品カテゴリ 地域
1 コーヒー 300 3 飲料 関東
2 珈琲 350 7 飲料 関西
3 紅茶 400 4 飲料 関東
4 緑茶 380 2 飲料 関西
5 コーヒー牛乳 150 1 飲料 関東
6 ノート 200 5 文房具 関東
7 ペン 100 10 文房具 関西
8 ハサミ 300 3 文房具 関東
9 テレビ 50000 1 家電 関西
10 冷蔵庫 30000 2 家電 関東
11 洗濯機 25000 1 家電 関東
12 パソコン 60000 2 家電 関西

Tableauでは、上記の計算フィールドは以下のような手順で処理されます。

1. IF文による条件判定(行レベル)

まず、各行に対して IF 文の条件判定が行われます。 この段階では、まだ集計は行われません。 中間表として、以下のようなイメージになります。

商品ID 商品カテゴリ 地域 売上 IF文の結果
1 飲料 関東 300
2 飲料 関西 350
3 飲料 関東 400
4 飲料 関西 380
5 飲料 関東 150
6 文房具 関東 200
7 文房具 関西 100
8 文房具 関東 300
9 家電 関西 50000
10 家電 関東 30000 30000
11 家電 関東 25000 25000
12 家電 関西 60000

「商品カテゴリが『家電』かつ地域が『関東』」という条件を満たす行(商品IDが10と11)のIF文の結果列に、その業の売上が格納されています。

2. SUM関数による集計

次に、SUM()関数によって、IF文の結果(つまり、条件を満たす行の売上)が集計されます。 SUM()関数は、NULL値は無視して合計を計算します。

集計対象
商品ID 10のIF文の結果 30000
商品ID 11のIF文の結果 25000
合計 55000

その結果、「商品カテゴリが『家電』かつ地域が『関東』」の売上合計である 55000 が得られます。

COUNTIFSに相当する処理

Tableauで COUNTIFS と同様の処理を行うには、IF 文を集計関数(COUNT/COUNTD)と組み合わせます

// 飲料カテゴリかつ関西地域の件数
COUNT(IF [商品カテゴリ] = "飲料" AND [地域] = "関西" THEN [商品ID] END)

Tableauにおける集計処理の詳細

Tableauでは、上記の計算フィールドは以下のような手順で処理されます。

1. IF文による条件判定(行レベル)

まず、各行に対して IF 文の条件判定が行われます。 中間表として、以下のようなイメージになります。

商品ID 商品カテゴリ 地域 IF文の結果
1 飲料 関東
2 飲料 関西 2
3 飲料 関東
4 飲料 関西 4
5 飲料 関東
6 文房具 関東
7 文房具 関西
8 文房具 関東
9 家電 関西
10 家電 関東
11 家電 関東
12 家電 関西

「商品カテゴリが『飲料』かつ地域が『関西』」という条件を満たす行(商品IDが2と4)のIF文の結果列に、その業の商品ID(なんのフィールドでも良い)が格納されています。

2. COUNT関数による集計

次に、COUNT()関数によって、IF文の結果(つまり、条件を満たす行の商品ID)の件数がカウントされます。 COUNT()関数は、NULL値は無視して件数を計算します。

集計対象
商品ID 2のIF文の結果 2
商品ID 4のIF文の結果 4
件数 2

その結果、「商品カテゴリが『飲料』かつ地域が『関西』」の件数である 2 が得られます。 もし、商品IDに重複があるなどで、ユニークな数値をカウントしたい場合は、COUNTDを使用します。

その他の集計関数との組み合わせ (AVERAGEIFS, MAXIFS, MINIFSなど)

これまで、SUMIFS, COUNTIFSに相当する処理として、SUM()COUNT()COUNTD()IF 文の組み合わせを紹介してきました。
Tableauでは、他の集計関数 ( AVG, MAX, MIN, MEDIAN など) と IF 文を組み合わせることで、Excelの AVERAGEIFS, MAXIFS, MINIFS, MEDIANIFS に相当する処理も実現できます。

AVERAGEIFS に相当する処理

例えば、「商品カテゴリが『飲料』かつ地域が『関西』の売上の平均値」を計算したい場合、以下のような計算式になります。

// 飲料カテゴリかつ関西地域の平均売上
AVG(IF [商品カテゴリ] = "飲料" AND [地域] = "関西" THEN [売上] END)

これは、「商品カテゴリが『飲料』かつ地域が『関西』」という条件を満たす行の売上を対象に、AVG()関数で平均値を計算する処理です。

MAXIFS に相当する処理

「商品カテゴリが『家電』かつ地域が『関東』の売上の最大値」を計算したい場合は、以下のようになります。

// 家電カテゴリかつ関東地域の最大売上
MAX(IF [商品カテゴリ] = "家電" AND [地域] = "関東" THEN [売上] END)

MINIFS に相当する処理

「商品カテゴリが『文房具』かつ地域が『関西』の売上の最小値」を計算したい場合は、以下のように記述します。

// 文房具カテゴリかつ関西地域の最小売上
MIN(IF [商品カテゴリ] = "文房具" AND [地域] = "関西" THEN [売上] END)

MEDIANIFS に相当する処理

「商品カテゴリが『飲料』かつ地域が『関東』の売上の中央値」を計算したい場合は、以下のように記述します。

// 飲料カテゴリかつ関東地域の中央値
MEDIAN(IF [商品カテゴリ] = "飲料" AND [地域] = "関東" THEN [売上] END)

このように、IF 文と様々な集計関数を組み合わせることで、多様な条件付き集計を実現できます。


LOD表現との比較 (より高度な集計)

本稿で紹介してきた IF 文と集計関数を組み合わせた条件付き集計は、多くの場合に有効です。しかし、より複雑な集計や、パフォーマンスが重要な場面では、LOD (Level of Detail) 表現 が役立つことがあります。

LOD表現とは

LOD表現は、Tableauの強力な機能の一つで、ビューの詳細レベルとは異なる粒度で集計を行うことを可能にします。FIXED, INCLUDE, EXCLUDE の3種類のLOD表現があり、それぞれ異なる方法で集計の粒度を指定します。

LOD表現を用いた条件付き集計

例えば、先ほどの「商品カテゴリが『家電』かつ地域が『関東』の売上合計」を、FIXED を使ったLOD表現で計算すると、以下のようになります。

// LOD表現版: 家電カテゴリかつ関東地域の売上合計
{ FIXED : SUM(IF [商品カテゴリ] = "家電" AND [地域] = "関東" THEN [売上] END) }

FIXEDで商品カテゴリと地域を事前に結合する事で、IF文をシンプルにする例は下記になります。

// LOD表現版: 家電カテゴリかつ関東地域の売上合計
{ FIXED [商品カテゴリ], [地域] : SUM([売上]) }

//条件を後から指定する。
SUM(IF [商品カテゴリ] = "家電" AND [地域] = "関東" THEN [家電カテゴリかつ関東地域の売上合計] END)

この計算フィールドは、ビューの詳細レベルに関係なく、「商品カテゴリが『家電』かつ地域が『関東』」という条件で固定された売上合計を計算します。

IF文と集計関数の組み合わせ vs. LOD表現

どちらの方法が優れているかは、状況によります

  • IF文と集計関数の組み合わせ:
    • 比較的シンプルで理解しやすい。
    • ビューの詳細レベルに依存した集計を行う。
    • 複雑な条件や、異なる粒度での集計を組み合わせる場合は、計算式が煩雑になる可能性がある。
  • LOD表現:
    • ビューの詳細レベルに依存しない、固定された粒度での集計ができる。
    • より複雑な条件付き集計を簡潔に記述できる場合がある。
    • パフォーマンス面で有利な場合がある(特に、データの粒度が粗い場合)。
    • 使いこなすには、LOD表現の概念を理解する必要がある。

使い分けの指針 (初心者向け)

初心者の方は、まず IF 文と集計関数の組み合わせから始めるのが良いでしょう。この方法で多くの条件付き集計を実現できます。そして、より複雑な集計やパフォーマンスの最適化が必要になった際に、LOD表現の学習を検討してみてください。

LOD表現は強力な機能ですが、理解するにはある程度の慣れが必要です。まずは、IF 文と集計関数を組み合わせた方法をマスターし、その後、必要に応じてLOD表現に挑戦することをお勧めします。

承知しました。ご指定のブログ記事のまとめセクションを、より詳細かつ具体的に書き直しました。以下が修正版です。

まとめ

本稿では、TableauでExcelの SUMIFSCOUNTIFS 関数のように、複数の条件を満たすデータを集計する方法を詳細に解説しました。以下のポイントを理解することが重要です。

  1. IF 文と集計関数の組み合わせ:

    • SUMIFS に相当する処理: IF 文で条件に合致する行の値を抽出し、SUM 関数で合計します。
      • 例: SUM(IF [商品カテゴリ] = "家電" AND [地域] = "関東" THEN [売上] END)
    • COUNTIFS に相当する処理: IF 文で条件に合致する行を特定し、COUNT または COUNTD 関数で件数をカウントします。
      • 例: COUNT(IF [商品カテゴリ] = "飲料" AND [地域] = "関西" THEN [商品ID] END)
    • その他の集計関数: AVG, MAX, MIN, MEDIAN などと組み合わせることで、AVERAGEIFS, MAXIFS, MINIFS, MEDIANIFS に相当する処理も実現できます。
  2. Tableauにおける処理の流れ:

    • 行レベルの条件判定: まず、IF 文によって各行に対して条件判定が行われます。
    • 集計: 次に、SUM, COUNT, AVG などの集計関数によって、条件を満たす行の値が集計されます。
    • 中間表のイメージ: 処理の過程を理解するために、条件判定の結果を示す中間表をイメージすることが有効です。
  3. LOD表現との比較 (発展):

    • LOD表現は、ビューの詳細レベルとは異なる粒度で集計を行う強力な機能です。
    • IF 文と集計関数の組み合わせは、多くの場合に有効で理解しやすい方法です。
    • より複雑な集計やパフォーマンスが重要な場面では、LOD表現が役立つ場合があります。
    • 初心者の方は、まず IF 文と集計関数の組み合わせ をマスターし、その後、必要に応じて LOD表現 の学習を検討すると良いでしょう。

Tableauにおける条件付き集計は、Excelとは異なるアプローチが求められますが、本稿で解説したテクニックを理解することで、多様なデータ分析のニーズに対応できるようになります。
データ分析の幅を広げ、Tableauのスキル向上に繋げてください。

Discussion