TableauのFIXEDで、初歩的なところでハマったので共有します。
- FIXEDで集計したものをIIF文に入れて平均したものと、
- FIXEDの中身の時点でIIF文で条件を入れて平均したもの
は結果が変わります、という話になります。ちなみに私が元々やりたかったのは、後者でした。例えば、SuperStoreのサンプルデータで、顧客ごとの売上の平均を出したい。ただし、ロサンゼルスの顧客だけで集計したいみたいなときです。
データはこんな感じで、簡単のため3ユーザだけだったとします。

ほしい結果を確認しておきます。{ FIXED [Customer ID]: SUM([Sales]) }を平均で集計すると、ロサンゼルスは1,104.5です。

以下2種類の計算フィールドを作成します。それぞれ中身はこうなっています。
IIF({ FIXED })
IIF([City] == 'Los Angeles'
,{ FIXED [Customer ID]: SUM([Sales]) }
,NULL
)
{ FIXED IIF() }
{ FIXED [Customer ID]:
SUM(IIF([City] == 'Los Angeles', [Sales], NULL)) }
Customer IDがシート上でディメンションとして使われているときは結果は同じです。

Customer IDを削除すると、右の計算フィールドだけが正しい結果になりました。同じじゃないのですね。

TableauのLOD FIXEDは、全行に集計結果をもっているSQLのWindow関数と同じようなものだが、メジャーで集計するときとかは内部的に(今回の場合はCustomer IDで)GROUP BYをしてくれているということですね。



