Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
Masaki_Hamano
Employee
Employee

 

はじめに

時系列でのトレンドの分析を行う場合、日次や月次での集計を行うと変動幅が大きくカクカクした動きとなるため、滑らかな線で表示させてトレンドを分かりやすくするために、直近の過去12ヶ月を合計する移動12ヶ月計(Moving Annual Total: MATや、Rolling n-period Totalとも呼ばれます)や、それらの期間の平均(同様にMoving Annual Averageや、Rolling n-period Averageとも呼ばれます)を算出することが行われます。ここでは、RangeSumとRangeAvg関数を用いて、Qlik Senseでこれらの計算を行う方法をご紹介します。

 

準備

このエントリでは、「前月比や前年比、成長率などの算出-Above, Before」のエントリでご紹介したAbove関数を利用しますので、そちらをまだ読まれていない方はまずそちらをご参照ください。

サンプルデータを利用して、ご説明する操作を実際に試して頂くことができます。以下のリンクからサンプルデータをダウンロードし、ダウンロードしたZIPファイルを任意の場所に解凍してください。

>>サンプルデータ(店舗売上分析データ)のダウンロード

そして、新規アプリを作成してダウンロードしたZIPファイルに含まれるファイルを取り込んでください。

 

RangeSumの基本的な使い方

移動期間合計や移動期間平均を算出するには、RangeSum関数と「前月比や前年比、成長率などの算出-Above, Before」のエントリでご紹介したAbove関数等を組み合わせて行います。

ここでは、以下の形でAbove関数に2個の数値の引数を指定します。

Above(Sum([売上]),0,12)

 

2つ目の数値の「0」は自分自身のレコードを示しており、自分自身のレコードを含めて2つ目の数値に示されている「12」個分上の範囲に位置するSum([売上])の集計値(つまり過去12カ月分の集計値)を合計するということを行います。

ただ、この状態では12個の独立した値を保持していますので、これらの値をさらに一つの集計値にまとめます。それを行うのがRangeSumです。

RangeSum(Above(Sum([売上]),0,12))

 

そうすると、以下の形で過去12ヶ月分の売上が集計されます。ここで上記の「12」の値を「3」に変えれば過去3カ月分の集計を行えるなど、ここで集計する期間の長さを調整することができます。

image-119.png

 

また、RangeSumではなく、RangeAvg関数を利用すると、期間合計ではなく期間平均を算出することもできます。

RangeAvg(Above(Sum([売上]),0,12))

image-120.png 

 

軸の絞り込みや、2軸での対応など

軸の絞り込みや2軸以上を利用する場合などの対応は「前月比や前年比、成長率などの算出-Above, Before」のエントリでご紹介した方法と同様となります。

まず、以下の形でSET分析を追加して「年月」の選択を無視する形にすると、「2014-7」が選択で除外された場合でもこの月を含んだ形で移動12ヶ月計が計算されます。

RangeSum(Above(Sum({$<年月>}[売上]),0,12))

image1.png

 

以下の「年」「年月」といった形で2軸を設定している場合には上記の数式では年を跨って集計されないため、以下の形でTotalを追加する必要があります。

RangeSum(Above(Total Sum({$<年月>}[売上]),0,12))

image-122.png

 

また、同様のことを行うには以下の形でAggrを利用する方法もあります。

Sum(Aggr(RangeSum(Above(Sum({$<年月>}[売上]),0,12)),年月))

ただし、軸の並びが「年月」>「店舗」となっているが「店舗」ではなく「年月」の順で集計を行いたい場合はAggrを利用する必要があります。これは例えば以下の形で棒グラフを2軸でグループ化するような場合でも適用されますのでご注意ください。

Sum(Aggr(RangeSum(Above(Sum({$<年月>}[売上]),0,12)),店舗,年月))

image1.png

 

横方向での計算については、以下の形でAboveの代わりにBefore関数を利用する形となります。

RangeSum(Before(Sum([売上]),0,12))

 image-124.png

 

まとめ

以上、RangeSumやRangeAvgを使った移動期間合計や移動期間平均の算出の方法についてご説明させて頂きました。