前置き
Tableauでは、簡易表計算メニューでMeasureの値をチャチャっと計算してくれます。普段何気なく使っていますが、実際どのような計算を行っているのか気になってので調べてみました。

 [調べ方] 簡易表計算を選択した後、シェルフの部分をダブルクリックして計算式の中身を表示させました。簡易表計算する対象は売上合計SUM([利益])としました。


累計
 累計はSUM([利益])をRUNNING_SUM関数にかけています。RUNNING_SUM関数はパーティション内の最初の行から現在の行までの指定された式の累積合計を返す関数です。
| 基準 | 計算式 | 
|---|---|
| - | RUNNING_SUM(SUM([利益])) | 
差
 差は簡易表計算で選択した後、さらに基準を変更することで計算式の中身が変わります。基準の初期値は前の値になっています。

 各基準ごとの計算式は下表の通りです。LOOKUP関数で{1つ前/一つ後/最初/最後}のSUM([利益])の値を取得し、自身のSUM([利益])から減算しています。
| 基準 | 計算式 | 
|---|---|
| 前の値 | ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), -1) | 
| 次の値 | ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), 1) | 
| 最初の値 | ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), FIRST()) | 
| 最後の値 | ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), LAST()) | 
差の割合
 差の割合も簡易表計算で選択した後、さらに基準を変更することで計算式の中身が変わります。基準の初期値は同じく前の値になっています。分子は差と全く同じで、それを{1つ前/一つ後/最初/最後}のSUM([利益])の絶対値で割った値になっています
| 基準 | 計算式 | 
|---|---|
| 前の値 | (ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), -1)) / ABS(LOOKUP(ZN(SUM([利益])), -1)) | 
| 次の値 | (ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), 1)) / ABS(LOOKUP(ZN(SUM([利益])), 1)) | 
| 最初の値 | (ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), FIRST())) / ABS(LOOKUP(ZN(SUM([利益])), FIRST())) | 
| 最後の値 | (ZN(SUM([利益])) - LOOKUP(ZN(SUM([利益])), LAST())) / ABS(LOOKUP(ZN(SUM([利益])), LAST())) | 
合計に対する割合
 TOTAL関数でSUM([利益])の合計値を計算し、自身のSUM([利益])をその値で割っています。
| 基準 | 計算式 | 
|---|---|
| - | SUM([利益]) / TOTAL(SUM([利益])) | 
ランク
 ランクはSUM([利益])をRANK関数にかけています。RANK関数はパーティション内の現在の行に対して標準の競争ランクを返します。同一の値には同一のランクが割り当てられます。昇順/降順の指定をしていないので、既定の降順になります。
| 基準 | 計算式 | 
|---|---|
| - | RANK(SUM([利益])) | 
百分位
 百分位はSUM([利益])をRANK_PERCENTILE関数にかけています。RANK_PERCENTILE関数はパーティション内の現在の行に対して百分位値のランクを返します。昇順/降順の指定をしていないので、既定の昇順になります。
| 基準 | 計算式 | 
|---|---|
| - | RANK_PERCENTILE(SUM([利益])) | 
移動平均
 移動平均はSUM([利益])をWINDOW_AVG関数にかけています。WINDOW_AVG関数の他の引数は-2と0で、初期値では自身の値、1つ前の値、2つ前の値の3つの値から移動平均を計算する設定になっています。この設定は表計算の編集から変更することが可能です。
| 基準 | 計算式 | 
|---|---|
| - | WINDOW_AVG(SUM([利益]), -2, 0) | 
年間累計
 年間累計はディメンションに年がある場合のみ選択できます。計算式は累計と同じですが、次を使用して計算の値が最初から年のディメンション(下図の例ではオーダー日)になっています。
| 基準 | 計算式 | 
|---|---|
| - | RUNNING_SUM(SUM([利益])) | 
複合成長率
 複合成長率の割合も簡易表計算で選択した後、さらに基準を変更することで計算式の中身が変わります。基準の初期値は同じく前の値になっています。POWER関数の最初の引数は差の計算式と全く同じなので、差をZN(1/(INDEX()-1))乗して1を引いた値になっています。
| 基準 | 計算式 | 
|---|---|
| 前の値 | POWER(ZN(SUM([利益]))/LOOKUP(ZN(SUM([利益])), -1),ZN(1/(INDEX()-1))) - 1 | 
| 次の値 | POWER(ZN(SUM([利益]))/LOOKUP(ZN(SUM([利益])), 1),ZN(1/(INDEX()-1))) - 1 | 
| 最初の値 | POWER(ZN(SUM([利益]))/LOOKUP(ZN(SUM([利益])), FIRST()),ZN(1/(INDEX()-1))) - 1 | 
| 最後の値 | POWER(ZN(SUM([利益]))/LOOKUP(ZN(SUM([利益])), LAST()),ZN(1/(INDEX()-1))) - 1 | 
前年比成長率
 前年比成長率も年間累計と同じくディメンションに年がある場合のみ選択できます。計算式は差の割合と同じですが、次を使用して計算の値が最初から年のディメンションになっています。
年間累計の成長率
 年間累計の成長率は計算式を確認しようとすると下記のようなメッセージが出るため直接計算式を見ることはできません。

 そこで表計算の編集画面を開いてみると、プライマリ計算で年間累計を計算した後にセカンダリ計算で差の割合を計算しているようです。

 念のため確認してみます。下図は上のグラフに年間累計の成長率、下のグラフに年間累計を表示しています。2014Q1の年間累計の成長率が46.11%、年間累計は2013Q1が5,563k、2014Q1が8,128Kで、(8,128K-5,563k)/5,563K=46.11%となり、年間累計の差の割合となっていることがわかります。

補足:LODの変更
 どの簡易表計算も、次を使用して計算で表計算をする際の基準を変更することができます。この操作によって表計算のLODを変更できます。

 下の図は次を使用して計算を表(横)からペイン(横)に変えた時の結果です。計算の式自体は変わっていませんが、オーダー日の年のチェックが外れていることがわかります。

終わりに
普段何気なく使っている簡易表計算ですが、改めてどんな計算をしているか調べることで理解を深めることができました。また、自分で表計算の計算式を作る際にも簡易表計算の式をベースに考えると良さそうです。

