TOP
  1. TOP
  2. Tableau
  3. Tableau – 条件に合致するレコードの数をカウントする方法(ExcelのCOUNTIF、COUNTIFS)

Tableau – 条件に合致するレコードの数をカウントする方法(ExcelのCOUNTIF、COUNTIFS)

Tableauには、ExcelでいうところのCOUNTIF()やCOUNTIFS()に相当する関数が存在しません。

ただし、同様の計算は関数を組み合わせることで、簡単に実現できます。

実際にやってみましょう。

使用データ

サンプルスーパーストア

作成方法

IF文とSUM関数を使って以下のような計算フィールドを作成します。

SUM ( IF <条件式> THEN 1 ELSE 0 END )

  1. まず、特定の条件に合致する場合には1, 含まない場合は0をフラグつけ
  2. それらの値をSUMで合計

すると、該当する行数分の1を合計することにで、結果として行数が算出されます。

以下のような計算式を作っても結果は同じになります。

SUM ( IIF ( <条件式> , 1, 0 ))
COUNT ( IF <条件式> THEN 1 END )

1つ目は、IF文をIIF関数でシンプルに記載した例です。

2つ目は、SUMではなくCOUNT集計しています。条件に当てはまらない場合には値をセットしていない、つまりNULLになるので、COUNT関数で集計することで、該当する行数のみを数えることができます(NULLの行は無視されるため)。

使用例

実際にやってみましょう。

今回は、「製品名」に特定の文字列が含まれるもののみをカウントしてみます。

行に「製品名」を配置してみてください。スクロールしていくと、「イケア」の文字列を含んだ製品があるのがわかります。

この行数をカウントしてみます。

計算フィールドで計算式を作成します。

SUM ( IF CONTAINS([製品名], ‘イケア’ ) THEN 1 ELSE 0 END )

新しいシートを開き、作成した計算フィールドを行に、「オーダー日」をCtrl(macはoptionキー)を推しながら列に配置します。

連続の「月(オーダー日)」にしましょう。

各月のイケア製品の販売回数を折れ線グラフで表示できました。

ユニークカウントするには

先ほどの例は単純に「イケア」と付いた製品名を注文テーブルからカウントしたので、全体で何回注文されたかを集計した形です。

そうではなく、「イケア製品」の種類数を数える(ユニークカウントする)にはどうすれば良いでしょうか。

先ほどの計算式を少し変更すれば計算できます。

COUNTD ( IF CONTAINS(<カラム名>, ‘文字列’) THEN <カラム名> END )

  • IF文で条件に合致した際に1を返すのではなくカラム名を返す
  • 集計をCOUNTD()にしてユニークカウントする

という形です。

こちらも実際にやってみましょう。

以下のように計算フィールドを作成します。

COUNTD ( IF CONTAINS([製品名], ‘イケア’) THEN [製品名] END )

わかりやすく表示するために、行に「カテゴリ」「サブカテゴリ」を配置します。

そして、作成した計算フィールドをマーク欄の「テキスト」に配置します。

イケア製品は、本棚で22種類あるということがわかりました。

複数条件への対応方法(COUNTIFS)

条件が複数あるケースではどうでしょう。ExcelのCOUNTIFS()関数に相当するものです。

こちらも、先程のIF文で条件にANDやOR演算子を追加すれば、簡単に実現することができます。

SUM(IF <条件式1> AND <条件式2> THEN 1 ELSE 0 END)

例えば今回の文字列検索でいうと、

SUM(IF CONTAINS(<カラム名>, ‘文字列1’) OR CONTAINS(<カラム名>, ‘文字列2’ THEN 1 ELSE 0 END)

という形にすれば、複数の文字列をOR検索することができますね。

いかがでしたか。

今回は、TableauでExcelのCOUNTIFやCOUNTIFSと同じ計算を行なう方法を説明しました。

TableauのQAにも同様の内容がありますので、こちらも参照してみてください。

https://kb.tableau.com/articles/howto/counting-occurrences-of-a-string-within-a-dimension?lang=ja-jp