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

目次

はじめに

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コーヒー3003飲料関東
2珈琲3507飲料関西
3紅茶4004飲料関東
4緑茶3802飲料関西
5コーヒー牛乳1501飲料関東
6ノート2005文房具関東
7ペン10010文房具関西
8ハサミ3003文房具関東
9テレビ500001家電関西
10冷蔵庫300002家電関東
11洗濯機250001家電関東
12パソコン600002家電関西

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家電関東3000030000
11家電関東2500025000
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のスキル向上に繋げてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の金融機関で経営企画をしています。
2年でメガバンクを辞めてしまいましたが、むしろ人生が豊かになりました。
データアナリスト的なことをしていたのでPythonとTableauがちょっとだけ使えます。
文系大卒→メガバンク(営業)→広告系ベンチャー(経営企画、FP&A、データアナリスト)→都内金融機関(経営企画)

コメント

コメントする

目次