3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Tableau 表計算を理解する① 簡易表計算

Last updated at Posted at 2021-11-24

前置き

Tableauでは、簡易表計算メニューでMeasureの値をチャチャっと計算してくれます。普段何気なく使っていますが、実際どのような計算を行っているのか気になってので調べてみました。
image.png
 [調べ方] 簡易表計算を選択した後、シェルフの部分をダブルクリックして計算式の中身を表示させました。簡易表計算する対象は売上合計SUM([利益])としました。
image.png
image.png

累計

 累計はSUM([利益])をRUNNING_SUM関数にかけています。RUNNING_SUM関数はパーティション内の最初の行から現在の行までの指定された式の累積合計を返す関数です。

基準 計算式
- RUNNING_SUM(SUM([利益]))

 差は簡易表計算で選択した後、さらに基準を変更することで計算式の中身が変わります。基準の初期値は前の値になっています。
image.png
 各基準ごとの計算式は下表の通りです。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)

image.png

年間累計

 年間累計はディメンションにがある場合のみ選択できます。計算式は累計と同じですが、次を使用して計算の値が最初からのディメンション(下図の例ではオーダー日)になっています。

基準 計算式
- RUNNING_SUM(SUM([利益]))

image.png

複合成長率

 複合成長率の割合も簡易表計算で選択した後、さらに基準を変更することで計算式の中身が変わります。基準の初期値は同じく前の値になっています。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

前年比成長率

 前年比成長率も年間累計と同じくディメンションにがある場合のみ選択できます。計算式は差の割合と同じですが、次を使用して計算の値が最初からのディメンションになっています。

年間累計の成長率

 年間累計の成長率は計算式を確認しようとすると下記のようなメッセージが出るため直接計算式を見ることはできません。
image.png
 そこで表計算の編集画面を開いてみると、プライマリ計算で年間累計を計算した後にセカンダリ計算で差の割合を計算しているようです。
image.png
 念のため確認してみます。下図は上のグラフに年間累計の成長率、下のグラフに年間累計を表示しています。2014Q1の年間累計の成長率が46.11%、年間累計は2013Q1が5,563k、2014Q1が8,128Kで、(8,128K-5,563k)/5,563K=46.11%となり、年間累計差の割合となっていることがわかります。
image.png

補足:LODの変更

 どの簡易表計算も、次を使用して計算で表計算をする際の基準を変更することができます。この操作によって表計算のLODを変更できます。
image.png
 下の図は次を使用して計算を表(横)からペイン(横)に変えた時の結果です。計算の式自体は変わっていませんが、オーダー日の年のチェックが外れていることがわかります。
image.png

終わりに

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

 

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?