【一般】東京都オープンデータソースAPIを活用してみる（レポート編）

**東京都オープンデータソースAPIを活用してみる**と題し、数回に分けてオープンデータをローカルデータベースに保存するところまでを記事にしてきました。
今回は、`おまけ`としてデータベースに貯まったデータを元にレポートを作成するところを記事にしてみようと思います。
## Webレポート ##
早速[Sharperlight](https://sharperlight.jp/)アプリケーションメニューから**パブリッシャー**を起動します。
`新規`ボタンで新しいレポートの作成を開始します。
### 一般タブ ###
ここでは、コード、グループ、タイトル、レポートのタイトル等を記入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b633d9c0-d2c0-c9eb-a8e1-5640ab26624d.png)
### クエリを編集 ###
パブリッシャーで作成するWebレポート（公開クエリともいう）には、1レポート1クエリという原則があり、必ずクエリを作成しなくてはいけません。よって`クエリを編集`ボタンで**クエリビルダ**を起動しクエリのデザインを行います。
#### フィルター ####
`製品`フィルターには、このシリーズで作成したデータモデルを指定します。そして`テーブル`には、取得したデータが保存されているテーブルをこのように指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d3363b6f-ea56-5b80-c390-3b39245f9d17.png)
#### 選択領域 ####
テーブルが指定されるとSharperlightエンジンは、そのテーブルに付随するフィールド一覧を指定されているデータモデルから、選択領域に展開表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/3e3f58b1-8c4b-80d0-1fbb-198e58715158.png)
#### 出力領域 ####
ここにはどのフィールドのデータをクエリ結果として抽出するかを指定します。
今回は、棒グラフ用のデータを準備しようと考えているので、ラベルになるようなフィールドとそれに関する集計値を準備します。
年代別に患者数を集計してみましょうか。
`選択`領域からドラッグ＆ドロップ、あるいはダブルクリックで**年代**フィールドを`出力`領域に設定します。
次に年代別患者数は、**Row_ID**フィールドをカウントするといったイメージで定義します。
**Row_ID**フィールドを`出力`領域に設定して、右クリックメニューから**説明の変更**を選び、**患者数**とタイプします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2a12c2f3-b895-bf20-3057-9ee2175e9d7a.png)
ダブルクリックでオプションダイアログを開きます。`関数`タブの集計属性で**カウント**を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/72766a2c-dc4f-677c-56a0-ad88ad94d55c.png)
ここで一度クエリ結果を確認してみます。`プレビュー`ボタンで行います。
集計は上手く出来ているようですが、**年代**フィールドの値が文字列なので並び替えが少し変ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/3d862042-9cba-e83e-ee3b-3f837a512271.png)
並び替えが行えるように拡張表現を利用して数値に変換します。
`出力`領域の右クリックメニューから**拡張表現を追加**を選択します。
`データ型`を**Integer**に設定。以下の構文を`拡張式関数の構文`に記述します。
```
Switch( {%年代}
,"10歳未満",9
,"10代",10
,"20代",20
,"30代",30
,"40代",40
,"50代",50
,"60代",60
,"70代",70
,"80代",80
,"90代",90
,"100歳以上", 100
,999)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/114f4dea-3eef-672d-4778-eb28c358ecba.png)
`一般`タブに移動して、`出力参照名`と`説明`を**Sorting**とします。また`視認性`オプションを**非表示**とします。これはこの拡張表現フィールドが、並び替えを行うためだけに作成されたので、その値を表示する必要がないためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/973a67a1-6c3c-e2a8-e4b4-293dff1a1443.png)
最後に`並び替えとグループ化`タブに移動して、当拡張表現フィールドを`並び替えあり`領域に設定します。`OK`ボタンで確定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0e115ddc-db59-d646-ecf7-84e166e87ecd.png)
最終的に出力領域の設定はこのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/a89aa98a-85e5-5bc1-61e2-c88c63a7e668.png)
ではプレビューしてみましょう。
どうですか？並び替えが正しく行えていますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/369aa601-1f44-c0ba-5160-fba85f0b84ab.png)
`OK`ボタンでクエリを保存します。
### グラフタブ ###
`グラフ`タブでは４箇所のみを設定し、その他の属性は既定値のままとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ced0613f-f84c-71f5-a6c7-43dbd18fb4c4.png)
### オプションタブ ###
`オプション`タブでは`既定の出力形式`を**Chart**に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/203418a5-0e91-9f7e-2179-0bfb31d78101.png)
このレポートにこのようなURLでアクセスした場合、テーブルではなくグラフが表示されるようになります。
```
http://{サーバー名}/mdService1Rest/Report/?query=QiitaSample.TKYCov19Age
```
`既定の出力形式`を**Table**に設定した状態でグラフとして表示したい場合は、このURLを使用することができます。URLの最語尾に<font color="red">&rtype=chart</font>を付与します。
```
http://{サーバー名}/mdService1Rest/Report/?query=QiitaSample.TKYCov19Age&rtype=chart
```
### 検証 ###
http://{サーバー名}/mdService1Rest/Report/?query=QiitaSample.TKYCov19Ageをブラウザからアクセスしてみます。もちろんSharperlightサービスが起動されている必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/c7ae86c5-0595-08b3-7557-eb25d0298486.png)
更にいくつかレポートを作成して、`配置`オプションを使用してこのようなレポートが作成できました。あくまでもサンプルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5054a0e5-409b-77b6-0d8b-582e0a35cd19.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/25484c9f-ca98-ab0a-8a27-b103b9c019bf.png)

## Exceレポート ##
次に、Sharperlight Excelアドインを使用してExcelでレポートを作成します。
Excelを起動します。SharperlightがインストールされるとExcelアドインも設定されています。
されていない場合は、[Sharperlight](https://sharperlight.jp/)アプリケーションメニューから**Excelアドインをインストール**を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/c6a81906-7b41-9f50-dfab-c51c856b5ecb.png)
新しいワークシートを開きます。Sharperlightリボンを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/25a6a83d-7d79-a008-b7ce-2f885392609a.png)
先ほどのWebレポート用に作成してクエリを再利用します。
セル**B5**を選択し、リボン上の`テーブル`アイコンをクリックします。お馴染みの**クエリビルダ**が起動します。
フィルター領域の右クリックメニューより**クエリのインポート -> パブリッシャー**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/65a2021e-d3ff-ea75-3f78-3a58ebc5db2c.png)
**パブリッシャー**で作成されたWebレポートの一覧が`索引`ダイアログに表示されます。`値`テキストボックスに検索ワード**QiitaSample%**（レポートのユニークコードが"QiitaSample"で始まるレポートを検索します)を入力し、`更新`ボタンを押します。
レポートが絞り込まれるので、目的のレポートを探し出してダブルクリックで選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0b5c3e84-6c3e-e15f-3d20-c36754683eab.png)
選択したレポートに定義されているクエリが作業中の**クエリビルダ**に転送されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/fb8035f1-c95a-27e5-7e31-eceaa5537b36.png)
`OK`ボタンでクエリを確定、実行します。クエリ名の入力を促されるので、クエリ名を入力し`OK`ボタンで先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f17e13a2-6265-56b7-2130-b766511ac973.png)
Excelワークシート上にテーブルが表示されます。最初に選択したセル**B5**に**Sharperlightテーブル式**が作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/748f241f-8883-e6fa-5864-67546f81fd20.png)
同じようにしていくつかテーブルを作成してみます。後はExcelのチャート機能を利用してチャートを作成したりします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6e6361ca-2956-0dc2-9baa-2685bb0d672e.png)

では、失礼します。