パラメータ選択月の前 2 カ月を指定する方法

フォーム

質問

フル機能版フォームで、会計年度と相対期間をパラメータで指定し、指定月と前 2 カ月分を表示するフォームを作成したいのですが、 指定月は「実行時の視点メンバ」を指定すればよいと思いますが、前月・前々月を指定する方法がわかりません。

  • パラメーター指定:会計年度(年)、相対期間(月)

売上高 実行時の視点メンバの前々月 実行時の視点メンバの前月 実行時の視点メンバ月

商品 A

商品 B

商品 C

回答

実行時の視点メンバ」を基準として相対的に期間や年度を指定するには、メンバリストを用います。具体的には以下いずれかの方法をとります:

  • 組み込まれているメンバリストを用います。相対期間ディメンションには「前期」「前期以前」「翌期」「翌期以降」というメンバリストが組み込まれています。会計年度ディメンションにも「前年度」「前年度」「翌年度」「翌年度以降」が組み込まれています。

  • 上記以外の条件、例えば「過去2か月(視点月を含まず)」といった条件で表示したい場合、自分でメンバリストを作ることができます。会計年度と相対期間のメンバリストでは、実行時の視点メンバを基準とする相対位置をもとにメンバを絞り込むことができます(@relative_position 関数を使用)。メンバリストは、フォーム内で作ることも、ディメンションに登録しておいてフォームの設計時にそのリストを指定することも可能です。

いずれの場合も、上記のメンバリストをもちいてフォーム上に「ループ」を作成し、その配下に列・行仕様を置けば、望まれる期間や年度の列・行を表示できます。

質問のように「指定月と前 2 カ月分を表示する」場合、後者の方法をとることになります。

なお、相対期間の場合、ひとつのメンバリストで並べて意味があるのは1年度内の期間だけです。例えば、メンバリストで「過去2か月(視点月を含まず)」と指定していても、視点メンバが5月ならば、(4月始まりの場合は)メンバリストに含まれるべきは4月だけとなります。これでよいケースが多いですが、時に、前年度に遡って並べたいという場合もあります。

3月をあえて含める条件指定も可能ですが、これは意図に合いません。意図は、3月の列には前年度値、4月の列には当年度値を表示することですが、3月と4月がひとつのループに含まれているなら、会計年度を切り分けて適用することはできないからです(その他に、3月が4月の後に並んでしまうという問題もあります)。

意図したように表示するには、前年度のループと当年度のループを設けた上で、前者の配下には前年度内で表示すべき期間のループ(この場合3月が含まれる)、後者の配下には当年度内で表示すべき期間のループ(この場合4月が含まれる)を置きます。前年度と当年度それぞれについて、会計年度と相対期間の二重ループを設けるという形です(当年度用会計年度ループは省略してもかまいません。省略すれば、列・行には実行時の視点メンバである会計年度が適用されるためです)。

この場合の相対期間メンバリストの指定について、以下で解説します。前年度用と当年度用の2つの相対期間メンバリストが設けられます。前年度内の期間は表示しないでよい場合はもちろん、当年度用のループとメンバリストだけで十分です。

相対期間のメンバリスト(4月始まりの場合)

過去 2 ヶ月(前年度用)
@relative_position >= 10

過去 2 ヶ月(当年度用)
@relative_position >= -2 and @relative_position <= 0

フォーム設計

(繰り返し 会計年度-前年) (繰り返し 会計年度-当年)
(繰り返し 過去 2 ヶ月(前年度用)) (繰り返し 過去 2 ヶ月(当年度用))

解説

前年分と当年分のリストを分けて表示する理由は、例えば視点メンバが 4 月の場合

売上高

2月(前年分)

3月(前年分)

4月(当年分)

商品 A

商品 B

商品 C

上記のように前年度分の月をこの順番で表示する必要があるためです。

まず、過去 2 ヶ月(当年度用)のメンバリストについて、 + 視点メンバが 6 月の場合、メンバリスト式で利用できる @relative_position がどのような値をとるか考えてみます。

  • 視点メンバが 6 月の場合
    視点メンバからの過去 2 ヶ月なので 4 月、5 月、6 月です。

4月

5月

6月

7月

8月

9月

10月

11月

12月

1月

2月

3月

-2

-1

0

1

2

3

4

5

6

7

8

9

@relative_position の範囲としては -2 〜 0 の範囲が該当するので、メンバリストの式としては以下のような計算式になります。

@relative_position >= -2 and @relative_position <= 0

これは視点メンバが 7 月 〜 3 月の場合でも成り立ちます。

一方で、過去 2 ヶ月の月が前年度にまたがるようなケース、例えば視点メンバが 5 月の場合 @relative_position がどのようになるか考えてみます。

  • 視点メンバが 5 月の場合
    過去 2 ヶ月(当年)で表示したいのは 4 月と 5 月です。

4月

5月

6月

7月

8月

9月

10月

11月

12月

1月

2月

3月

-1

0

1

2

3

4

5

6

7

8

9

10

@relative_position で言うと -1 と 0 になり、先程の計算式でまかなうことができます。
視点メンバが 4 月の場合も同じことが成り立ちますので、過去 2 ヶ月(当年度用)のメンバ式としては以下で定義することができます。

@relative_position >= -2 and @relative_position <= 0

次に、過去 2 ヶ月(前年度用)のメンバリストですが、こちらは視点メンバが 4 月の場合と 5 月の場合だけメンバが表示されます。(それ以外の場合は過去 2 ヶ月(当年)だけで表示することができます)

  • 視点メンバが 4 月の場合
    2 月と 3 月を表示

4月

5月

6月

7月

8月

9月

10月

11月

12月

1月

2月

3月

0

1

2

3

4

5

6

7

8

9

10

11

  • 視点メンバが 5 月の場合
    3 月を表示

4月

5月

6月

7月

8月

9月

10月

11月

12月

1月

2月

3月

-1

0

1

2

3

4

5

6

7

8

9

10

以上を考えると、過去 2 ヶ月(前年)のメンバリスト式としては

@relative_position >= 10

となります。
視点メンバが 6 月以降の場合、@relative_position は最大でも 9 でしかないのでリストにはなにも表示されません。

相対期間のメンバリスト

過去 2 ヶ月(前年)
@relative_position >= 10

過去 2 ヶ月(当年)
@relative_position >= -2 and @relative_position <= 0

フォーム設計

(繰り返し 会計年度-前年) (繰り返し 会計年度-当年)
(繰り返し 過去 2 ヶ月(前年度用)) (繰り返し 過去 2 ヶ月(当年度用))

このように設定すると、ご期待通りのフォームを設計することができると思います。
お試しください。