Cognos Analytics から RestAPI で外部システムと接続

## はじめに

お仕事で IBM Cognos Analytics(以下 Cognos) を使用したので、操作方法をメモする。

### Cognos とは

https://www.ibm.com/products/cognos-analytics

いわゆる BI ツール（企業が持つデータを分析・可視化して、経営や業務に役立てるもの）である。
BI ツールは世にたくさんあり、Tableau や Looker などもイケてるツールとして人気が高いようだ。

Cognos には 30 日間の無料プランがあるので、興味を持たれた方や BI ツールを軽く触ってみたいな、と思った方はぜひ試したいただければと思う。

## やったこと

「Cognos コンソール上で外部システムの API を叩き、フェッチしてきたデータを Cognos 上で表示する」ための設定を行った、というオーソドックスなことをやってみた。

## 環境・前提

- Cognos バージョン: v11.2.4
- 画面スクショは英語表記設定にしている
- 接続先となる外部 API には [PokeAPI](https://pokeapi.co/) を利用した


:::note info
バージョンが古めのため、画面や操作が少し現況と異なる可能性はあるため、適宜読み替えていただきたい。
:::


## 設定

Cognos のトップページにやってきた前提で話を進める。

### Data server connection

- 左メニューで、**Manage** > **Data server connections** を選択する

    ![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/afd4d374-3c5a-35ba-8548-6829ae2fa905.png)

  　　　　　　　　　↓

    ![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/93b50f62-1ea5-9379-f689-15914dd17039.png)


- **Add data server** をクリックする

    ![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/ebfb6e8f-be60-605a-778d-d6f30d7e95ee.png)

- **Name** に入力し、**Connection type** から `Progress DataDirect Autonomous REST` を選択する

  ![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/5fd77ba6-2600-cef7-60a2-24c56aee86bb.png)

<br>

- **Next** をクリックする
- **JDBC URL** に `jdbc:ibmcognos:autorest:Sample='endpoint_URL'` を入力する。`endpoint_URL` には Rest API のエンドポイントを入力する
	- e.g. `jdbc:ibmcognos:autorest:Sample='https://pokeapi.co/api/v2/pokemon?limit=3'`

       ![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/48e00672-8ae8-d382-2217-9c49663eeb61.png)


#### Response example:

このレスポンスの値たち(`results`)が、後にダッシュボードで表示されることになる。

```json
{
"count": 1292,
"next": "https://pokeapi.co/api/v2/pokemon?offset=3&limit=3",
"previous": null,
"results": [
	{
		"name": "bulbasaur",
		"url": "https://pokeapi.co/api/v2/pokemon/1/"
	},
	{
		"name": "ivysaur",
		"url": "https://pokeapi.co/api/v2/pokemon/2/"
	},
	{
		"name": "venusaur",
		"url": "https://pokeapi.co/api/v2/pokemon/3/"
	}
]
}
```

- **configuration** に `jdbc:ibmcognos:autorest:Config="path_to_local_configuration_file";ServerName=endpoint_URL` を入力する。`path_to_local_configuration_file` は config file へのパスを指定する。詳細は [こちら](https://www.ibm.com/docs/en/SSEP7J_11.1.0/com.ibm.swg.ba.cognos.ag_manage.doc/autorestjdbcug.pdf#_OPENTOPIC_TOC_PROCESSING_d97e6283) を参照
- **Test connection** をクリックする
	- 「**Test connection successful**」の通知が表示されることを確認する。

        ![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/26070217-fda0-395c-5723-2206803130ad.png)


- **OK** をクリックする

### Data fetch based on data connection configuration

#### Metadata

- **Data server connections** 画面で、先ほど作成した data server connection を選択する
- 選択した data server connection に対して、**ケバブメニュー**アイコン <img width="24" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/2cd39882-68b8-a997-bc44-658190c42460.png> をクリックし、表示されるメニューから **Assets** を選択する



:::note info
ケバブメニューとは
ドットが縦に3つ並んだアイコンをこのように言うらしい。英語では 'three dots' などというとか。
ちなみに、ドットが横に３つ並んだアイコンは「ミートボールメニュー」
:::


  ![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/39a487b0-5a7e-42cd-1705-2ee223464118.png)


- `AUTOREST` という Asset のケバブメニューアイコンをクリックし、表示されるメニューから **Load metadata** を選択する


  ![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/73b13a0c-e0d1-0c35-d3c2-7d610e67e7ab.png)


- **Status** が `✅ Loaded` になることを確認する。

#### Data module

- 画面左のメニューから **New** > **Data module** を選択する
- **Data servers and schemas** アイコンを選択する
- 先ほど設定した data connection を選択する
    - `AUTOREST` が表示される
- `AUTOREST` > **OK** の順にクリックする
- **Select tables** > **Next** の順にクリックする

  ![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/0c55e342-369e-f5e6-4d36-384873ab6fa6.png)

- 全てのチェックボックスにチェックをつけ、**OK** をクリックする
- 左上の **Save** をクリックする
  - **Name** を入力し、モジュールの保存先を選択して **Save** をクリックする

### View

#### Content - dashboard

- In the left menu, go to **Content**.
- 画面左メニューで、**Content** に移動する

   <img width="240" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/226dcede-422e-fb67-3c9d-44f559c8aab3.png">

- 先ほど作成した、data module panel を選択し、**Create** をクリックする。そして、**Create dashboard** を選択する

  ![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/5e7b7ade-76d3-c080-25e9-5178ca4bcd35.png)


- 表示されるテンプレートから一つ選択し、**Create** をクリックする
- ツリー構造の **Results** を展開し、**Position, Name, Url** を選択し、それらを右側のフィールドにドラッグ&ドロップする
    - API の[レスポンスの例](#response-example)で示した結果が表示されているのがわかる

  ![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/671630/27bb2843-2593-cfa9-861d-e4a824bce30e.png)

## 終わりに

以上　IBM Cognos Analytics 上で 外部システムとの連携に Rest API を使用する最小限の方法を紹介した。
ビジネス分析のための動的なデータの取得など、（どこまで可能か把握はしていないが）機会があれば調べてみようと思う。