Cognos Analytics 動的に表示する数値データアイテムを選択する際に階層的に選択させる


動的に表示する数値データアイテムを選択する際に階層的に選択する

タイトルだけでは何の事やらと思いますが、以下のようなイメージです。
リストの2列目に「収益」となっている列を、プロンプトで動的に表示データアイテムを選択する実装のケースで、選択可能なアイテム数が多すぎる場合に、レベル1で「売上」というカテゴリを選択すると、レベル2のプロンプトではそのカテゴリ配下のデータ項目のみに絞り込んで表示させて、レベル2で選択したアイテムをリストに表示させる、という実装です。

要するにカスケードプロンプトとcase文の組み合わせになりますが、他の人へのやり方のガイドついでに投稿しておきます。

手順

この様なテーブルを自作します。
PL2は、おなじみのGreat Outdoors Warehouseサンプルの数値データ名ですが、PL1は勝手に作ったカテゴリの様なものです。

Framework Managerにテーブルを取り込みます。

Business Viewに図のようにそのままクエリーサブジェクトを作成して、Presentation Viewにショートカットを作成して、パッケージを発行します。

レポートを新規作成し、発行したパッケージを選択し、数値プロンプトレベル2用に「値のプロンプト」を配置し、パラメーター名を指定します。

フィルターのチェックを外して「次へ」。

使用する値は、数値プロンプトレベルの「PL2」。

同様に数値プロンプトレベル1用の「値のプロンプト」を配置しパラメーターを指定。

フィルターを「PL1」で作成。※プロンプトレベル2のクエリーにフィルターかける事になる。

使用する値に「PL1」。

プロンプト1は「自動送信」=「はい」。

デフォルトの選択肢に「売上」。

プロンプト2に「自動送信」=「はい」。

「カスケード・ソース」にプロンプト1のパラメーターを指定。

デフォルトの選択肢で「数量」。

リストを置き「製品ライン」を配置。

リストのクエリーに「数値データ」アイテムを作成し、以下のように記載。

case
when ?pPromptL2? ='数量' then [販売 (クエリー)].[販売の実状].[数量]
when ?pPromptL2? ='単位原価' then [販売 (クエリー)].[販売の実状].[単位原価]
when ?pPromptL2? ='単価' then [販売 (クエリー)].[販売の実状].[単価]
when ?pPromptL2? ='単位販売価格' then [販売 (クエリー)].[販売の実状].[単位販売価格]
when ?pPromptL2? ='収益' then [販売 (クエリー)].[販売の実状].[収益]
when ?pPromptL2? ='総利益' then [販売 (クエリー)].[販売の実状].[総利益]
when ?pPromptL2? ='製品原価' then [販売 (クエリー)].[販売の実状].[製品原価]
when ?pPromptL2? ='計画収入' then [販売 (クエリー)].[販売の実状].[計画収入]
end

「数値データ」をリストに配置。これで完成。

動作確認

レポートを実行した状態。「数量」がデフォルトで選択され、リストにも表示されている。

プロンプトレベル1を「価格」で選択してみる。

プロンプトレベル2で選択可能なアイテムが、価格系に絞られている。「単価」を選択。

リスト内の数値アイテムが「単価」になる。

プロンプトレベル1で「売上」を選択すると、レベル2は売上系の選択肢に絞り込まれる。

「収益」で表示。

以上です。ご活用下さい!