【クエリビルダ】動的出力オプションを使ってみる

[Sharperlight](https://sharperlight.jp/)クエリビルダの動的オプションを使用してみます。
このオプションを利用するとフィルター値別に対象となるデータを並列に表示することができます。早速みていきましょう。
**カスタム定義のデータセット**を使用します。
[Sharperlight](https://sharperlight.jp/)のアップリケーションメニューからパブリッシャーを起動します。
グループ名とコードを決定したら、[新規]ボタンで新しい公開クエリを作成します。
![2022-04-05 Figure 01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/37a74062-82ef-ac8d-38fb-9fc3ba422959.png)
## カスタムデータセットの作成
データベースからデータを取得するのではなく、このサンプル用に簡単なデータセットを作成します。[製品]には、**システム**。[テーブル]には、**カスタム定義のデータセット**を指定します。
![2022-04-05 Figure 02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8161e979-f595-95e1-63a6-3cbfd514e135.png)
[データセットを定義]では、下記のデータを設定します。
```
"Id::Number" , "製品コード::String" , "製品名::String" , "売上日::Date" , "価格::Number" , "数量::Number" , "売上額::Number"
1 , "PT01" , "トースター" , "2022-03-01" , 1980 , 4 , 7920
2 , "PT01" , "トースター" , "2022-03-02" , 1980 , 3 , 5940
3 , "PT01" , "トースター" , "2022-03-03" , 1980 , 4 , 7920
4 , "PT01" , "トースター" , "2022-03-04" , 1980 , 5 , 9900
5 , "PT01" , "トースター" , "2022-03-05" , 1980 , 3 , 5940
6 , "PT01" , "トースター" , "2022-03-06" , 1980 , 1 , 1980
7 , "PT01" , "トースター" , "2022-03-07" , 1980 , 5 , 9900
8 , "PT01" , "トースター" , "2022-03-08" , 1980 , 3 , 5940
9 , "PT01" , "トースター" , "2022-03-09" , 1980 , 4 , 7920
10 , "PT01" , "トースター" , "2022-03-10" , 1980 , 2 , 3960
11 , "PT01" , "トースター" , "2022-03-11" , 1980 , 1 , 1980
12 , "PT01" , "トースター" , "2022-03-12" , 1980 , 5 , 9900
13 , "PT01" , "トースター" , "2022-03-13" , 1980 , 2 , 3960
14 , "PT01" , "トースター" , "2022-03-14" , 1980 , 3 , 5940
15 , "PT01" , "トースター" , "2022-03-15" , 1980 , 2 , 3960
16 , "PT01" , "トースター" , "2022-03-16" , 1980 , 5 , 9900
17 , "PT01" , "トースター" , "2022-03-17" , 1980 , 2 , 3960
18 , "PT01" , "トースター" , "2022-03-18" , 1980 , 1 , 1980
19 , "PT01" , "トースター" , "2022-03-19" , 1980 , 3 , 5940
20 , "PT01" , "トースター" , "2022-03-20" , 1980 , 1 , 1980
21 , "PT01" , "トースター" , "2022-03-21" , 1980 , 2 , 3960
22 , "PT01" , "トースター" , "2022-03-22" , 1980 , 2 , 3960
23 , "PT01" , "トースター" , "2022-03-23" , 1980 , 3 , 5940
24 , "PT01" , "トースター" , "2022-03-24" , 1980 , 3 , 5940
25 , "PT01" , "トースター" , "2022-03-25" , 1980 , 1 , 1980
26 , "PT01" , "トースター" , "2022-03-26" , 1980 , 5 , 9900
27 , "PT01" , "トースター" , "2022-03-27" , 1980 , 5 , 9900
28 , "PT01" , "トースター" , "2022-03-28" , 1980 , 1 , 1980
29 , "PT01" , "トースター" , "2022-03-29" , 1980 , 4 , 7920
30 , "PT01" , "トースター" , "2022-03-30" , 1980 , 4 , 7920
31 , "PT01" , "トースター" , "2022-03-31" , 1980 , 3 , 5940
32 , "PE0123" , "電子レンジ" , "2022-03-01" , 21280 , 2 , 42560
33 , "PE0123" , "電子レンジ" , "2022-03-02" , 21280 , 1 , 21280
34 , "PE0123" , "電子レンジ" , "2022-03-03" , 21280 , 2 , 42560
35 , "PE0123" , "電子レンジ" , "2022-03-04" , 21280 , 2 , 42560
36 , "PE0123" , "電子レンジ" , "2022-03-05" , 21280 , 2 , 42560
37 , "PE0123" , "電子レンジ" , "2022-03-06" , 21280 , 2 , 42560
38 , "PE0123" , "電子レンジ" , "2022-03-07" , 21280 , 2 , 42560
39 , "PE0123" , "電子レンジ" , "2022-03-08" , 21280 , 2 , 42560
40 , "PE0123" , "電子レンジ" , "2022-03-09" , 21280 , 1 , 21280
41 , "PE0123" , "電子レンジ" , "2022-03-10" , 21280 , 2 , 42560
42 , "PE0123" , "電子レンジ" , "2022-03-11" , 21280 , 2 , 42560
43 , "PE0123" , "電子レンジ" , "2022-03-12" , 21280 , 3 , 63840
44 , "PE0123" , "電子レンジ" , "2022-03-13" , 21280 , 2 , 42560
45 , "PE0123" , "電子レンジ" , "2022-03-14" , 21280 , 1 , 21280
46 , "PE0123" , "電子レンジ" , "2022-03-15" , 21280 , 3 , 63840
47 , "PE0123" , "電子レンジ" , "2022-03-16" , 21280 , 3 , 63840
48 , "PE0123" , "電子レンジ" , "2022-03-17" , 21280 , 2 , 42560
49 , "PE0123" , "電子レンジ" , "2022-03-18" , 21280 , 3 , 63840
50 , "PE0123" , "電子レンジ" , "2022-03-19" , 21280 , 3 , 63840
51 , "PE0123" , "電子レンジ" , "2022-03-20" , 21280 , 3 , 63840
52 , "PE0123" , "電子レンジ" , "2022-03-21" , 21280 , 1 , 21280
53 , "PE0123" , "電子レンジ" , "2022-03-22" , 21280 , 2 , 42560
54 , "PE0123" , "電子レンジ" , "2022-03-23" , 21280 , 1 , 21280
55 , "PE0123" , "電子レンジ" , "2022-03-24" , 21280 , 2 , 42560
56 , "PE0123" , "電子レンジ" , "2022-03-25" , 21280 , 1 , 21280
57 , "PE0123" , "電子レンジ" , "2022-03-26" , 21280 , 2 , 42560
58 , "PE0123" , "電子レンジ" , "2022-03-27" , 21280 , 2 , 42560
59 , "PE0123" , "電子レンジ" , "2022-03-28" , 21280 , 3 , 63840
60 , "PE0123" , "電子レンジ" , "2022-03-29" , 21280 , 3 , 63840
61 , "PE0123" , "電子レンジ" , "2022-03-30" , 21280 , 2 , 42560
62 , "PE0123" , "電子レンジ" , "2022-03-31" , 21280 , 1 , 21280
63 , "PLTV523" , "テレビ" , "2022-03-01" , 81280 , 5 , 406400
64 , "PLTV523" , "テレビ" , "2022-03-02" , 81280 , 1 , 81280
65 , "PLTV523" , "テレビ" , "2022-03-03" , 81280 , 3 , 243840
66 , "PLTV523" , "テレビ" , "2022-03-04" , 81280 , 4 , 325120
67 , "PLTV523" , "テレビ" , "2022-03-05" , 81280 , 5 , 406400
68 , "PLTV523" , "テレビ" , "2022-03-06" , 81280 , 2 , 162560
69 , "PLTV523" , "テレビ" , "2022-03-07" , 81280 , 5 , 406400
70 , "PLTV523" , "テレビ" , "2022-03-08" , 81280 , 1 , 81280
71 , "PLTV523" , "テレビ" , "2022-03-09" , 81280 , 1 , 81280
72 , "PLTV523" , "テレビ" , "2022-03-10" , 81280 , 2 , 162560
73 , "PLTV523" , "テレビ" , "2022-03-11" , 81280 , 1 , 81280
74 , "PLTV523" , "テレビ" , "2022-03-12" , 81280 , 5 , 406400
75 , "PLTV523" , "テレビ" , "2022-03-13" , 81280 , 5 , 406400
76 , "PLTV523" , "テレビ" , "2022-03-14" , 81280 , 1 , 81280
77 , "PLTV523" , "テレビ" , "2022-03-15" , 81280 , 1 , 81280
78 , "PLTV523" , "テレビ" , "2022-03-16" , 81280 , 1 , 81280
79 , "PLTV523" , "テレビ" , "2022-03-17" , 81280 , 2 , 162560
80 , "PLTV523" , "テレビ" , "2022-03-18" , 81280 , 5 , 406400
81 , "PLTV523" , "テレビ" , "2022-03-19" , 81280 , 3 , 243840
82 , "PLTV523" , "テレビ" , "2022-03-20" , 81280 , 1 , 81280
83 , "PLTV523" , "テレビ" , "2022-03-21" , 81280 , 4 , 325120
84 , "PLTV523" , "テレビ" , "2022-03-22" , 81280 , 4 , 325120
85 , "PLTV523" , "テレビ" , "2022-03-23" , 81280 , 2 , 162560
86 , "PLTV523" , "テレビ" , "2022-03-24" , 81280 , 5 , 406400
87 , "PLTV523" , "テレビ" , "2022-03-25" , 81280 , 1 , 81280
88 , "PLTV523" , "テレビ" , "2022-03-26" , 81280 , 2 , 162560
89 , "PLTV523" , "テレビ" , "2022-03-27" , 81280 , 4 , 325120
90 , "PLTV523" , "テレビ" , "2022-03-28" , 81280 , 4 , 325120
91 , "PLTV523" , "テレビ" , "2022-03-29" , 81280 , 5 , 406400
92 , "PLTV523" , "テレビ" , "2022-03-30" , 81280 , 2 , 162560
93 , "PLTV523" , "テレビ" , "2022-03-31" , 81280 , 2 , 162560
```
## 出力アイテムの設定
ここでは、クエリ結果をデザインします。
[選択]領域から**売上日**と**売上額**を出力アイテムとして設定します。このクエリは**概要レポート**として定義されているので、**売上額**には**Sum**（合計）オプションが自動設定されます。
ここまでは、通常のクエリ設定です。プレビュー機能で結果を見ると、このような結果が表示されます。
![2022-04-05 Figure 04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/c845482b-44b1-91a1-e41d-2620b300e13d.png)
では**動的出力オプション**を使用して、日々の製品名別の売上額を表示してみます。
クエリ定義に戻り、選択領域の**製品名**をフィルター領域にドラッグします。フィルター値に```<ALL>```を設定（全製品を取得）します。このフィルターで絞り込まれる製品名別に売上額が表示されます。
今回は```<ALL>```としたので全ての製品が対象です。
![2022-04-05 Figure 05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/7f2be522-db01-f518-6100-974af11b9a61.png)
出力領域の**売上額**をダブルクリックして、出力オプションダイアログを開きます。
![2022-04-05 Figure 06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a10e9bba-62ed-29b8-9fdd-f2afe4e53a1f.png)
[関数]タブ上の、**この出力領域にフィルターを適用**オプションの**製品名**にチェックを入れます。こうすることで売上額に対して、フィルターである製品名が適用されるようになります。
次に、売上日に対して並列で製品別の売上額を表示したいので、チェックを入れた製品名を選択した状態で、[**動的出力として設定**]ボタンをクリックします。
![2022-04-05 Figure 07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/47aa7442-5682-aa3b-84bf-a44303378ea0.png)
[OK]ボタンを押して、設定を保存します。プレビューで動作確認してみます。このような結果となります。
動的出力オプションにより、一日の売上額の製品別内訳が把握できるようになります。
![2022-04-05 Figure 08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/c0c7f46d-ebb3-29f1-4c2c-cea62e0be4d1.png)
付け足しとして、一日の売上総額も同列最右列に表示してみましょう。これには**サブクエリ**を使用して総額を取得します。
基本的には各行の売上日をサブクエリのフィルターとして渡し、売上合計を返すように設定します。
![2022-04-05 Figure 09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/08982c8f-3255-a36c-f7bd-1956ae6d9775.png)
定義したサブクエリの説明を**売上額/日**とします。
![2022-04-05 Figure 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/4650bc4a-3b2c-c3cf-882f-cc7439940ec9.png)
動作確認するとこのようになります。
![2022-04-05 Figure 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b360e331-7128-3ced-2d0e-2f2a2b56b84c.png)
:postbox:[Sharperlight](https://sharperlight.jp/)