[Looker] running_totalを下から算出もしくは逆から計算 #looker

逆転累計
2020.09.10

Lookerのmeasure typeやテーブル計算で利用できるrunning_totalですが、計算はソート順に上から累計を計算します。

そのため、running_totalの値自体は日付の古い順から足していきたいが、表示としては新しい日付を先頭で表示させたい場合、一工夫必要になります。

今回は、昇順日付で出した累計を降順日付で可視化しても、値の計算方向を維持する(下から足算していく)方法をご紹介します。

running_total

指定した数値列の累計を出します。

reverse running_total

今回はこちらの記事の方法で、running_totalを逆転させてみます。

下の図の累計を、日付のソートを降順にしても維持します。

確認のため、何もしないで日付のソートを降順にしたのがこちらです。

見事にソート順に累計が出ています。

早速上記の記事に載っている計算式を適用してみます。

見事、逆転できました!

念のため、昇順の時と降順の時の値を比べてみましたが、問題ありませんでした!

可視化の際に、累計の行は表示させたくないので、列名横のギアマークから「ビジュアリゼーションで非表示にする」を選択します。

VISUALISATIONには累計の行が表示されなくなりました。

おまけ

どんな計算をしているのか、式を見ただけでは理解が出来なかったので、分解して表計算に出してみました。

reverse running_totalの計算式はこちらです:

if(row()=1 # 行番号が1かどうか?
   # yesの場合
   , sum(measured_value)
   # noの場合
   , sum(measured_value) - offset(running_total, -1)

if文はif(yesno_expression, value_if_yes, value_if_no))でyesno_expressionの式に対して合致している場合にはvalue_if_yesを、合致しない場合にはvalue_if_noの値を返します。

row()は、現在の行番号を返します。なので、上記計算式の1行目は、その行が1行目かどうかを聞いています。

まずは、行番号が1かどうか?を確認してみます。

1行目だけがYesと出ました。

そして、running_totalの1行目は対象行の総和のため、1行目ならば累計対象の行の総和を表示させています。

2行目以降は、降順で出したrunning_totalを1行offsetしたものを累計対象の総和から引けばいいと言う算段です。