TableauのLookUp関数とPreviousValue関数の違いを体感した件
背景
仕事で人工管理用のGSSをTableauで可視化する機会があり、その中で LookUp関数 と PreviousValue関数 の特性を体感しました。この経験を在庫管理など他の分野にも転用できると考え、備忘録として記事にまとめます。
実現したかったこと
以下の4つの要素を 縦軸 に、年月を 横軸 にしたクロス表およびグラフを作成したいと考えました。
- 前月繰越工数
- 当月供給(supply)工数
- 当月需要(demand)工数
- 空き工数
計算式は以下の通りです:
前月繰越工数 + 当月supply工数 - 当月demand工数 = 空き工数
ただし、以下の条件を考慮する必要がありました:
・1ヶ月目 には「前月繰越工数」は存在しない。
・前月が赤字の場合、「前月繰越工数」は0とする。
試行錯誤
1. LookUp関数での挑戦
初めに、LookUp関数 を使い「前月繰越工数」を取得しようとしました。
LOOKUP(SUM([工数]), -1)
この関数は、前月の値を取得できるものの、循環参照 が発生し、計算が成立しませんでした。
2. 表計算機能での挑戦
さらに、表計算を使い前月の値を計算に含めようとしましたが、赤字時は0にする条件 を設定できず断念しました。
3. PreviousValue関数の発見
そこで、PreviousValue関数 を試すことにしました。この関数を使うと以下が実現できます:
1ヶ月目 は指定した初期値を返す。
2ヶ月目以降 は1ヶ月前の計算結果を利用する。
具体的には以下のような計算フィールドを作成しました:
IF FIRST() = 0 THEN 0
ELSE
PREVIOUS_VALUE(0) + [当月supply工数] - [当月demand工数]
END
これにより、条件を満たした「空き工数」の計算が可能となりました。
4. LookUp関数の表示への有用性必要性
一方、「前月繰越工数」そのものの表示には LookUp関数 が必要でした。
PreviousValue関数 では、1ヶ月目の値を2ヶ月目以降も保持してしまうため、前月の値を正しく取得するには以下のような LookUp関数 が適しています:
LOOKUP([空き工数], -1)
まとめ
Tableauで「前月データの取得と計算」を行う際には、用途に応じて関数を使い分ける 必要性を体感しました:
LookUp関数:特定の月の値を表示する際に便利。
PreviousValue関数:ループ処理のような累積計算に適している。
これらの関数を適切に組み合わせることで、複雑な計算ロジックを実現できます。同じ課題に直面している方の参考になれば幸いです!