はじめに
MotionBoardでは事後計算項目という機能を使用して、データを集計した後にMotionBoardサーバーで再計算することができます。
データ分析において、過去年度の実績との差分や比率を算出するというのはよくあるケースですよね。
そんなときには事後計算項目がうってつけですが、計算対象となる集計項目の値がNullになる場合は計算結果が思い通りにならないことがあります。
ただし関数を追加することで正しく演算できるようになるので、その対処法を紹介します。
【参考】MotionBoardとは
様々なデータを1つの画面上で統合し分析できるBIツールで、 チャートの種類も多くデータを直感的に把握することができます。 ※詳しくはウイングアーク1st社のHPを参照 [ウイングアーク1st株式会社 MotionBoard](https://www.wingarc.com/product/motionboard/index.html)前提
サンプルデータとしてかなりシンプルな取引明細を用意しました。
取引先別の今年度実績と前年度との差分を集計したいのですが、
C社は今年度から新規で取引を開始したため前年度分のデータは存在しません。
データはないけど前年度実績を0と置き換えて差分を算出するというのが今回の肝となります。
事後計算項目を作ってみる
ベースとなる集計表を作りました。
取引先別の各年度の実績を集計しています。
2020年度のC社の実績は0と表示されていますが、見かけだけで裏側はNullです。紛らわしいですが。。
続いて事後計算項目を作ります。
【参考】事後計算項目を作成する
なお、SeriesPrev([項目名])
はひとつ前の列の値を参照する関数です。
ここではSelf([実績])-SeriesPrev([実績])
とすることで、2021年度の実績から2020年度の実績を引き算するようにしています。
結果を見てみましょう。
C社の差分は800になって欲しいところですが0になっていますね。ちなみにこの0も中身はNullです。
MotionBoardに限らず一般的に言えることですが、演算の中にNullが入っていると結果もNullになります。
そのため800 - Null
という計算結果はNull(しつこいですが見かけ上は0)になります。
NVL関数を使う
理屈がわかったところでNVL関数を使った対処法を紹介していきます。
NVL関数は、引数1がNullの場合に引数2の値に置き換える関数です。
【参考】数学関数・NVL関数
NVL(引数1,引数2)
この関数を使用して、計算式を以下のように書き換えました。
Self([実績])
とSeriesPrev([実績])
をそれぞれNVL関数で囲んだうえで引き算をしています。
NVL(Self([実績]),0)-NVL(SeriesPrev([実績]),0)
改めて結果を確認してみましょう。
差分がきちんと算出されました!!
NVL関数によって2020年度のC社の実績値が0に置き換わったため、
800 - 0 = 800
の計算が行えたという仕組みです。
おわりに
MotionBoardの事後計算項目は、データを集計した後にMotionBoardサーバーで再計算する機能です。
今回のように「そもそもデータが存在しないから集計値がNullになってしまう!」という場合でも、0に置き換えることで演算処理が可能になります。
NVL関数以外にも使用できる関数はたくさんあるので困ったときはこちらを参考にしてみましょう。