【Tableau】集計と非集計③~集計と非集計は混在できませんとは?~

          f:id:kaodora:20201223214803j:plain
だんだん慣れてきて、少し難しい計算式も書くようになりました。
と思っていたら
f:id:kaodora:20210104155120p:plainf:id:kaodora:20210104155207p:plain
集計と非集計の壁にまたぶち当たってしまいました・・・
ここで克服したい・・・!

ズバリ!集計と非集計は混在できない

表題の通り、集計と非集計は混在する事ができません。
そもそも集計と非集計ってなんだったかを思い出すとシンプルです。
f:id:kaodora:20210104161736p:plain
集計はまとめて計算してある(合計、平均など)もの、非集計は一行単位の値
でした。計算粒度が全く違うのでこれらを一緒に計算することはできません。

kaodora.hatenablog.com

解決方法①集計か非集計どちらかに合わせる
f:id:kaodora:20210104163621p:plain

f:id:kaodora:20210104163654p:plain
(正しい利益率の求め方は上の方ですよ!) 

kaodora.hatenablog.com

解決方法②無理やり集計にする

このエラーが出てくるのはIF文を使うときが多いと思います。
では下の式はどうでしょうか。
f:id:kaodora:20210104164405p:plain
カテゴリが事務用品だった場合の利益率を返して欲しいのですが、エラーになりました。利益率の中身は下のように、集計になっています。
f:id:kaodora:20210104163621p:plain
利益率を非集計にする([利益]/[売上])と、正しい利益率とは言えないので
[カテゴリ]の方を集計にしなくてはなりません。
そこでよく使われるのは関数ATTRです。(=属性)
ATTRは式の値がすべての行で単一の値になっている場合は、式の値が返され、それ以外の場合はアスタリスク(*)が返されます。

f:id:kaodora:20210104165422p:plain
有効な計算になりました!

kaodora.hatenablog.com

解決方法③LOD計算、表計算を使う

計算式にするとLOD計算は非集計表計算は集計になります。

例えば、サンプルスーパーストアのデータから2015年1月1日の製品数を取り出したいとします。上の例のようにATTRを入れてみても結果が出ません。

f:id:kaodora:20210104175018p:plain
f:id:kaodora:20210104175115p:plain
それでは、[製品id]をLOD計算にします。f:id:kaodora:20210104175600p:plain
f:id:kaodora:20210104175714p:plain
今度はうまく出せました!
これはオーダー日が2015/01/01だったら、カテゴリ・オーダー日ごとの製品idのカウント(個別)を返してね、という式になります。

まとめ

LOD計算自体の説明はまたいつかどこかで説明できたらいいなと思います(不安)

とにかく集計と非集計が混在できないとTableauに言われたら、

  1. 集計か非集計に合わせる
  2. 属性で無理やり集計にする
  3. LOD計算や表計算を活用する

以上のことをして、サクサク解決しましょう!

f:id:kaodora:20210104184936p:plain(ワンピース1000話おめでとう!)