はじめに
今まで良く分かっていなかったTableauの表計算関数PREVIOUS_VALUEについて、
勉強する機会があったのでご紹介します。
過去にも本BLOG内で記事が公開されていますのでこちらもご参照ください。
https://blog.truestar.work/tableau/20160906/615/
PREVIOUS_VALUEについて
良く分からない関数PREVIOUS_VALUEとは
日本語のTableauの説明曰く
"前の行のこの計算の値を返します。現在の行がパーティション内の最初の行の場合は指定された式を返します。"
とのことです…
この説明ではちょっと良く分からなかったのでざっくり言うと
- 最初の行は普通に計算する
- 二行名以降は一行前の計算結果を使う
という感じになると考えています。
この関数のすごいところは"一つ前のみという制約付きだが計算結果を再加工出来る"ところだと思います。
LOOKUP、RUNNING_SUMとの違い
LOOKUPやRUNNING_SUMでも出来ると思うかもしれませんが、
LOOKUPの場合
下図はよくあるLOOKUP(SUM([Sales]),-1)の結果ですが、
X個前の計算結果を引っ張ってくるだけで1個前+2個前+3個前+…のように複数の事前に計算した結果を使用するのは難しいです。
RUNNING_SUMの場合
下図もよくあるRUNNING_SUM(SUM([Sales]))の結果ですが、
累計なのでこちらは1行目から現在の行までの足しあげしか出来ないので計算過程での再加工は出来ません。
PREVIOUS_VALUEの使いどころ
PREVIOUS_VALUEはどんな時に使うのか
一つ前の計算結果を加工して次の計算で、次の計算でと使い続けたい時です。
ブログを書いていながら正直使い道を思いついていません…
累計を計算したい場合はRUNNING_SUMを使えばいい
○個前の結果(前年の数値など)を計算したい場合はLOOKUPを使えばいい
とシンプルな代用品があるため使いどころが難しいです。
PREVIOUS_VALUEの使い方
Tableau Publicにサンプルワークブックを置きましたので、初期値やパラメーターを変化させると数値がどう変わるか見てみてください。
PREVIOUS_VALUEを単体で使うことはほとんどありません。
基本はPREVIOUS_VALUE()の前か後に計算式を置くことで使用します。
PREVIOUS_VALUE()の()内は一行目に使われる数値が入るので、最初に出したい計算式や固定の数値を入れます。
PREVIOUS_VALUE()の前後には常に使われる計算式や固定の数値を入れます。
実際の挙動は↑に置いてあるワークブックを見ていただければ分かりやすいと思います。
上に置いてあるワークブックのメジャーの三列目以降は以下の定義で数値が計算されます。
- PREVIOUS_VALUE([初期値]):
全ての行に初期値が入る。
- PREVIOUS_VALUE([初期値]) + 1:
一行目に[初期値] + 1、二行目に一行目 + 1、三行目以降も二行目同様に一行前 + 1が入る。
- PREVIOUS_VALUE([初期値]) * [パラメーター]:
一行目に[初期値] * [パラメーター]、二行目に一行目 * [パラメーター]、三行目以降も二行目同様に一行前 * [パラメーター]が入る。
- PREVIOUS_VALUE([初期値]) + SUM(Sales):
一行目に[初期値] + SUM(Sales)、二行名以降は一行前の結果 + SUM(Sales)が入る。
初期値に0を入れれば累計と一緒になります。
- PREVIOUS_VALUE([初期値]) * SUM(Sales):
一行目に[初期値] * SUM(Sales)、二行名以降は一行前の結果 × SUM(Sales)が入る。
初期値に1を入れれば累積と一緒になります。
- PREVIOUS_VALUE([初期値]) + SUM(Sales) * [パラメーター]:
一行目に[初期値] + SUM(Sales) * [パラメーター]、二行名以降は一行前の結果 + SUM(Sales) * [パラメーター]が入る。
- SUM(Sales) * [パラメーター]:
一行目にSUM(Sales) * [パラメーター]、二行目以降は一行前の結果 * [パラメーター]が入る。
以上
PREVIOUS_VALUEについてでした。
正直使いどころは難しく限定される関数ですが、Viz作成の一助になれば幸いです。
i.tsuruoka