SSRS で新規陽性者数の推移グラフを作ってみる【第6回】


第3回
からの続きです。現在できてるレポートを確認してみます。

現時点でのレポート

目標となるレポートに近づいてきました。今回はグラフ表示期間を切り替えられるようにします。

目標とするレポート

グラフ表示期間変更時の動作

本家サイトでグラフ表示期間を変更したときの動きを確認しました。表示期間を変更すると横軸の最小値と間隔が変わるようです。つまり、第3回で設定した「横軸のプロパティ」の値が、選択されたグラフ表示期間に応じて動的に変わる、というイメージです。まとめると以下の通りです。

グラフ表示期間最小値間隔間隔の種類
1年「情報更新日」- 12か月3
3か月「情報更新日」- 3か月1
1か月「情報更新日」- 1か月7
1週間「情報更新日」- 7日1
グラフ表示期間と横軸のプロパティとの関係

これを SSRS のレポートで実現するわけですが、SSRS のレポートはあくまでも静的なものを想定しているため、ボタンやコンボボックス等のインタラクティブな動きをさせるようなオブジェクトはありません。
このようにレポートの内容そのものに影響を与えるような値は「パラメータ」という機能を使って実現します。

パラメータの追加

動作がイメージし難いかもしれませんので、まずはパラメータの追加をやってみたいと思います。
左ペインの「パラメータ」を選択して右クリック→「パラメータの追加」を選択します。

パラメータの追加(1)

レポートパラメータのプロパティにて「名前」「プロンプト」「データ型」を設定します。

パラメータの追加(2)

次にパラメータの候補値を設定します。「使用できる値」で「値の指定」を選択し、以下のように候補値のラベルと値を設定します。今回、「パラメータの値」は「横軸の最小値を求めるために減算する整数値」とします。

パラメータの追加(3)

次にパラメータのデフォルト値を指定します。「1年」がデフォルト値なので、その値である「12」を指定します。

パラメータの追加(4)

これでパラメータの設定は完了です。この状態で「実行」ボタンでプレビューしてみてください。

パラメータの追加(5)

実物とはデザインが変わってしまいますが、レポート上部に設定したパラメータが現れたと思います。

尚、規定値を設定しているのですぐにプレビューされたと思いますが、規定値がない場合はパラメータを設定したあと「レポートの表示」をクリックすることで初めてレポートが表示されます。パラメータを変更したい場合も変更後に「レポートの表示」をクリックする必要があります。

パラメータ値で横軸プロパティを変更する

パラメータ定義ができたので、横軸プロパティをパラメータに合わせて変更するように設定していきます。グラフの横軸プロパティを開いて、各項目の「式」ボタン(fx)から式を直接入力します。

「最小値」

最小値は冒頭に書いたように「情報更新日」からパラメータで指定された月数または日数を減算することで求めます。パラメータ値が 7 (1週間)は「日数」で、それ以外は「月数」とみなしてパラメータ値を減算すれば良いので、以下のような式に変更します。

=DateAdd(
     IIF(Parameters!グラフ表示期間.Value=7
        ,DateInterval.Day
        ,DateInterval.Month)
   , -Parameters!グラフ表示期間.Value
   , Variables!情報更新日.Value)

「間隔」

間隔に設定する数値は、こちらも冒頭でまとめた通りです。12(1年)なら"3″、3(3か月)なら"1″、1(1か月)なら"7″、7(1週間)なら"1″です。複数条件があると Swith の方が便利です。

=Switch(Parameters!グラフ表示期間.Value=12, 3
          , Parameters!グラフ表示期間.Value=3, 1
          , Parameters!グラフ表示期間.Value=1, 7
          , True, 1)

間隔の種類

こちらも冒頭の通り。12(1年)または 3(3か月)なら"月"、それ以外なら"日"です。
このプロパティは設定画面上は「月」とか「日」とかをコンボボックスで選択するようになっていますが、実際には対応する定数値があります。それを確認するには「間隔の種類」のところにある式ボタン(fx)をクリックしてください。以下のように「定数」に値の種類がすべて表示されています。

定数の確認

これより、「月」の場合は"Months"、「日」の場合は"Days"を指定すれば良いことがわかります。
したがって式は以下のようになります。

=IIF(Parameters!グラフ表示期間.Value =12
  or Parameters!グラフ表示期間.Value = 3
   , "Months"
   , "Days" )

動作確認

軸の設定もできたので「実行」ボタンでプレビューします。まず初期表示(1年)です。

動作確認(1)

次にグラフ表示期間を「3か月」に変更して「レポートの表示」ボタンをクリックします。

動作確認(2)

次は「1か月」です。

動作確認(3)

最後に「1週間」です。

動作確認(4)

あれれ、、、、「情報更新日」が 9/20 なのに横軸の「最大値」が 9/21 になっていますね。

最大値は「自動」で設定していましたが、どうやらデータセット内の最大値+1が表示されているように見えます。ということで最大値も式を指定するようにしましょう。横軸のプロパティから「最大」の式を以下のように設定します。

=Variables!情報更新日.Value

その上で再度プレビューから、グラフ表示期間「1週間」でレポートを確認します。

動作確認(5)

正しく表示されました。今回はここまでです。
次回は最終回の予定。「都道府県」を選択できるようにしようと思います。

BISQLServer,SSRS

Posted by takmaru