【Tableau入門】SUMIFやSUMIFS的計算フィールドの作り方!

「ExcelのSUMIFみたいな関数が使いたい!」
SUMはあるけどSUMIFは…?

TableauにはSUMIFがないなんて言われますがそんなことありません。
組み合わせ次第で何でもできます!

ごり子

同等の関数がなくても大丈夫!

今回は、Tableau関数を使ったSUMIFやSUMIFSの表現方法を解説するとともに

具体的なコードを説明させていただきます!

目次

どんな風に書けばいい??

TableauにSUMIFと同等の関数はありません。
※もちろんSUMはあります。

なので関数を組み合わせて計算フィールドを作っていきましょう。

SUMIFを計算フィールドで実装

Excelだと
=SUMIF(範囲,検索条件,合計範囲)です。

これを計算フィールドに置き換えると

SUM(
IF 条件
THEN [集計項目]
ELSE 0
END
)

なにが起きているかというと

  1. 数える条件をIFの後に入れる(例:[都道府県] = “東京都”)
  2. 条件に満たす場合は集計項目=メジャー(例えば人口データなど)
  3. 満たさない場合は0
  4. 後は値を合計する
  5. 実質SUMIFと同じになる

こういうわけです。

IFの使い方↓から。

具体的に使ってみる

“山”と入る市町村の人口合計を出します。
下記サイトe-Statより日本の人口データを使います。
https://www.e-stat.go.jp/regional-statistics/ssdsview
総務省統計局が整備し、独立行政法人統計センターが運用管理しているようです。

まずはコード

SUM(
IF CONTAINS([市町村],"山")
THEN [人口]
ELSE 0
END
)

↓のようになります。

SUMIFSを計算フィールドで実装

SUMIFに条件を追加していくだけです。

SUM(
IF 条件
AND 条件
AND 条件
THEN [集計項目]
ELSE 0
END
)

この辺はもうIFの世界なので、自由に条件を付けていいと思います。
ORでもNOTでもELSEIFでもOKです。
慣れたらCOUNTIFSより便利です。

【番外編】FIXEDを使う

常に山と入る市町村の都道府県別人口数が見たい時は

{ 
FIXED [調査年],[都道府県]:SUM
(
IF CONTAINS([市町村],"山")
THEN [人口]
ELSE 0
END
)
}

このようになります。
これで市町村でフィルタしたとしても、常にこの項目は都道府県別の人口を算出します。

まとめ

  1. COUNTIFという関数はない
  2. だけどIFとSUMを使うことで同様の効果を持たせられる
  3. ANDやOR、ELSEIFで条件を追加できる

おすすめTableau教材

著:小野泰輔, 著:清水隆介, 著:前田周輝, 著:三好淳一, 著:山口将央
¥2,376 (2021/12/11 12:35時点 | Amazon調べ)

ビジネスパーソンがいま読むべき本を厳選!

Audible (オーディブル) – 本を聴くAmazonのサービス

オーディオブック聴き放題なら – audiobook.jp

ごり子

読んでくれてありがとう!

コメント

コメント一覧 (3件)

  • とても参考になりました。
    最近、会社でTableauを利用することになり、テクニカル分析をすることになったのですが、RSIのTableu版を作成しようとしたところ、sumif関数がなく困っていました。
    例えば、過去14日間で、その日の値がプラスとマイナスとなるものを、プラスの合計、マイナスの合計をそれぞれ合計することはできますでしょうか?
    ExcleのSUMIF関数をとOFSET関数を利用すればできるのですが、なかなか苦戦しております・・
    (イメージ)
    SUMIF(OFFSET($I18,0,0,-14),”>0″,OFFSET($I18,0,0,-14)))
    みたいなイメージですが、実現できたりしますでしょうか?
    有識者の方のアドバイスをいただきたく、お手数ですが、ご教授願います。
    参考サイト(やりたいこと)
    https://trader-knowledge.site/rsi-keisann/
    助けていただきたく・・・・

    • すみません、、、
      コメント見逃していました。

      質問ありがとうございます!
      ↓でどうでしょうか?
      (
      SUM(
      IF [日付] > DATEADD(“day”,-14,TODAY())
      THEN [上げ幅]
      ELSE 0
      END)

      /

      (
      SUM(
      IF [日付] > DATEADD(“day”,-14,TODAY())
      THEN [下げ幅]
      ELSE 0
      END)

      +
      SUM(
      IF [日付] > DATEADD(“day”,-14,TODAY())
      THEN [上げ幅]
      ELSE 0
      END)
      )
      )

      *100

  • Hey, I think your sikte might be having browser compatibility issues.
    Whhen I look at your webwite iin Firefox, it looks fine but wen opening in Internet Explorer, it has some
    overlapping. I just wanted to give yyou a quick heads up! Other then that, excellent blog!

    Take a look at my blog … https://Telegra.ph/Na-chto-nuzhno-smotret-chtoby-vybrat-onlajn-kazino-v-kotorom-budet-komfortno-igrat-12-22

コメントする

目次