どこでも見れるメモ代わりに記事化。
データソースは「サンプル - スーパーストア.xls」を使用する。
「オーダー日」の三か月前までの売上を集計する
■「オーダー日」の最新日を取得する
以下の計算フィールドを作成する。
・タイトル
最新オーダー日
・計算式
{fixed :MAX([オーダー日])}
LOD関数を使用しないと最新日の定義が集計単位ごとにことなってくる。はず。。
■三か月前の売上を集計する
最新オーダー日を使用して、そこから3か月前までの売上を集計する計算フィールドを作成する。
・タイトル
過去3か月売上
・計算式
IF DATEDIFF('month',[オーダー日],[最新オーダー日]) < 3 AND DATEDIFF('month',[オーダー日],[最新オーダー日]) >= 0 THEN [売上] END
とりあえず計算式が正しいことを確認するために行に「オーダー日」、テキストに「過去3か月売上」を入れて確かめてみる。
「2021/12/31」を最新日として過去三か月間の売上のみ表示されていることから問題なさそうだ。
あとは使用したいように使う。
例えば、「地域」を行に設定して、テキストに「過去3か月売上」を入れれば各地域ごとの三か月売上が表示される。
過去90日間の売上を集計する
集計の目的によりけりだが、過去三か月の定義を90日間とすることもできる。
その場合は以下のような計算フィールドが考えられる。
・タイトル
過去3か月売上(90日)
・計算式
IF DATEDIFF('day',[オーダー日],[最新オーダー日]) <= 90 AND DATEDIFF('day',[オーダー日],[最新オーダー日]) >= 0 THEN [売上] END
過去90日という集計の仕方だと以下のように月に従って集計を行うわけではなくなる。
同様に地域別に出すと以下のようになる。
表示範囲をパラメータ指定できるようにする
先ほどの計算式を使って、パラメータで集計範囲を指定できるようにする。
実施したいことによっていくつもやり方があると思う。
基準月を指定する
元々の計算式は最新オーダー日(2021/12/31)基準で過去三か月を決めていたが、これを基準月が選択できるようにする。
DATEDIFF
関数を使用した方法では、日付を選択する方法やパラメータを差分の比較数値側に適用する方法などいろいろ考えられるが、今回は日付(月)を選択する方法にする。
途中無理やり感があったのでもっといい方法があるかもしれない。
計算フィールドを新たに追加する。
「オーダー日」の最新日の月初(一番早くオーダー日が発生した日)を取得する。
・タイトル
最新月
・計算式
{fixed :MAX(DATETRUNC('month',[オーダー日]))}
次にパラメータを作成する。
実現したいことによって変える必要があるが、例えば以下のようなものが考えられる。
【プロパティ】
・データ型:日付
・ワークブックを開いたときの値:最新月
・表示形式:YYYY年MM月
・許容値:リスト
【値のリスト】
「ワークブックを開くとき」を選択
「オーダー日」を選択
データが更新されることを前提として、最新月が最初に表示されるように考慮している。(はず。。。)
「過去3か月売上」の計算フィールドを以下のように修正する。または作成し直す。
・計算式
IF DATEDIFF('month',[オーダー日],[基準月]) < 3 AND DATEDIFF('month',[オーダー日],[基準月]) >= 0 THEN [売上] END
行に「地域」を追加、テキストに「過去3か月売上」を追加、「基準月」パラメータを表示すると以下のようになる。
「基準月」のパラメータを変えると以下のように集計値も変化する。
ちなみにワークブックのテキストは以下のようにパラメータを含めることができる。ということを初めて知った。
パラメータは他にも試そうと思ったけど力尽きた。ここまでできればある程度は自由に作れそう。