プロンプトでの絞り込みに合わせた出力粒度・階層の切り替え【Cognos Analytics】

## 概要
データを絞り込む条件について、粒度を適宜変更しリストを表示したい際に、ドリルアップ/ドリルダウンすることで粒度・階層を切替え出力する場合と、プロンプトの選択のみによって粒度・階層を切替え出力する場合が考えられます。
ドリルアップ/ドリルダウン操作はHTML出力でのレポートに限定されるため、PDF等を想定とした場合にはプロンプトを活用した出力方法がとられます。ここでは、「プロンプトの選択のみによって粒度・階層を切替え出力」する手順をご紹介します。
## 手順
新規でレポートを作成。ソースの選択をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/adb2e771-387e-bf3c-d320-f42b58d92ffb.png)
今回は、GOデータウェアハウス（クエリー）をサンプルデータとして選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/4a968a07-16a0-5bd2-4efe-9916406b4cab.png)
次に、クエリーを作成していきます。クエリー画面を開き、＋記号のメニューからクエリーを追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/f3913f59-31ca-809a-6768-115d37ec5fb4.png)

このクエリー1を、階層が上位の組織にある販売実績を取得するクエリーとします。
GOデータウェアハウス（クエリー）＞販売とマーケティング（クエリー）＞販売（クエリー）から、組織名（レベル1）、製品、収益をデータアイテムとして追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/0832beff-292c-922c-c0fe-8c923500d02c.png)

次に、プロンプトで選択された指定の階層でどの組織名で絞り込むかを反映させるフィルタ条件を定義します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/15a2f93c-d896-15eb-018c-26a1c532b8b3.png)

式の定義は[組織名 (レベル 1)] in ?P_組織名1?　として、後に追加するプロンプトにより渡されるP_組織名1パラメータの値でフィルタをかけます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/af5dbd69-8f9f-763d-4090-447f041ac732.png)

選択していない階層では絞り込みをしないことになるため詳細フィルタ―のプロパティーを開き、使用方法を必須→オプションへ変更。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/685cdce2-9449-395c-97bf-c0ea8fb54f0e.png)

組織名（レベル1）としていたクエリー1と同様にして、組織名（レベル2）であるクエリー2、組織名（レベル3）であるクエリー3を作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/e871a165-8656-4535-f5f8-dd57ef386969.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/78e22981-c242-9f95-6555-f83275519fb0.png)

今回は、3つの階層をそれぞれ出力するために3つのクエリーを作成した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/189f76c3-34f1-dde0-f1d1-14a11c382634.png)

次に、出力ページを作成する。ページ1の画面を開き、値のプロンプトを3つ配置する。新規パラメータを「P_組織名1」で作成し次へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/f434d6b0-3798-5908-9376-0fb77fdf5b37.png)


フィルターを作成はOFFのままで次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/03ab5006-55c5-8440-cbe7-6e24178f15a4.png)

クエリーを新規作成をオフで終了。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/cc5b7c7a-5d22-7cd1-0942-bb306a39c219.png)

値のプロンプトのプロパティ、クエリーをクエリー1とは異なるクエリー「組織名(レベル1)一覧」、使用する値を組織名（レベル1）。
必須はオフ、複数選択はオンとする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/60e02c51-5540-cf57-391c-b3811b167fa6.png)

クエリー2、クエリー3のため、同様の操作でクエリー2、クエリー3をフィルタする値のプロンプトを配置。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/546ac805-088e-67fd-ee2f-1a73e1889016.png)

また、これらのプロンプトを実行するためのプロンプトボタンを終了タイプで配置する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/1f3d4a59-bf4c-8927-19d0-10f4f5241e02.png)

プロンプトおよびプロンプトボタンの下に、選択した階層での製品別の収益を出力するため、下に条件ブロックを配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/3261f7c8-5006-e65b-eeb4-34f39345d2aa.png)

条件ブロックのプロパティ ブロック変数のプロンプトを開き「新しいブール値変数」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/b8d39330-cbaa-fbec-05b5-56cfd1665c83.png)

変数画面にて、上で定義した「階層1」変数の定義を編集。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/888932d9-df27-be6b-6fba-fadbcbe70dec.png)

式の定義には下記を設定。
~~~ 
ParamValue('P_組織名1') is not null and
ParamValue('P_組織名2') is null and
ParamValue('P_組織名3') is null
~~~ 
P_組織1は1つ目のプロンプトから渡されたパラメータであり、こちらが入力され他2つが入力されていない場合には、変数「階層1」は「はい」とセットされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/d2c28aa6-2d89-2add-0b02-0c25c9c765c6.png)

階層1と同じく、階層2の変数を作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/6d7b7a3f-2a38-a4e2-ac5e-96180916ba00.png)

階層3も作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/15063fb9-c2f6-b525-2ed4-a1f7c2aac909.png)

ページ1画面に戻り、条件ブロックプロパティのブロック変数に階層2、階層3をそれぞれ割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/ec470a96-4c77-18cb-8281-c8fcc9851a3c.png)


条件ブロックの現ブロックプロパティがいいえになっている状態では条件ブロックににコンテンツを配置していないため、何も表示されません。
先程定義した変数が「はい」状態のときを定義します。
現ブロックをはいに設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/193a8cf3-f279-9546-48e4-f8a8f38aaa7b.png)

条件ブロックにリストを配置。
クエリーは、階層1の情報を出力したい条件ブロックのため、クエリー1をセット。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/3fd9c501-e87e-ed67-14ab-c8645b1fd5bf.png)

このリストに、クエリータブに見えるクエリー1の項目3つをドラッグアンドドロップで追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/91760037-57e5-20ba-e8ce-3d914f0c6769.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/8cd086a0-624f-0408-0b3f-495ffc108aef.png)

階層2，3も同様にリストを配置。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/a33ec158-2dd5-882d-a3ff-25361c655c16.png)

これで一通りの準備は完了です。レポートを実行。
アジアとアメリカでフィルタを掛けます。1つ目のプロンプトのみを選択しているため、出力はクエリー1の階層1の内容が出力されることになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/302611f5-a361-156e-f568-11af78c963ea.png)

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/3aaff6f1-3738-fd93-deae-c0148099a1e0.png)


アジアおよびアメリカ地域での、Loa Angels支店とTokyo支店の収益を参照したい場合には
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/161293e4-5995-7ca3-ebd0-54bd567e43b1.png)

出力結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255563/292e0cb6-92c6-711b-963f-44405540e007.png)

アジア太平洋・アメリカ地域での出力から、より粒度が細かい支店での収益結果が出力されます。