【クエリビルダ】プロンプトフィルター：出力アイテムで使用する

[【クエリビルダ】プロンプトフィルターを使いこなす](https://qiita.com/Miki_Yokohata/items/4551b136febdf8082802)記事に関連する投稿です。
プロンプト専用フィルターの使用例を紹介します。この使用例は実用的ではないでしょうが、基本となる考え方をご紹介できればと思います。

使用例では、SAP Business Oneデータモデルを使用し、プロンプト専用フィルターに渡した値を出力アイテムで使用してみます。

[Sharperlight](https://sharperlight.jp/)パブリッシャーでレポートを作成し、そのレポートのクエリ定義でプロンプト専用フィルターを使用してみます。
先ずは、[Sharperlight](https://sharperlight.jp/)アプリケーションメニューから**パブリッシャー**を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0811bf1d-3314-d35a-5952-41ae2a82107e.png)
**パブリッシャー**が起動したら`新規`ボタンで新しいレポートの作成を開始します。
# クエリの編集 #
`クエリを編集`ボタンで**クエリビルダ**を起動します。

`製品`、`Company`、`テーブル`を下図のようにそれぞれ選択します。選択したテーブルに付随する既定の必須フィルターが自動設定されます。それらはそのままの状態で使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6caa7f4b-e23c-7313-6018-f8659d478276.png)
## フィルターの定義 ##
この例では、`季節`を引数として渡します。よってひとつのプロンプト専用フィルターを準備します。
テキスト型を追加します。
クエリビルダのフィルター領域の右クリックメニューから**その他**のサブメニューを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b11b27fc-dd84-4adb-09b0-24477ceb409b.png)
サブメニューでは、様々なデータ型を選択することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/41f2d697-e8c7-1f7f-f231-f91b5bb32836.png)
### プロンプト専用フィルター : 季節 ###
フィルター領域にテキスト型のフィルターを追加します。フィルターの説明ダイアログが表示されるので、**季節**と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ca54d3c3-cde8-697e-1490-30a9ce85b237.png)
フィルターオプションダイアログを開き、`フィルター名`、`説明`、`1つの値のみ`オプションを下図のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d3f17e0e-6067-c6e6-12ec-4de36b7af6cf.png)
このようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1be4774a-c579-2949-e43e-457a0d2059b1.png)
## 出力アイテムの定義 ##
選択リストから以下のような列を出力アイテムとして設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/e2b1a00b-62f6-c2dd-60c5-f90f7ada32d3.png)
**Document Date**列を二つ出力アイテムに設定しています。上段のものは出力（表示）用で、**Year/Month**オプションを設定しました。下段のものは以下で追加する拡張表現で使用するためのもので、**Month**オプションを設定しました。
- **Year/Month**オプション: 2023/03/28 -> **2023/03**となります。
- **Month**オプション: 2023/03/28 -> **3** となります。

### 拡張表現:季節 ###
各行の季節を算出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a18f7a40-0bcf-c746-f143-76e8ffa928a8.png)
```
Switch( {%DocDat}
,1,"冬"
,2,"冬"
,3,"春"
,4,"春"
,5,"春"
,6,"夏"
,7,"夏"
,8,"夏"
,9,"秋"
,10,"秋"
,11,"秋"
,12,"冬"
,"該当なし" )
```
### 拡張表現:季節の色 ###
**プロンプト専用フィルター:季節**に渡された**季節**と合致する行の背景色を、**季節の色**で塗りつぶします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f8676ec8-511a-7d05-c276-1eb3238aa81e.png)
```
IIF({@季節}={%Season}
	,IIF({%Season}="冬"
		,"_format:bcolor[0,0]=#D3DBE2"
		,IIF({%Season}="春"
			,"_format:bcolor[0,0]=#6CBB5A"
			,IIF({%Season}="夏"
				,"_format:bcolor[0,0]=#73B8E2"
				,IIF({%Season}="秋"
					,"_format:bcolor[0,0]=#C37854"
					,"-"
				)
			)
		)
	)
	,""
)
```
`下段のDocument Date`、`拡張表現:季節`、および`拡張表現:季節の色`は、参照用であったり、色を塗るだけのものであり表示する必要がないので、ここでは非表示にします。
出力アイテムは最終的にこのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/dcf00691-9488-6f7e-a59a-4e5bc97b5743.png)
## クエリのプレビュー ##
`プロンプト専用フィルター：季節`に、**春**と入力して`プレビュー`ボタンを押します。
出力結果の背景色とDocument Date列の値を確認します。`プロンプト専用フィルター：季節`で指定した季節と同じ季節の行のみが、季節の色の背景を持っていれば正常に動いているということです。
<font color="Red">ここで注目することは、`プロンプト専用フィルター：季節`が、クエリのフィルターとして働いていないという点です。</font>
同じように**夏**、**秋**そして**冬**を確認してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8e1d836f-8e86-872c-64b5-affcfccfb748.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0a14ab8e-8b38-6f39-83f8-9a8ccd531fb6.png)
# レポートからの検証 #
公開レポートのダイアログに戻ったら、**コード**、**グループ**および**タイトル**を記入して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/714143a3-8b4d-5b53-3029-ba413a723230.png)
Sharperlightサービスを起動してブラウザで表示してみます。
このようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/19e1ebf0-d4db-c1ef-d6a9-285d4a6dac7f.png)
<br>
今回、実用的ではない例で記事を書いてみましたが、**プロンプト専用フィルター**の使い方とその動きをご紹介できたかなと思っています。

では、失礼します。