OACで分析軸を選択できるビジュアライゼーションを作る

# はじめに
OAC（**Oracle Analytics Cloud**）のワークブックにダッシュボード・フィルタを配置して、選択した値によってビジュアライゼーションの分析軸を変更してみよう、という記事です。
ダッシュボードフィルタ、パラメータ、マイ計算（IndexCol関数）を使います。

# 1. サンプルデータ
こちらのチュートリアルで入手できる、Sample_order_lines.xlsx をデータセットとして登録します。

https://docs.oracle.com/en/cloud/paas/analytics-cloud/tutorial-auto-insights/index.html#before_you_begin

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/05646c3b-9e7a-b6ee-c302-c79fbd8ff1f9.png)

# 2. ワークブックの作成
Sample Order Linesデータセットを使用して、新しいワークブックを作成します。
自動インサイトが起動する場合は、閉じておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/68e9c0dd-9b98-cc03-ae76-efa0cc9246fc.png)

## 2.1パラメータを追加
「パラメータ」に移動して「＋」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/32b198fa-7059-951f-107e-1d62dcb88c73.png)

パラメータ作成のウィンドウが開くので、名前を「分析する属性」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c234b41e-e4c0-109d-9cf5-9ebc610417d9.png)

使用可能な値のタイプを「値」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/85d903f6-6275-815e-23c3-89e038d402a0.png)

「製品カテゴリ」と入力し、「＋」をクリックして値を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/530fc021-c26b-9490-ca2d-6d8026100526.png)

同じ要領で、「顧客セグメント」「配送手段」「優先度」を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/69c7299c-234d-aa50-0695-8ca000f7a55f.png)

初期値を「製品カテゴリ」にして「OK」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/16b71efe-b7ba-ba3d-ef6f-0b8ef3487dba.png)

もう一つパラメータを追加するために「＋」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c8cfaf4c-6553-1aa7-7585-3ba6922bd86a.png)

名前を「分析するメジャー」として、先ほどと同じ要領で値を追加します。
追加する値は次の通り。
- 販売金額
- 販売数量
- 利益
- 顧客数

初期値を「販売金額」にして「OK」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c8eef677-5490-ef9d-e3b0-31b2a2862f64.png)

## 2.2 マイ計算を追加
1. データに移動
1. 「＋」をクリック
1. 「計算の作成」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/13442814-c4e1-56fa-d8e3-fefeb7118953.png)

名前を「属性」にします。
式に
```sql
IndexCol(CASE 
```
と入力してから続けて「@」を入力すると、定義済みのパラメータが一覧されるので「分析する属性」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/79c93ad5-72c3-3159-e9a6-72b983d96285.png)

デフォルト値は「製品カテゴリ」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/ba14655d-644d-ec92-11a9-c35d2d90850a.png)

```sql
IndexCol(CASE @parameter("分析する属性")('製品カテゴリ') WHEN '製品カテゴリ' THEN 0 WHEN '顧客セグメント' THEN 1 WHEN '配送手段' THEN 2 WHEN '優先度' THEN 3 END, 
```
と入力し「Pro」と続けて入力すると、「Pro」で始まる列名が一覧されるので「Product Category」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/97b69545-19fc-7b66-2b20-3093009022ee.png)

同様の手順で式を完成させます。
|パラメータ「分析する属性」の値|検索される列|
|:-|:-:|
|製品カテゴリ（デフォルト）|Product Category|
|顧客セグメント|Customer Segment|
|配送手段|Ship Mode|
|優先度|Order Priority|

こういう式になります。
```txt:計算式「分析する属性」の論理SQL
IndexCol(CASE @parameter(分析する属性)('製品カテゴリ') WHEN '製品カテゴリ' THEN 0 WHEN '顧客セグメント' THEN 1 WHEN '配送手段' THEN 2 WHEN '優先度' THEN 3 END, Product Category, Customer Segment, Ship Mode, Order Priority)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/c6f14de6-d256-f7ac-9140-d0e95f67871b.png)

同様の手順で、次のようになるように新しい式「メジャー」を追加します。
|パラメータ「分析するメジャー」の値|検索される列|
|:-|:-:|
|販売金額（デフォルト）|Sales|
|販売数量|Quantity Ordered|
|利益|Profit|
|顧客数|# of Customers|

```txt:計算式「分析するメジャー」の論理SQL
IndexCol(CASE @parameter(分析するメジャー)('販売金額') WHEN '販売金額' THEN 0 WHEN '販売数量' THEN 1 WHEN '利益' THEN 2 WHEN '顧客数' THEN 3 END, Sales, Quantity Ordered, Profit, # of Customers)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/66745856-c449-fba8-e6de-b6b8f9e0c950.png)

## 2.3 ダッシュボードフィルタの配置
「ビジュアライゼーション」タブに移動して、「ダッシュボード・フィルタ」をキャンバスにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/6ae35a9e-48df-755b-5386-8f9cbcf45783.png)

「パラメータ」タブから「分析する属性」を「ダッシュボード・フィルタ」にドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d41d311e-f933-1eb6-af5e-fd096580ca79.png)

同様に、「分析するメジャー」パラメータを「ダッシュボード・フィルタ」にドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/7380f76e-72c1-9914-0f33-bd68ad875952.png)

2つのパラメータがリスト・ボックスとして表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/cc64cb33-ad8a-f766-e706-64c1662594bf.png)

ダッシュボード・フィルタの「プロパティ」の「一般」タブで「向き」を「縦」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1614cf7b-3030-b0c8-4ec3-3613cb99d61a.png)

続いて、「フィルタ・コントロール」タブでフィルタ・タイプを「インライン・リスト」に変更します。
「分析する属性」と「分析するメジャー」の両方です。
これで、どちらのコントールもラジオ・ボタンになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/86aa5ba5-f505-53f6-22eb-629e631a3631.png)

:::note
パラメータの定義で「複数値の選択」をオフにしているので、ラジオ・ボタンになりました。
複数の選択を許可していた場合は、チェック・ボックスになります。
:::

## 2.4 棒ビジュアライゼーションを追加
最初に作成した棒グラフのビジュアライゼーションを編集します。
マイ計算にある「属性」と「メジャー」を同時に選択してキャンバスにドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b643b371-8d33-4082-d362-37ec1ed4616f.png)

棒ビジュアライゼーションが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/13513c5b-7875-bb99-1890-b261ca2cc941.png)

このビジュアライゼーションのプロパティを変更します。
「一般」タブのタイトルを「カスタム」に変更し
```txt:カスタムしたタイトルの例
@parameter("分析するメジャー")('販売金額') / @parameter("分析する属性")('製品カテゴリ')
```
と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/112135e4-0ce5-3ad8-fbe8-c6a814059636.png)

「軸」タブに移動してラベル軸と値軸のタイトルをカスタムに変更します。
それぞれ
```txt:ラベル軸の例
@parameter("分析する属性")('製品カテゴリ')
```
```txt:値軸の例
@parameter("分析するメジャー")('販売金額')
```
と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/dc1d2371-481b-3103-2ea0-5a612eec4b5a.png)

これで、ビジュアライゼーションのタイトルと軸が選択したパラメータと連動して動的に変更されるようになります。

# 3. 動作確認
ビジュアライゼーションのスタイルを編集してビューモードで開いてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/bf942229-6f0e-c7f8-185d-b69ace04cdb3.png)

左のダッシュボード・フィルタのラジオ・ボタンを変更すると、それに応じて右の棒ビジュアライゼーションが変更され、タイトル等も動的に変更されることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/99723669-6d10-093f-57ad-f64cee9fb865.png)

# 参考情報
- [Oracle Analytics Cloud：組み込みのIndexCol関数で条件分岐する](https://qiita.com/tyo38/items/cbeecd66b8faa9e701ab)
- [OACのビジュアライゼーションのタイトルを動的に変更する](https://qiita.com/tyo38/items/c9066c0dbee5bc5e86e8)
- [公式ドキュメント](https://docs.oracle.com/en/cloud/paas/analytics-cloud/acubi/indexcol-function.html)