0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

総計とそれ以外で処理を変える方法

Posted at

総計とは?

ワークシート内の列・行単位の総計を表示する機能です。
合計値を別ワークシートで出さなくて済むので活用する場面も多いかと思います。
Untitled (15).png
メニューバー→分析→合計→(列・行)の総計を表示
で表示可能です。
計算方法を「自動」で設定すると、指定した列・行の単位を無視して指定された計算してくれます。
以下は個別のカウント(COUND)を使用した時の総計の結果
Untitled (16).png

総計で困ったこと

image.png
以前、各製品に対し、特定の日にその製品を販売した「店舗数」を、特定の日に販売の実績があった「全店舗数」で割った値を「納品率」として表示してほしいという依頼がありました。
全店舗数の計算に工夫が必要となります。
各日付毎については

{FIXED[日付]:COUNTD([店舗名])}

とすればよいですが、この計算に対して総計を行うと各日付毎の値に対して集計処理を行うことになり、計算が合わなくなります。
Untitled (18).png
Untitled (17).png

そのため、総計と各日付ごとで処理を分ける必要があります。

解決案

日付のカウント数が1の時には日付毎の個別のカウント、2以上の時は日付も無視した個別のカウント、という分岐をすることで総計の処理を変更することを考えます。
image.png
image.png

これにより製品「AA」「BB」は全店舗数の使い分けが出来るようになりました。
ただし製品「CC」は2021/10/01しか実績がないため総計でも日付の個別のカウントが1という扱いになってしまいますので、分岐しません。そのため、手順としては必ず日付が入るように設定します。

実施手順

Tableau Prepで処理を行います。
集計でグループ化したフィールドを「店舗名」「製品」に設定し、そのデータをユニオンしたものを出力します。
image.png
このデータをTableauに接続します。
計算フィールド「日付の個数」を作成(NULLの日付はダミーで1900年などのありえない日付としてカウントする)。

COUNTD(IFNULL([日付],DATE("1900/1/1")))

計算フィールド「店舗数」を作成(ダミー行の店舗数をカウントしないためにNULLの判定がついている)

COUNTD(IF NOT(ISNULL([日付])) THEN [店舗名]END)

計算フィールド「全店舗数」を作成(ダミー行の店舗数をカウントしないためにNULLの判定がついている)

IF [日付の個数]=1 THEN SOM({FIXED[日付]:COUNTD([店舗名])})
ELSE SUM({FIXED:COUNTD(
IF NOT(ISNULL([日付])) THEN
[店舗名]
END
)})
END

計算フィールド「納品率」を作成

[店舗数]/[全店舗数]

クロス集計表を作成。
image.png
NULLを選択し、非表示にする。
image.png
正しい表が得られる。
image.png
日付のフィルターを使用する場合は必ず「NULL値を含める」にチェックを入れ、コンテキストに追加の設定を行うこと。
image.png
image.png

終わりに

総計は便利ですが計算が複雑になると意図しない変わった数を返すことが多くあるため注意が必要です。
総計に入るディメンションの数を使用した分岐により上手く制御する方法を紹介しました。是非ご活用ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?