Watson StudioのDashboardでデータをさっくり可視化

# Dashboard の特長
IBM CloudのWatson Studioで提供されているDashboardは、ちょっとデータを可視化して触りたい、という場合に便利です。
- GUIで簡単にグラフや表を作成できる
- 作成した結果をURLで共有できる
- 特定のデータを選択すると、自動的にフィルター・再描画される

特に3点目の「グラフやリストで気になる値をクリックすると、そのデータだけに絞り込んでくれる」という機能がなかなか良いと思います。
たとえば「日別の売り上げを見るとこの日が多いけど、何の商品が売れたんだろう？」と該当日付をポチっとすると、その日のデータでグラフを再集計してくれるため、特定断面でのパターンや傾向を見つけるのに役立ちます。

Dashboard機能はあまり広く知られていないようなので、この記事で簡単にご紹介します。

# Dashboard画面例
まずはWatson StudioのDashboard画面例をご紹介します。
![Filter.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/89ac21bc-177c-15d4-6c85-7bc0730ca126.gif)

この例では、どのグラフやリスト(ウィジェット)も、同じデータソースから作成しています。
この状態で、気になる値をクリックすると、他のウィジェットにもその値が連動し、自動的に絞り込みをしてくれます。
画像の例では、「2018年」のデータに絞った後で、さらに「東京都」「平成30年」と条件を重ねています。

もちろん各種表計算ソフトなどでも同じようなグラフを書くことはできますが、直感的に見たいグラフを並べた状態で、気になる箇所をクリックしていくだけ、というお手軽さが嬉しい点かなと思います。

なお、絞り込みを解除するには、該当の値をもう一度クリックするか、グラフ右肩のフィルターアイコン等から個別に解除することができます。
また、「このだけは他のウィジェットと連動させたくないなあ」という場合には、ウィジェット間の連携を解除するなどのカスタマイズも可能です。

内部的にはCognos AnalyticsのDashboard機能を使用しているので、Cognos Analyticsを使用したことがある方なら、見覚えがある/馴染みやすいと感じるかも知れません。

# (復習) そもそもWatson Studioって？
このQiitaを見て下さっている人がWatson Studioを知らない・・なんてことは無いとも思いますが、念のため。
Watson Studioは、IBMがクラウドで提供されているAI統合開発環境です。
PythonとかRが使えるやつだよね？機械学習モデルの作成とか深層学習のプラットフォームでしょ？ etc... もちろん正しいです。
Watson Studioには、初心者向けから上級者向けまで、様々なレベルのツールが盛りだくさんで用意されています。
今回は、「まずは手持ちのデータで分析を始めたい」くらいのふんわりした用途で、Lite(無償)アカウントの範囲内で便利にデータを可視化してみよう、というのが主旨です。
有効なメールアドレスをIBM IDに登録すれば、Watson StudioのDashboardを利用し始めることが可能です。

# 前提サービス
* Congos Embedded Dashboard(CDE) 

まずはIBM CloudのCatalogから、「Congos Embedded Dashboard」(CDE) サービスを有効化します。
CDEは Analytics(分析)カテゴリーに含まれています。「cognos」などと入力すれば、サービス名を検索できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/9260bd7b-4d30-cab5-3039-f61a08c0cff3.png)

CDEのLiteプランを選択すると、月間50セッションまで無料で利用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/80917f30-e334-6bc4-0e61-d32ce9def83f.png)

CDEは、API等で任意のアプリケーションから呼び出すことも可能ですが、今回の例では Watson Studioの Dashboard が内部的に使用する形式になります。
Watson StudioにCDEサービスを紐づける手順は、後続2.の箇所で実施します。

## 1. 元データの準備
何はともあれ、分析対象となるデータを用意します。
2019年10月現在、Analytics Dashboardのソースデータとしてサポートされているものは以下です。(※1)
- CSVファイル
- Db2 Warehouse on Cloud, Compose for PostgreSQL, Microsoft SQL Server on Cloud 上のテーブル

お手持ちのCSVをWatson StudioのAssetとしてアップロードするのが一番簡単で確実でしょう。
Watson Studioのプロジェクト画面で、必要に応じ右上の「0100」ボタンを開き、「Drop Files here or browse for files to upload.」と書いてあるエリアにファイルをドラッグ＆ドロップしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/5794f26e-139f-45d1-f6aa-fb4768ce0c9a.png)

なお、Dashboardで使うデータをアップロードする際は、以下の点に留意してください。
・先頭行には、項目名を英文字で記載しておく
・データの中身は日本語でも良いが、文字コードはUTF8にしておく

## 2. Dashboardの作成
Watson Studioのプロジェクトで「Add to Project」ボタンを押下し、「Dashboard」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/87662472-27ec-e081-4216-4f7c6aabb88d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/4ebd58e8-aaca-e30b-f077-edd6bd33b00f.png)

New Dashboad作成用画面が開きます。今回はゼロからDashboardを作成するので、「Blank」タブ内のフィールドに必要な情報を入力します。
好きなDashboard名を「Name」に、任意の説明を「Description」に記入します。
Cognos Dashboard Embedded Serviceでは、先に作成したCDEサービス名をプルダウンから選択してください。
(事前にCDEサービスを作成していない場合は、この時点で作成することもできます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/4f91df24-ddd9-7fe2-e047-e3070787bb58.png)

すると、Dashboardのテンプレート選択画面が表示されます。
作成したいDashboardの形式(グラフの配置場所やタブ数など)が決まっていれば、それに合うテンプレートを選択するのが良いですが、特に決まっていない場合はデフォルトのまま、「Tabbed」かつ「Freeform」の状態で先に進んでください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/7f6eae7d-ccb2-90d4-3466-497b0f3128a5.png)

空のDashboard作成画面が表示されます。
左側ペインの「＋」ボタン(Add a Source)をクリックし、データソースを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/094e3678-f448-6592-7b9f-8ae2c30a6296.png)

データソースの選択画面が開きます。
今回は、手順1でアップロードしたCSVファイル(つまり、Project内のAsset)を選択するので、「Data assets」から該当のCSV名を選択し、「Select」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/4145482e-edd8-8207-66e5-0ca0cc298ddf.png)

自動的にDashboardの画面に戻り、たったいま追加したCSVデータソースが左側ペインに表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/023a804a-6702-eb2d-7b30-2354af81c725.png)
左側ペインで該当データソースを選択していくと、項目名が展開されます。
また、右側ペイン下部の表マークをクリックすると、データのプレビューを確認することも可能ですよ。
![ColumnName.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/987bd250-305f-e561-6d09-b40b493b0448.gif)

## 3. 視覚化の作成
視覚化(Visualization：グラフやクロス集計表などのウィジェット)を作成します。

単純に列名を選択して右ペインへドラッグ＆ドロップするだけでも、データ型に応じたウィジェットが自動作成されます。下記がその例です。
1つ目のウィジェットは、連番(No)列をドロップするだけで、件数サマリーが作成されています。
2つ目のウィジェットでは、都道府県(PREFECTURE)、最寄駅からの距離(MIN_WARK)、平米単価(UNIT_PRICE(s.m.))の3列を選択してドロップすることで、都道府県別に最寄駅からの距離と平米単価がグラフ化されています。
なお、この例ではそれぞれの合計値(Auto(SUM)：デフォルト)が集計されているため、ウィジェットの詳細定義画面から平均値(Average)に修正しています。
![CreateWidget.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/4264aa93-b5f2-1f48-9b1c-7ce521b25744.gif)

作成したいグラフ/表の種類がイメージできている場合は、先に種別を選択し、列を割り当てる方がやりやすいかも知れません。
その場合は、左端のVisualizationsボタン(棒グラフのアイコン)を押して好きな種類を選択し、列をドラッグ＆ドロップしてください。
![CreateWidget2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/e2c7554b-b5e6-55d2-40a5-ceb89f3691fb.gif)

## 4. 作成したダッシュボードの共有
ダッシュボードを他人に共有する場合、Shareボタンで表示されるURLを利用できます。
「Share with anyone who has the link.」をオンにすると、URLを知るすべての人にダッシュボードが公開されます。(もちろん、セキュリティには十分に注意してください)
これを使用すると、Watson Studioを使っていない人に対しても手軽に情報を展開できます。
![ShareLink.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/18b3a9be-5bfb-f080-9331-a73e05474711.gif)

共有相手の人がダッシュボードの定義情報を確認したり、中身を変更したりできるようにする場合には、URLのShareだけでは不足なので、その人をWatson Studioのユーザーとしてプロジェクトに招待してください。

# TIPS
* 各種プロパティの変更

グラフの色を変えたり、集計値と割合を切り替えたり、タイトルをつけたりすることができます。
また、ダッシュボードをダークモードして背景色を黒に設定する、などのカスタマイズも可能です。

プロパティボタンを押下すると右ペインに設定項目が現れます。
Visualization propertiesでは各ウィジェットの設定を、Dashboard propertiesではそのダッシュボードの設定を変更することが可能です。
![Property.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/bc56f3c5-0a18-2944-ad65-e2b960c4de0c.gif)

* 計算列の追加

データの計算結果を新しい列のように扱うこともできます。
たとえば下記は、元データに「2017年第1四半期」のような文字が入っているので、1-4文字目の年にあたる部分だけを抽出し「CONT_YEAR」という名前をつけています。
今回はsubstring()を使用しましたが、シンタックスやその他の共通関数については末尾にリンクを記載します。(※2)

![Calc.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/64d52fad-1e4f-7492-db6f-64d1246d31ca.gif)

計算式はグラフ描画時に評価されるようなので、あまり重い処理には向いていませんが、ちょっとした加工であれば便利に使えると思います。
元データが大きい場合や、集計処理が大量にある場合、同時多数参照するような場合は、描画に時間がかかることがありますのでご注意ください。

なお、データ加工についてはもっと本格的にデータ加工をしたい場合には、Watson Studio の Data Refinaryなどを検討される方が良いかも知れません。

* ウィジェットやタブのコピー

タブやウィジェットをクリックすると、操作ボタンが表示されます。
Duplicate(複製)ボタンを選択すると、タブやウィジェットをコピーできるので、似たようなグラフをたくさん作成したいような場合に利用してください。
また、下記ではあるタブのウィジェットを隣のタブにドラッグ＆ドロップで移動しています。
![CopyGraph.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266889/0db58107-b7b1-9e4a-2787-ed84bac60d56.gif)

まだまだ紹介しきれない機能はたくさんありますが、ダッシュボードに興味を持ったらぜひ触ってみてください。

見栄えの良い定型レポートを作るというよりも、業務の中身を知っている人が、傾向を把握するためにあれこれいじってみる・・といった使い方に向いていると思います。

# 注記
(※1) Analytics dashboard
https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/analytics-dashboard.html#known-limitations-and-unsupported-features

(※2) Cognos Analytics 11.0.x > Cognos Analytics on Cloud > Data Modeling > Using the expression editor > Common Functions
https://www.ibm.com/support/knowledgecenter/SSEP7J_11.0.0/com.ibm.swg.ba.cognos.ca_mdlg.doc/c_cr_rptstd_expr_editor_expression_components.html